[project @ 2000-02-25 15:20:33 by simonmar]
authorsimonmar <unknown>
Fri, 25 Feb 2000 15:20:33 +0000 (15:20 +0000)
committersimonmar <unknown>
Fri, 25 Feb 2000 15:20:33 +0000 (15:20 +0000)
Add simple mkWeakPtr/addFinalizer test.

ghc/tests/lib/should_run/Makefile
ghc/tests/lib/should_run/weak001.hs [new file with mode: 0644]

index ae04516..696714a 100644 (file)
@@ -1,5 +1,5 @@
 #-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.17 2000/01/18 13:36:53 simonmar Exp $
+# $Id: Makefile,v 1.18 2000/02/25 15:20:33 simonmar Exp $
 
 TOP = ../..
 include $(TOP)/mk/boilerplate.mk
@@ -7,7 +7,7 @@ include $(TOP)/mk/should_run.mk
 
 SRC_HC_OPTS += -dcore-lint
 
-packedstring001_HC_OPTS = -syslib lang
+npackedstring001_HC_OPTS = -syslib lang
 
 exceptions001_HC_OPTS   = -fglasgow-exts -fno-warn-missing-methods
 stableptr002_HC_OPTS    = -fglasgow-exts
@@ -38,6 +38,8 @@ memo001_RUNTEST_OPTS    = +RTS -A10k -G1
 memo002_HC_OPTS                = -syslib lang
 memo002_RUNTEST_OPTS   = 20
 
+weak001_HC_OPTS                = -fglasgow-exts
+
 SRC_MKDEPENDHS_OPTS += -syslib lang
 
 include $(TOP)/mk/target.mk
diff --git a/ghc/tests/lib/should_run/weak001.hs b/ghc/tests/lib/should_run/weak001.hs
new file mode 100644 (file)
index 0000000..26f191c
--- /dev/null
@@ -0,0 +1,14 @@
+import Addr
+import Weak
+
+kill:: Addr -> IO ()
+kill a = do
+    w <- mkWeakPtr a Nothing
+    addFinalizer a $
+        deRefWeak w >> return ()
+
+main:: IO ()
+main = sequence_ . take 10000 . repeat $
+    malloc 100 >>= kill >> return ()
+
+foreign import malloc :: Int -> IO Addr