diff --git a/ghc/tests/programs/fexport/For.hs b/ghc/tests/programs/fexport/For.hs new file mode 100644 index 0000000000000000000000000000000000000000..306c3a9fa4ab45683e5ba0e7534122ad399a3aa6 --- /dev/null +++ b/ghc/tests/programs/fexport/For.hs @@ -0,0 +1,25 @@ +module For where + +{- +import IOExts +import Addr +--y = putChar + +count :: IORef Int -> IO Int +count ref = do + x <- readIORef ref + writeIORef ref (x+1) + return x + +createCounter :: IO Addr +createCounter = do + ref <- newIORef 0 + mkCounter (count ref) + +foreign import "sin" msin :: Double -> IO Double +-} + +foreign export "putChar" putChar :: Char -> IO () + +--foreign export "createCounter" createCounter :: IO Addr +--foreign export dynamic mkCounter :: (IO Int) -> IO Addr diff --git a/ghc/tests/programs/fexport/Makefile b/ghc/tests/programs/fexport/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..d1dd14442d717a48593ed67d21415d94c200ace2 --- /dev/null +++ b/ghc/tests/programs/fexport/Makefile @@ -0,0 +1,10 @@ +TOP = .. +include $(TOP)/mk/boilerplate.mk + +SRC_HC_OPTS += -fglasgow-exts -no-hs-main + +CC = $(HC) + +all :: runtest + +include $(TOP)/mk/target.mk diff --git a/ghc/tests/programs/fexport/fexport.stdout b/ghc/tests/programs/fexport/fexport.stdout new file mode 100644 index 0000000000000000000000000000000000000000..a5c19667710254f835085b99726e523457150e03 --- /dev/null +++ b/ghc/tests/programs/fexport/fexport.stdout @@ -0,0 +1 @@ +Hello, world diff --git a/ghc/tests/programs/fexport/test.c b/ghc/tests/programs/fexport/test.c new file mode 100644 index 0000000000000000000000000000000000000000..3712493dcfb507434fca5dccff7f18ee267e8edb --- /dev/null +++ b/ghc/tests/programs/fexport/test.c @@ -0,0 +1,15 @@ +#include "For_stub.h" + +int +main(int argc, char *argv[]) +{ + int i; + char msg[] = "Hello, world\n"; + + startupHaskell(argc,argv); + + for (i=0; i < sizeof(msg) - 1; i++) { + putChar(msg[i]); + } + shutdownHaskell(); +}