From 040b7deab8dceb8cc98a596c38fdb207c10636f1 Mon Sep 17 00:00:00 2001 From: simonmar <unknown> Date: Tue, 5 Sep 2000 12:38:27 +0000 Subject: [PATCH] [project @ 2000-09-05 12:38:26 by simonmar] Add tests for newtypes in foreign declarations. --- ghc/tests/ccall/should_compile/Makefile | 1 + ghc/tests/ccall/should_compile/cc008.hs | 8 ++++++++ ghc/tests/ccall/should_compile/cc009.hs | 8 ++++++++ ghc/tests/ccall/should_fail/cc005.hs | 11 +++++++++++ ghc/tests/ccall/should_fail/cc005.stderr | 13 +++++++++++++ 5 files changed, 41 insertions(+) create mode 100644 ghc/tests/ccall/should_compile/cc008.hs create mode 100644 ghc/tests/ccall/should_compile/cc009.hs create mode 100644 ghc/tests/ccall/should_fail/cc005.hs create mode 100644 ghc/tests/ccall/should_fail/cc005.stderr diff --git a/ghc/tests/ccall/should_compile/Makefile b/ghc/tests/ccall/should_compile/Makefile index a56869f13de2..c6acaf680ba6 100644 --- a/ghc/tests/ccall/should_compile/Makefile +++ b/ghc/tests/ccall/should_compile/Makefile @@ -7,6 +7,7 @@ SRC_HC_OPTS += -dcore-lint -fglasgow-exts # Note that these tests are still in a state of flux... don't believe errors # they report. In fact, these aren't really very good tests at all... +cc004_HC_OPTS = -fvia-C cc005_HC_OPTS = -fvia-C cc006_HC_OPTS = -fvia-C -fno-prune-tydecls diff --git a/ghc/tests/ccall/should_compile/cc008.hs b/ghc/tests/ccall/should_compile/cc008.hs new file mode 100644 index 000000000000..6e141f49b5a4 --- /dev/null +++ b/ghc/tests/ccall/should_compile/cc008.hs @@ -0,0 +1,8 @@ +-- !!! cc008 -- foreign export dynamic returning newtype of Addr +module Test where + +import Addr + +newtype Ptr a = Ptr Addr + +foreign export dynamic mkFoo :: IO () -> IO (Ptr Int) diff --git a/ghc/tests/ccall/should_compile/cc009.hs b/ghc/tests/ccall/should_compile/cc009.hs new file mode 100644 index 000000000000..959ebea9a2e2 --- /dev/null +++ b/ghc/tests/ccall/should_compile/cc009.hs @@ -0,0 +1,8 @@ +-- !!! cc009 -- foreign label returning newtype of Addr +module Test where + +import Addr + +newtype Ptr a = Ptr Addr + +foreign label foo :: Ptr Int diff --git a/ghc/tests/ccall/should_fail/cc005.hs b/ghc/tests/ccall/should_fail/cc005.hs new file mode 100644 index 000000000000..f04b155aa380 --- /dev/null +++ b/ghc/tests/ccall/should_fail/cc005.hs @@ -0,0 +1,11 @@ +-- !!! illegal types in foreign export delarations + +module ShouldFail where + +import PrelGHC + +foreign export foo :: Int# -> IO () +foo i | i ==# 0# = return () + +foreign export bar :: Int -> Int# +bar _ = 42# diff --git a/ghc/tests/ccall/should_fail/cc005.stderr b/ghc/tests/ccall/should_fail/cc005.stderr new file mode 100644 index 000000000000..7c5c5485c665 --- /dev/null +++ b/ghc/tests/ccall/should_fail/cc005.stderr @@ -0,0 +1,13 @@ + +cc005.hs:7: + Unacceptable argument type in foreign declaration: Int# + When checking declaration: + foreign export _ccall "foo" foo :: Int# -> IO () + +cc005.hs:10: + Unacceptable result type in foreign declaration: Int# + When checking declaration: + foreign export _ccall "bar" bar :: Int -> Int# + +Compilation had errors + -- GitLab