summaryrefslogtreecommitdiff
path: root/tests/examples/ghc86/T10638.hs
diff options
context:
space:
mode:
authorAlanZimmerman <>2018-07-11 21:23:00 (GMT)
committerhdiff <hdiff@hdiff.luite.com>2018-07-11 21:23:00 (GMT)
commitacc46b7da4e695bf357c5fb5f311382686c1d105 (patch)
treebc910d39de1e7435ede8d8fbb6b8c28ac36f01c3 /tests/examples/ghc86/T10638.hs
parentb6934f22d6668ed1ee60bca7a5382e4288426984 (diff)
version 0.5.7.00.5.7.0
Diffstat (limited to 'tests/examples/ghc86/T10638.hs')
-rw-r--r--tests/examples/ghc86/T10638.hs33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/examples/ghc86/T10638.hs b/tests/examples/ghc86/T10638.hs
new file mode 100644
index 0000000..62af44e
--- /dev/null
+++ b/tests/examples/ghc86/T10638.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE GHCForeignImportPrim, UnliftedFFITypes, QuasiQuotes, MagicHash #-}
+{-# LANGUAGE TemplateHaskell #-}
+
+import Language.Haskell.TH
+import Language.Haskell.TH.Syntax
+
+import GHC.Exts
+
+{-
+ the prim and javascript calling conventions do not support
+ headers and the static keyword.
+-}
+
+-- check that quasiquoting roundtrips successfully and that the declaration
+-- does not include the static keyword
+test1 :: String
+test1 = $(do (ds@[ForeignD (ImportF _ _ p _ _)]) <-
+ [d| foreign import prim "test1" cmm_test1 :: Int# -> Int# |]
+ addTopDecls ds
+ case p of
+ "test1" -> return (LitE . stringL $ p)
+ _ -> error $ "unexpected value: " ++ show p
+ )
+
+-- check that constructed prim imports with the static keyword are rejected
+test2 :: String
+test2 = $(do t <- [t| Int# -> Int# |]
+ cmm_test2 <- newName "cmm_test2"
+ addTopDecls
+ [ForeignD (ImportF Prim Safe "static test2" cmm_test2 t)]
+ [| test1 |]
+ )
+