diff options
author | Gert-Jan Bottu <gertjan.bottu@kuleuven.be> | 2020-03-23 09:36:28 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2020-05-21 12:11:31 -0400 |
commit | a9311cd53d33439e8fe79967ba5fb85bcd114fec (patch) | |
tree | 2254ef735a24f9de8d192203a3c6f4871a8b6ae9 /testsuite/tests/th | |
parent | 55f0e783d234af103cf4e1d51cd31c99961c5abe (diff) | |
download | haskell-a9311cd53d33439e8fe79967ba5fb85bcd114fec.tar.gz |
Explicit Specificity
Implementation for Ticket #16393.
Explicit specificity allows users to manually create inferred type variables,
by marking them with braces.
This way, the user determines which variables can be instantiated through
visible type application.
The additional syntax is included in the parser, allowing users to write
braces in type variable binders (type signatures, data constructors etc).
This information is passed along through the renamer and verified in the
type checker.
The AST for type variable binders, data constructors, pattern synonyms,
partial signatures and Template Haskell has been updated to include the
specificity of type variables.
Minor notes:
- Bumps haddock submodule
- Disables pattern match checking in GHC.Iface.Type with GHC 8.8
Diffstat (limited to 'testsuite/tests/th')
-rw-r--r-- | testsuite/tests/th/ClosedFam2TH.hs | 8 | ||||
-rw-r--r-- | testsuite/tests/th/T10267.hs | 4 | ||||
-rw-r--r-- | testsuite/tests/th/T10828.hs | 4 | ||||
-rw-r--r-- | testsuite/tests/th/T10828a.hs | 2 | ||||
-rw-r--r-- | testsuite/tests/th/T10828b.hs | 4 | ||||
-rw-r--r-- | testsuite/tests/th/T10945.hs | 2 | ||||
-rw-r--r-- | testsuite/tests/th/T10945.stderr | 6 | ||||
-rw-r--r-- | testsuite/tests/th/T11345.hs | 2 | ||||
-rw-r--r-- | testsuite/tests/th/T11721_TH.hs | 4 | ||||
-rw-r--r-- | testsuite/tests/th/T12503.hs | 2 | ||||
-rw-r--r-- | testsuite/tests/th/T13098.hs | 2 | ||||
-rw-r--r-- | testsuite/tests/th/T13782.hs | 6 | ||||
-rw-r--r-- | testsuite/tests/th/T13885.hs | 8 | ||||
-rw-r--r-- | testsuite/tests/th/T16976.stderr | 4 | ||||
-rw-r--r-- | testsuite/tests/th/T5358.stderr | 2 | ||||
-rw-r--r-- | testsuite/tests/th/T6018th.hs | 18 | ||||
-rw-r--r-- | testsuite/tests/th/T7667.hs | 4 | ||||
-rw-r--r-- | testsuite/tests/th/T8499.hs | 4 | ||||
-rw-r--r-- | testsuite/tests/th/TH_RichKinds2.hs | 4 | ||||
-rw-r--r-- | testsuite/tests/th/TH_Roles1.hs | 2 | ||||
-rw-r--r-- | testsuite/tests/th/TH_Roles2.hs | 2 | ||||
-rw-r--r-- | testsuite/tests/th/TH_genExLib.hs | 2 | ||||
-rw-r--r-- | testsuite/tests/th/TH_reifyDecl1.stderr | 2 |
23 files changed, 49 insertions, 49 deletions
diff --git a/testsuite/tests/th/ClosedFam2TH.hs b/testsuite/tests/th/ClosedFam2TH.hs index abe2ddca3b..f1e5eee9c0 100644 --- a/testsuite/tests/th/ClosedFam2TH.hs +++ b/testsuite/tests/th/ClosedFam2TH.hs @@ -7,9 +7,9 @@ import Language.Haskell.TH $( return [ ClosedTypeFamilyD (TypeFamilyHead (mkName "Equals") - [ KindedTV (mkName "a") (VarT (mkName "k")) - , KindedTV (mkName "b") (VarT (mkName "k")) ] - ( TyVarSig (KindedTV (mkName "r") (VarT (mkName "k")))) + [ KindedTV (mkName "a") () (VarT (mkName "k")) + , KindedTV (mkName "b") () (VarT (mkName "k")) ] + ( TyVarSig (KindedTV (mkName "r") () (VarT (mkName "k")))) Nothing) [ TySynEqn Nothing (AppT (AppT (ConT (mkName "Equals")) (VarT (mkName "a"))) @@ -29,7 +29,7 @@ b = False $( return [ ClosedTypeFamilyD (TypeFamilyHead (mkName "Foo") - [ KindedTV (mkName "a") (VarT (mkName "k"))] + [ KindedTV (mkName "a") () (VarT (mkName "k"))] (KindSig StarT ) Nothing ) [ TySynEqn Nothing (AppT (AppKindT (ConT (mkName "Foo")) StarT) diff --git a/testsuite/tests/th/T10267.hs b/testsuite/tests/th/T10267.hs index 009d0f035c..45636bf295 100644 --- a/testsuite/tests/th/T10267.hs +++ b/testsuite/tests/th/T10267.hs @@ -13,7 +13,7 @@ import T10267a $(return [ SigD (mkName "k") - (ForallT [PlainTV (mkName "a")] + (ForallT [PlainTV (mkName "a") SpecifiedSpec] [] (AppT (AppT ArrowT (VarT (mkName "a"))) (VarT (mkName "a")))) , FunD (mkName "k") @@ -22,7 +22,7 @@ $(return [ $(return [ SigD (mkName "l") - (ForallT [PlainTV (mkName "a")] + (ForallT [PlainTV (mkName "a") SpecifiedSpec] [] (AppT (AppT ArrowT (VarT (mkName "a"))) (VarT (mkName "a")))) , FunD (mkName "l") diff --git a/testsuite/tests/th/T10828.hs b/testsuite/tests/th/T10828.hs index 94d9b3967b..ffb4525f6a 100644 --- a/testsuite/tests/th/T10828.hs +++ b/testsuite/tests/th/T10828.hs @@ -31,7 +31,7 @@ $( do { decl <- [d| data family D a :: Type -> Type $( return [ DataD [] (mkName "T") - [ PlainTV (mkName "a") ] + [ PlainTV (mkName "a") () ] (Just StarT) [ GadtC [(mkName "MkT")] [ ( Bang NoSourceUnpackedness NoSourceStrictness @@ -43,7 +43,7 @@ $( return ] (AppT (ConT (mkName "T")) (VarT (mkName "a"))) - , ForallC [PlainTV (mkName "a"), PlainTV (mkName "b")] + , ForallC [PlainTV (mkName "a") SpecifiedSpec, PlainTV (mkName "b") SpecifiedSpec] [AppT (AppT EqualityT (VarT $ mkName "a" ) ) (ConT $ mkName "Int") ] $ RecGadtC [(mkName "MkC")] diff --git a/testsuite/tests/th/T10828a.hs b/testsuite/tests/th/T10828a.hs index c3108c3e38..d66547bad7 100644 --- a/testsuite/tests/th/T10828a.hs +++ b/testsuite/tests/th/T10828a.hs @@ -8,7 +8,7 @@ import System.IO -- attempting to place a kind signature on a H98 data type $( return [ DataD [] (mkName "T") - [ PlainTV (mkName "a") ] + [ PlainTV (mkName "a") () ] (Just StarT) [ NormalC (mkName "MkT") [ ( Bang NoSourceUnpackedness NoSourceStrictness diff --git a/testsuite/tests/th/T10828b.hs b/testsuite/tests/th/T10828b.hs index 1db3b0840c..03706d6b7c 100644 --- a/testsuite/tests/th/T10828b.hs +++ b/testsuite/tests/th/T10828b.hs @@ -8,7 +8,7 @@ import System.IO -- attempting to mix GADT and normal constructors $( return [ DataD [] (mkName "T") - [ PlainTV (mkName "a") ] + [ PlainTV (mkName "a") () ] (Just StarT) [ NormalC (mkName "MkT") @@ -19,7 +19,7 @@ $( return , VarT (mkName "a") ) ] - , ForallC [PlainTV (mkName "a")] + , ForallC [PlainTV (mkName "a") SpecifiedSpec] [AppT (AppT EqualityT (VarT $ mkName "a" ) ) (ConT $ mkName "Int") ] $ RecGadtC diff --git a/testsuite/tests/th/T10945.hs b/testsuite/tests/th/T10945.hs index be7a792d61..d9a24663ab 100644 --- a/testsuite/tests/th/T10945.hs +++ b/testsuite/tests/th/T10945.hs @@ -6,7 +6,7 @@ import Language.Haskell.TH $$(return [ SigD (mkName "m") - (ForallT [PlainTV (mkName "a")] + (ForallT [PlainTV (mkName "a") SpecifiedSpec] [] (AppT (AppT ArrowT (VarT (mkName "a"))) (VarT (mkName "a")))) , FunD (mkName "m") diff --git a/testsuite/tests/th/T10945.stderr b/testsuite/tests/th/T10945.stderr index 786a0befa5..765be1fa80 100644 --- a/testsuite/tests/th/T10945.stderr +++ b/testsuite/tests/th/T10945.stderr @@ -8,7 +8,7 @@ T10945.hs:7:4: error: [SigD (mkName "m") (ForallT - [PlainTV (mkName "a")] [] + [PlainTV (mkName "a") SpecifiedSpec] [] (AppT (AppT ArrowT (VarT (mkName "a"))) (VarT (mkName "a")))), FunD (mkName "m") [Clause [...] (NormalB (VarE (mkName "x"))) []]] In the Template Haskell splice @@ -16,7 +16,7 @@ T10945.hs:7:4: error: [SigD (mkName "m") (ForallT - [PlainTV (mkName "a")] [] + [PlainTV (mkName "a") SpecifiedSpec] [] (AppT (AppT ArrowT (VarT (mkName "a"))) (VarT (mkName "a")))), FunD (mkName "m") [Clause [...] (NormalB (VarE (mkName "x"))) []]]) In the expression: @@ -24,6 +24,6 @@ T10945.hs:7:4: error: [SigD (mkName "m") (ForallT - [PlainTV (mkName "a")] [] + [PlainTV (mkName "a") SpecifiedSpec] [] (AppT (AppT ArrowT (VarT (mkName "a"))) (VarT (mkName "a")))), FunD (mkName "m") [Clause ... (NormalB (VarE (mkName "x"))) []]]) diff --git a/testsuite/tests/th/T11345.hs b/testsuite/tests/th/T11345.hs index 39dd8adc08..2288cdad15 100644 --- a/testsuite/tests/th/T11345.hs +++ b/testsuite/tests/th/T11345.hs @@ -15,7 +15,7 @@ $(do gadtName <- newName "GADT2" prefixName <- newName "Prefix2" infixName <- newName ":****:" a <- newName "a" - return [ DataD [] gadtName [KindedTV a StarT] Nothing + return [ DataD [] gadtName [KindedTV a () StarT] Nothing [ GadtC [prefixName] [ (Bang NoSourceUnpackedness NoSourceStrictness,ConT ''Int) , (Bang NoSourceUnpackedness NoSourceStrictness,ConT ''Int) diff --git a/testsuite/tests/th/T11721_TH.hs b/testsuite/tests/th/T11721_TH.hs index 979ff15b0d..b8e895c155 100644 --- a/testsuite/tests/th/T11721_TH.hs +++ b/testsuite/tests/th/T11721_TH.hs @@ -12,8 +12,8 @@ $(return []) main :: IO () main = print - $(do let rightOrder :: [TyVarBndr] -> Bool - rightOrder [KindedTV b _, KindedTV a _] + $(do let rightOrder :: [TyVarBndr flag] -> Bool + rightOrder [KindedTV b _ _, KindedTV a _ _] = nameBase b == "b" && nameBase a == "a" rightOrder _ = False diff --git a/testsuite/tests/th/T12503.hs b/testsuite/tests/th/T12503.hs index 78175bcf04..d1e3f27a93 100644 --- a/testsuite/tests/th/T12503.hs +++ b/testsuite/tests/th/T12503.hs @@ -9,7 +9,7 @@ import Language.Haskell.TH data T1 k class C1 a -$(do TyConI (DataD [] tName [ KindedTV kName kKind] _ _ _) +$(do TyConI (DataD [] tName [ KindedTV kName () kKind] _ _ _) <- reify ''T1 d <- instanceD (cxt []) (conT ''C1 `appT` diff --git a/testsuite/tests/th/T13098.hs b/testsuite/tests/th/T13098.hs index 8df07d230d..e6a541cc55 100644 --- a/testsuite/tests/th/T13098.hs +++ b/testsuite/tests/th/T13098.hs @@ -6,7 +6,7 @@ module T13098 where import Language.Haskell.TH -$( sequence [ dataD (cxt []) (mkName "T") [PlainTV (mkName "a")] +$( sequence [ dataD (cxt []) (mkName "T") [PlainTV (mkName "a") ()] Nothing [normalC (mkName "T") []] [] , pragCompleteD [mkName "T"] Nothing ] ) diff --git a/testsuite/tests/th/T13782.hs b/testsuite/tests/th/T13782.hs index 0346749ce4..b7af84e0e6 100644 --- a/testsuite/tests/th/T13782.hs +++ b/testsuite/tests/th/T13782.hs @@ -6,10 +6,10 @@ module T13782 where import Language.Haskell.TH -$(do TyConI (DataD _ _ [KindedTV a1 _] _ _ _) <- reify ''Maybe +$(do TyConI (DataD _ _ [KindedTV a1 _ _] _ _ _) <- reify ''Maybe [f,a2] <- mapM newName ["f","a"] - return [ SigD f (ForallT [PlainTV a1, - KindedTV a2 (AppT (ConT ''Maybe) (VarT a1))] + return [ SigD f (ForallT [PlainTV a1 SpecifiedSpec, + KindedTV a2 SpecifiedSpec (AppT (ConT ''Maybe) (VarT a1))] [] (ConT ''Int)) , ValD (VarP f) (NormalB (LitE (IntegerL 42))) [] ]) diff --git a/testsuite/tests/th/T13885.hs b/testsuite/tests/th/T13885.hs index cdcc37f426..42f74a623d 100644 --- a/testsuite/tests/th/T13885.hs +++ b/testsuite/tests/th/T13885.hs @@ -17,8 +17,8 @@ main = print $(do TyConI (DataD _ _ tycon_tyvars _ [ForallC con_tyvars _ _] _) <- reify ''(:~:) - let tvbName :: TyVarBndr -> Name - tvbName (PlainTV n) = n - tvbName (KindedTV n _) = n + let tvbName :: TyVarBndr flag -> Name + tvbName (PlainTV n _) = n + tvbName (KindedTV n _ _) = n - lift $ and $ zipWith ((/=) `on` tvbName) tycon_tyvars con_tyvars) + lift $ and $ zipWith (/=) (map tvbName tycon_tyvars) (map tvbName con_tyvars)) diff --git a/testsuite/tests/th/T16976.stderr b/testsuite/tests/th/T16976.stderr index b711aa4de3..7fe46fb5eb 100644 --- a/testsuite/tests/th/T16976.stderr +++ b/testsuite/tests/th/T16976.stderr @@ -1,9 +1,9 @@ -T16976.aNumber :: forall (p_0 :: *) . GHC.Num.Num p_0 => p_0 +T16976.aNumber :: forall {p_0 :: *} . GHC.Num.Num p_0 => p_0 T16976.aString :: [GHC.Types.Char] T16976.MkT1 :: forall (s_0 :: *) . T16976.T s_0 T16976.MkT2 :: forall (s_0 :: *) . T16976.T s_0 T16976.T :: * -> * -T16976.P :: forall (s_0 :: *) . T16976.T s_0 +T16976.P :: forall {s_0 :: *} . T16976.T s_0 GHC.Classes.not :: GHC.Types.Bool -> GHC.Types.Bool GHC.Base.id :: forall (a_0 :: *) . a_0 -> a_0 GHC.Maybe.Nothing :: forall (a_0 :: *) . GHC.Maybe.Maybe a_0 diff --git a/testsuite/tests/th/T5358.stderr b/testsuite/tests/th/T5358.stderr index 78ad520e46..d6f775fa37 100644 --- a/testsuite/tests/th/T5358.stderr +++ b/testsuite/tests/th/T5358.stderr @@ -31,7 +31,7 @@ T5358.hs:10:21: error: T5358.hs:14:12: error: • Exception when trying to run compile-time code: - runTest called error: forall (t_0 :: *) . t_0 -> GHC.Types.Bool + runTest called error: forall {t_0 :: *} . t_0 -> GHC.Types.Bool CallStack (from HasCallStack): error, called at T5358.hs:15:18 in main:T5358 Code: (do VarI _ t _ <- reify (mkName "prop_x1") diff --git a/testsuite/tests/th/T6018th.hs b/testsuite/tests/th/T6018th.hs index d0f448b80a..41e0b5e607 100644 --- a/testsuite/tests/th/T6018th.hs +++ b/testsuite/tests/th/T6018th.hs @@ -14,8 +14,8 @@ import Language.Haskell.TH $( return [ OpenTypeFamilyD (TypeFamilyHead (mkName "F") - [ PlainTV (mkName "a"), PlainTV (mkName "b"), PlainTV (mkName "c") ] - (TyVarSig (KindedTV (mkName "result") (VarT (mkName "k")))) + [ PlainTV (mkName "a") (), PlainTV (mkName "b") (), PlainTV (mkName "c") () ] + (TyVarSig (KindedTV (mkName "result") () (VarT (mkName "k")))) (Just $ InjectivityAnn (mkName "result") [(mkName "a"), (mkName "b"), (mkName "c") ])) , TySynInstD @@ -41,8 +41,8 @@ $( return $( return [ OpenTypeFamilyD (TypeFamilyHead (mkName "J") - [ PlainTV (mkName "a"), KindedTV (mkName "b") (VarT (mkName "k")) ] - (TyVarSig (PlainTV (mkName "r"))) + [ PlainTV (mkName "a") (), KindedTV (mkName "b") () (VarT (mkName "k")) ] + (TyVarSig (PlainTV (mkName "r") ())) (Just $ InjectivityAnn (mkName "r") [mkName "a"])) , TySynInstD (TySynEqn Nothing (AppT (AppT (ConT (mkName "J")) (ConT (mkName "Int"))) @@ -60,9 +60,9 @@ $( return $( return [ ClosedTypeFamilyD (TypeFamilyHead (mkName "I") - [ KindedTV (mkName "a") StarT, KindedTV (mkName "b") StarT - , KindedTV (mkName "c") StarT ] - (TyVarSig (PlainTV (mkName "r"))) + [ KindedTV (mkName "a") () StarT, KindedTV (mkName "b") () StarT + , KindedTV (mkName "c") () StarT ] + (TyVarSig (PlainTV (mkName "r") ())) (Just $ InjectivityAnn (mkName "r") [(mkName "a"), (mkName "b")])) [ TySynEqn Nothing (AppT (AppT (AppT (ConT (mkName "I")) (ConT (mkName "Int"))) @@ -98,8 +98,8 @@ $( do { decl@([ClosedTypeFamilyD (TypeFamilyHead _ _ _ (Just inj)) _]) <- $( return [ OpenTypeFamilyD (TypeFamilyHead (mkName "H") - [ PlainTV (mkName "a"), PlainTV (mkName "b"), PlainTV (mkName "c") ] - (TyVarSig (PlainTV (mkName "r"))) + [ PlainTV (mkName "a") (), PlainTV (mkName "b") (), PlainTV (mkName "c") () ] + (TyVarSig (PlainTV (mkName "r") ())) (Just $ InjectivityAnn (mkName "r") [(mkName "a"), (mkName "b") ])) diff --git a/testsuite/tests/th/T7667.hs b/testsuite/tests/th/T7667.hs index 59287f1448..eef6fd2cb0 100644 --- a/testsuite/tests/th/T7667.hs +++ b/testsuite/tests/th/T7667.hs @@ -4,5 +4,5 @@ module T7667 where import Language.Haskell.TH -$( return [ TySynD (mkName "+") [PlainTV (mkName "a"), PlainTV (mkName "b")] - (AppT (AppT (ConT ''Either) (VarT $ mkName "a")) (VarT $ mkName "b")) ] )
\ No newline at end of file +$( return [ TySynD (mkName "+") [PlainTV (mkName "a") (), PlainTV (mkName "b") ()] + (AppT (AppT (ConT ''Either) (VarT $ mkName "a")) (VarT $ mkName "b")) ] ) diff --git a/testsuite/tests/th/T8499.hs b/testsuite/tests/th/T8499.hs index 29b9e1678c..d9278b4113 100644 --- a/testsuite/tests/th/T8499.hs +++ b/testsuite/tests/th/T8499.hs @@ -5,8 +5,8 @@ module T8499 where import Language.Haskell.TH -$( do TyConI (DataD _ _ [KindedTV tvb_a _] _ _ _) <- reify ''Maybe +$( do TyConI (DataD _ _ [KindedTV tvb_a _ _] _ _ _) <- reify ''Maybe my_a <- newName "a" return [TySynD (mkName "SMaybe") - [KindedTV my_a (AppT (ConT ''Maybe) (VarT tvb_a))] + [KindedTV my_a () (AppT (ConT ''Maybe) (VarT tvb_a))] (TupleT 0)] ) diff --git a/testsuite/tests/th/TH_RichKinds2.hs b/testsuite/tests/th/TH_RichKinds2.hs index 5cdf919f91..00387c7b4c 100644 --- a/testsuite/tests/th/TH_RichKinds2.hs +++ b/testsuite/tests/th/TH_RichKinds2.hs @@ -14,10 +14,10 @@ import Data.List (splitAt, span, elemIndex) import Language.Haskell.TH $(return [OpenTypeFamilyD (TypeFamilyHead - (mkName "Map") [KindedTV (mkName "f") + (mkName "Map") [KindedTV (mkName "f") () (AppT (AppT ArrowT (VarT (mkName "k1"))) (VarT (mkName "k2"))), - KindedTV (mkName "l") + KindedTV (mkName "l") () (AppT ListT (VarT (mkName "k1")))] (KindSig (AppT ListT (VarT (mkName "k2")))) Nothing)]) diff --git a/testsuite/tests/th/TH_Roles1.hs b/testsuite/tests/th/TH_Roles1.hs index 89d072c485..6ac6128885 100644 --- a/testsuite/tests/th/TH_Roles1.hs +++ b/testsuite/tests/th/TH_Roles1.hs @@ -4,6 +4,6 @@ module TH_Roles1 where import Language.Haskell.TH -$( return [ DataD [] (mkName "T") [PlainTV (mkName "a")] Nothing [] [] +$( return [ DataD [] (mkName "T") [PlainTV (mkName "a") ()] Nothing [] [] , RoleAnnotD (mkName "T") [RepresentationalR] ] ) diff --git a/testsuite/tests/th/TH_Roles2.hs b/testsuite/tests/th/TH_Roles2.hs index 3f7b535b49..e6a0df0c52 100644 --- a/testsuite/tests/th/TH_Roles2.hs +++ b/testsuite/tests/th/TH_Roles2.hs @@ -4,7 +4,7 @@ module TH_Roles2 where import Language.Haskell.TH -$( return [ DataD [] (mkName "T") [KindedTV (mkName "a") (VarT (mkName "k"))] +$( return [ DataD [] (mkName "T") [KindedTV (mkName "a") () (VarT (mkName "k"))] Nothing [] [] , RoleAnnotD (mkName "T") [RepresentationalR] ] ) diff --git a/testsuite/tests/th/TH_genExLib.hs b/testsuite/tests/th/TH_genExLib.hs index d8b646ac90..c0f8bad8e6 100644 --- a/testsuite/tests/th/TH_genExLib.hs +++ b/testsuite/tests/th/TH_genExLib.hs @@ -15,7 +15,7 @@ genAnyClass name decls = DataD [] anyName [] Nothing [constructor] [] where anyName = mkName ("Any" ++ nameBase name ++ "1111") - constructor = ForallC [PlainTV var_a] [AppT (ConT name) (VarT var_a)] $ + constructor = ForallC [PlainTV var_a SpecifiedSpec] [AppT (ConT name) (VarT var_a)] $ NormalC anyName [(Bang NoSourceUnpackedness NoSourceStrictness, VarT var_a)] var_a = mkName "a" diff --git a/testsuite/tests/th/TH_reifyDecl1.stderr b/testsuite/tests/th/TH_reifyDecl1.stderr index 5ae01471f3..1984d85075 100644 --- a/testsuite/tests/th/TH_reifyDecl1.stderr +++ b/testsuite/tests/th/TH_reifyDecl1.stderr @@ -9,7 +9,7 @@ data TH_reifyDecl1.Tree (a_0 :: k_1) | (TH_reifyDecl1.Tree a_0) TH_reifyDecl1.:+: (TH_reifyDecl1.Tree a_0) type TH_reifyDecl1.IntList = [GHC.Types.Int] newtype TH_reifyDecl1.Length = TH_reifyDecl1.Length GHC.Types.Int -Constructor from TH_reifyDecl1.Tree: TH_reifyDecl1.Leaf :: forall (k_0 :: *) (a_1 :: k_0) . +Constructor from TH_reifyDecl1.Tree: TH_reifyDecl1.Leaf :: forall {k_0 :: *} (a_1 :: k_0) . TH_reifyDecl1.Tree a_1 Class op from TH_reifyDecl1.C1: TH_reifyDecl1.m1 :: forall (a_0 :: *) . TH_reifyDecl1.C1 a_0 => a_0 -> GHC.Types.Int |