diff --git a/basis/alien/fortran/fortran-tests.factor b/basis/alien/fortran/fortran-tests.factor index 9b618ef513..1b2ffda4a9 100644 --- a/basis/alien/fortran/fortran-tests.factor +++ b/basis/alien/fortran/fortran-tests.factor @@ -116,7 +116,7 @@ RECORD: FORTRAN_TEST_RECORD [ "int" { } ] [ "logical" fortran-ret-type>c-type ] unit-test -[ "double" { } ] +[ "float" { } ] [ "real" fortran-ret-type>c-type ] unit-test [ "double" { } ] @@ -136,7 +136,7 @@ RECORD: FORTRAN_TEST_RECORD ! fortran-sig>c-sig -[ "double" { "int*" "char*" "float*" "double*" "long" } ] +[ "float" { "int*" "char*" "float*" "double*" "long" } ] [ "real" { "integer" "character*17" "real" "real*8" } fortran-sig>c-sig ] unit-test @@ -213,7 +213,7 @@ unit-test [ { [ drop ] } spread ] } 1 ncleave ! [fortran-invoke] - [ "double" "funpack" "fun_times__" { "float*" } alien-invoke ] + [ "float" "funpack" "fun_times__" { "float*" } alien-invoke ] 1 nkeep ! [fortran-results>] shuffle( reta aa -- reta aa ) diff --git a/basis/alien/fortran/fortran.factor b/basis/alien/fortran/fortran.factor index c7688fbe3a..9327c7b02c 100644 --- a/basis/alien/fortran/fortran.factor +++ b/basis/alien/fortran/fortran.factor @@ -155,7 +155,9 @@ GENERIC: (fortran-ret-type>c-type) ( type -- c-type ) M: f (fortran-ret-type>c-type) drop "void" ; M: fortran-type (fortran-ret-type>c-type) (fortran-type>c-type) ; -M: real-type (fortran-ret-type>c-type) drop "double" ; +! XXX F2C claims to return double for REAL typed functions +! XXX OSX Accelerate.framework uses float +! M: real-type (fortran-ret-type>c-type) drop "double" ; : suffix! ( seq elt -- seq ) over push ; inline : append! ( seq-a seq-b -- seq-a ) over push-all ; inline @@ -374,7 +376,7 @@ MACRO: fortran-invoke ( return library function parameters -- ) :: define-fortran-function ( return library function parameters -- ) function create-in dup reset-generic - return library function parameters return parse-arglist + return library function parameters return [ "void" ] unless* parse-arglist [ \ fortran-invoke 5 [ ] nsequence ] dip define-declared ; : SUBROUTINE: