Fix tests due to issue #7021
authorYoEight <yo.eight@gmail.com>
Sat, 11 Jan 2014 12:47:24 +0000 (13:47 +0100)
committerRichard Eisenberg <eir@cis.upenn.edu>
Sun, 9 Feb 2014 17:57:30 +0000 (12:57 -0500)
Signed-off-by: Richard Eisenberg <eir@cis.upenn.edu>
testsuite/tests/th/T7021.hs [new file with mode: 0644]
testsuite/tests/th/T7021a.hs [new file with mode: 0644]
testsuite/tests/th/TH_genExLib.hs

diff --git a/testsuite/tests/th/T7021.hs b/testsuite/tests/th/T7021.hs
new file mode 100644 (file)
index 0000000..31e1843
--- /dev/null
@@ -0,0 +1,7 @@
+{-# LANGUAGE TemplateHaskell #-}
+module T7021 where
+
+import T7021a
+
+func :: a -> Int
+func = $(test)
diff --git a/testsuite/tests/th/T7021a.hs b/testsuite/tests/th/T7021a.hs
new file mode 100644 (file)
index 0000000..bd19133
--- /dev/null
@@ -0,0 +1,31 @@
+{-# LANGUAGE ConstraintKinds, TemplateHaskell, PolyKinds, TypeFamilies #-}
+
+module T7021a where
+
+import GHC.Prim
+import Language.Haskell.TH
+
+type IOable a = (Show a, Read a)
+type family ALittleSilly :: Constraint
+
+data Proxy a = Proxy
+
+foo :: IOable a => a
+foo = undefined
+
+baz :: a b => Proxy a -> b
+baz = undefined
+
+bar :: ALittleSilly  => a
+bar = undefined
+
+test :: Q Exp
+test = do
+    Just fooName <- lookupValueName "foo"
+    Just bazName <- lookupValueName "baz"
+    Just barName <- lookupValueName "bar"
+    reify fooName
+    reify bazName
+    reify barName
+    [t| (Show a, (Read a, Num a)) => a -> a |]
+    [| \_ -> 0 |]
index 02784ac..d439231 100644 (file)
@@ -11,10 +11,10 @@ genAny decl = do { d <- decl
        }
 
 genAnyClass :: Name -> [Dec] -> Dec
-genAnyClass name decls 
+genAnyClass name decls
   = DataD [] anyName [] [constructor] []
   where
     anyName = mkName ("Any" ++ nameBase name ++ "1111")
-    constructor = ForallC [PlainTV var_a] [ClassP name [VarT var_a]] $
+    constructor = ForallC [PlainTV var_a] [AppT (ConT name) (VarT var_a)] $
                  NormalC anyName [(NotStrict, VarT var_a)]
     var_a = mkName "a"