From 2e1efd5786d05b32290a33070221c64326dcb47c Mon Sep 17 00:00:00 2001
From: sof <unknown>
Date: Thu, 8 Jul 1999 13:51:17 +0000
Subject: [PATCH] [project @ 1999-07-08 13:51:17 by sof] foreign export
 regression test

---
 ghc/tests/programs/fexport/For.hs         | 25 +++++++++++++++++++++++
 ghc/tests/programs/fexport/Makefile       | 10 +++++++++
 ghc/tests/programs/fexport/fexport.stdout |  1 +
 ghc/tests/programs/fexport/test.c         | 15 ++++++++++++++
 4 files changed, 51 insertions(+)
 create mode 100644 ghc/tests/programs/fexport/For.hs
 create mode 100644 ghc/tests/programs/fexport/Makefile
 create mode 100644 ghc/tests/programs/fexport/fexport.stdout
 create mode 100644 ghc/tests/programs/fexport/test.c

diff --git a/ghc/tests/programs/fexport/For.hs b/ghc/tests/programs/fexport/For.hs
new file mode 100644
index 000000000000..306c3a9fa4ab
--- /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 000000000000..d1dd14442d71
--- /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 000000000000..a5c196677102
--- /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 000000000000..3712493dcfb5
--- /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();
+}
-- 
GitLab