Improve output from -ddump-types
authorSimon Peyton Jones <simonpj@microsoft.com>
Tue, 16 Oct 2018 11:03:56 +0000 (12:03 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Wed, 24 Oct 2018 15:38:55 +0000 (16:38 +0100)
This patch makes a number of improvements to the output
generated by -ddump-types

* Prints data constructor separately
* Omits empty chunks of output

I was driven initially by the unhelpful existing output for
data constructors, but ended up doing some refactoring.

Lots of error message wibbles, but nothing significant.
Certainly no change in user behaviour.

(NB: It is just possible that I have failed to cleanly
     separate this patch from the next one, about
     isPredTy and friends.)

59 files changed:
compiler/typecheck/TcRnDriver.hs
testsuite/tests/ado/ado004.stderr
testsuite/tests/determinism/determ021/determ021.stdout
testsuite/tests/driver/json2.stderr
testsuite/tests/indexed-types/should_compile/T3017.stderr
testsuite/tests/partial-sigs/should_compile/ADT.stderr
testsuite/tests/partial-sigs/should_compile/AddAndOr1.stderr
testsuite/tests/partial-sigs/should_compile/AddAndOr2.stderr
testsuite/tests/partial-sigs/should_compile/AddAndOr3.stderr
testsuite/tests/partial-sigs/should_compile/AddAndOr4.stderr
testsuite/tests/partial-sigs/should_compile/AddAndOr5.stderr
testsuite/tests/partial-sigs/should_compile/AddAndOr6.stderr
testsuite/tests/partial-sigs/should_compile/BoolToBool.stderr
testsuite/tests/partial-sigs/should_compile/DataFamilyInstanceLHS.stderr
testsuite/tests/partial-sigs/should_compile/Defaulting1MROn.stderr
testsuite/tests/partial-sigs/should_compile/Defaulting2MROff.stderr
testsuite/tests/partial-sigs/should_compile/Defaulting2MROn.stderr
testsuite/tests/partial-sigs/should_compile/Either.stderr
testsuite/tests/partial-sigs/should_compile/EqualityConstraint.stderr
testsuite/tests/partial-sigs/should_compile/Every.stderr
testsuite/tests/partial-sigs/should_compile/EveryNamed.stderr
testsuite/tests/partial-sigs/should_compile/ExpressionSig.stderr
testsuite/tests/partial-sigs/should_compile/ExpressionSigNamed.stderr
testsuite/tests/partial-sigs/should_compile/ExtraConstraints1.stderr
testsuite/tests/partial-sigs/should_compile/ExtraConstraints2.stderr
testsuite/tests/partial-sigs/should_compile/ExtraConstraints3.stderr
testsuite/tests/partial-sigs/should_compile/ExtraNumAMROff.stderr
testsuite/tests/partial-sigs/should_compile/ExtraNumAMROn.stderr
testsuite/tests/partial-sigs/should_compile/Forall1.stderr
testsuite/tests/partial-sigs/should_compile/GenNamed.stderr
testsuite/tests/partial-sigs/should_compile/HigherRank1.stderr
testsuite/tests/partial-sigs/should_compile/HigherRank2.stderr
testsuite/tests/partial-sigs/should_compile/LocalDefinitionBug.stderr
testsuite/tests/partial-sigs/should_compile/Meltdown.stderr
testsuite/tests/partial-sigs/should_compile/MonoLocalBinds.stderr
testsuite/tests/partial-sigs/should_compile/NamedTyVar.stderr
testsuite/tests/partial-sigs/should_compile/NamedWildcardInDataFamilyInstanceLHS.stderr
testsuite/tests/partial-sigs/should_compile/NamedWildcardInTypeFamilyInstanceLHS.stderr
testsuite/tests/partial-sigs/should_compile/ParensAroundContext.stderr
testsuite/tests/partial-sigs/should_compile/PatBind.stderr
testsuite/tests/partial-sigs/should_compile/PatBind2.stderr
testsuite/tests/partial-sigs/should_compile/PatternSig.stderr
testsuite/tests/partial-sigs/should_compile/Recursive.stderr
testsuite/tests/partial-sigs/should_compile/ScopedNamedWildcards.stderr
testsuite/tests/partial-sigs/should_compile/ScopedNamedWildcardsGood.stderr
testsuite/tests/partial-sigs/should_compile/ShowNamed.stderr
testsuite/tests/partial-sigs/should_compile/SimpleGen.stderr
testsuite/tests/partial-sigs/should_compile/SkipMany.stderr
testsuite/tests/partial-sigs/should_compile/SomethingShowable.stderr
testsuite/tests/partial-sigs/should_compile/Uncurry.stderr
testsuite/tests/partial-sigs/should_compile/UncurryNamed.stderr
testsuite/tests/partial-sigs/should_compile/WarningWildcardInstantiations.stderr
testsuite/tests/polykinds/T15592.stderr
testsuite/tests/roles/should_compile/Roles1.stderr
testsuite/tests/roles/should_compile/Roles2.stderr
testsuite/tests/roles/should_compile/T8958.stderr
testsuite/tests/th/TH_Roles2.stderr
testsuite/tests/typecheck/should_compile/T12763.stderr
testsuite/tests/typecheck/should_compile/tc231.stderr

index e53314d..b327789 100644 (file)
@@ -103,6 +103,7 @@ import RnEnv
 import RnSource
 import ErrUtils
 import Id
+import IdInfo( IdDetails(..) )
 import VarEnv
 import Module
 import UniqFM
@@ -2640,7 +2641,8 @@ loadUnqualIfaces hsc_env ictxt
 {-
 ************************************************************************
 *                                                                      *
-                Degugging output
+                Debugging output
+      This is what happens when you do -ddump-types
 *                                                                      *
 ************************************************************************
 -}
@@ -2677,8 +2679,10 @@ pprTcGblEnv (TcGblEnv { tcg_type_env  = type_env,
                         tcg_fam_insts = fam_insts,
                         tcg_rules     = rules,
                         tcg_imports   = imports })
-  = vcat [ ppr_types type_env
-         , ppr_tycons fam_insts type_env
+  = getPprDebug $ \debug ->
+    vcat [ ppr_types debug type_env
+         , ppr_tycons debug fam_insts type_env
+         , ppr_datacons debug type_env
          , ppr_patsyns type_env
          , ppr_insts insts
          , ppr_fam_insts fam_insts
@@ -2696,81 +2700,95 @@ ppr_rules rules
     hang (text "RULES")
        2 (vcat (map ppr rules))
 
-ppr_types :: TypeEnv -> SDoc
-ppr_types type_env = getPprDebug $ \dbg ->
-  let
+ppr_types :: Bool -> TypeEnv -> SDoc
+ppr_types debug type_env
+  = ppr_things "TYPE SIGNATURES" ppr_sig
+             (sortBy (comparing getOccName) ids)
+  where
     ids = [id | id <- typeEnvIds type_env, want_sig id]
-    want_sig id | dbg
-                = True
-                | otherwise
-                = isExternalName (idName id) &&
-                  (not (isDerivedOccName (getOccName id)))
-        -- Top-level user-defined things have External names.
-        -- Suppress internally-generated things unless -dppr-debug
-  in
-  ppr_sigs ids
-
-ppr_tycons :: [FamInst] -> TypeEnv -> SDoc
-ppr_tycons fam_insts type_env = getPprDebug $ \dbg ->
-  let
+    want_sig id
+      | debug     = True
+      | otherwise = hasTopUserName id
+                    && case idDetails id of
+                         VanillaId    -> True
+                         RecSelId {}  -> True
+                         ClassOpId {} -> True
+                         FCallId {}   -> True
+                         _            -> False
+             -- Data cons (workers and wrappers), pattern synonyms,
+             -- etc are suppressed (unless -dppr-debug),
+             -- because they appear elsehwere
+
+    ppr_sig id = hang (ppr id <+> dcolon) 2 (ppr (tidyTopType (idType id)))
+
+ppr_tycons :: Bool -> [FamInst] -> TypeEnv -> SDoc
+ppr_tycons debug fam_insts type_env
+  = vcat [ ppr_things "TYPE CONSTRUCTORS" ppr_tc tycons
+         , ppr_things "COERCION AXIOMS" pprCoAxiom
+                      (typeEnvCoAxioms type_env) ]
+  where
     fi_tycons = famInstsRepTyCons fam_insts
-    tycons = [tycon | tycon <- typeEnvTyCons type_env, want_tycon tycon]
-    want_tycon tycon | dbg        = True
+
+    tycons = sortBy (comparing getOccName) $
+             [tycon | tycon <- typeEnvTyCons type_env
+                    , want_tycon tycon]
+             -- Sort by OccName to reduce unnecessary changes
+    want_tycon tycon | debug      = True
                      | otherwise  = not (isImplicitTyCon tycon) &&
                                     isExternalName (tyConName tycon) &&
                                     not (tycon `elem` fi_tycons)
-  in
-  vcat [ hang (text "TYPE CONSTRUCTORS")
-            2 (ppr_tydecls tycons)
-       , hang (text "COERCION AXIOMS")
-            2 (vcat (map pprCoAxiom (typeEnvCoAxioms type_env))) ]
+    ppr_tc tc
+       = vcat [ ppWhen show_roles $
+                hang (text "type role" <+> ppr tc)
+                   2 (hsep (map ppr roles))
+              , hang (ppr tc <+> dcolon)
+                   2 (ppr (tidyTopType (tyConKind tc))) ]
+       where
+         show_roles = debug || not (all (== boring_role) roles)
+         roles = tyConRoles tc
+         boring_role | isClassTyCon tc = Nominal
+                     | otherwise       = Representational
+            -- Matches the choice in IfaceSyn, calls to pprRoles
+
+ppr_datacons :: Bool -> TypeEnv -> SDoc
+ppr_datacons debug type_env
+  = ppr_things "DATA CONSTRUCTORS" ppr_dc wanted_dcs
+      -- The filter gets rid of class data constructors
+  where
+    ppr_dc dc = ppr dc <+> dcolon <+> ppr (dataConUserType dc)
+    all_dcs    = typeEnvDataCons type_env
+    wanted_dcs | debug     = all_dcs
+               | otherwise = filterOut is_cls_dc all_dcs
+    is_cls_dc dc = isClassTyCon (dataConTyCon dc)
 
 ppr_patsyns :: TypeEnv -> SDoc
 ppr_patsyns type_env
-  = ppUnless (null patsyns) $
-    hang (text "PATTERN SYNONYMS")
-       2 (vcat (map ppr_ps patsyns))
+  = ppr_things "PATTERN SYNONYMS" ppr_ps
+               (typeEnvPatSyns type_env)
   where
-    patsyns = typeEnvPatSyns type_env
     ppr_ps ps = ppr ps <+> dcolon <+> pprPatSynType ps
 
 ppr_insts :: [ClsInst] -> SDoc
 ppr_insts ispecs
-  = ppUnless (null ispecs) $
-    hang (text "INSTANCES") 2 (pprInstances ispecs)
+  = ppr_things "CLASS INSTANCES" pprInstance ispecs
 
 ppr_fam_insts :: [FamInst] -> SDoc
 ppr_fam_insts fam_insts
-  = ppUnless (null fam_insts) $
-    hang (text "FAMILY INSTANCES")
-       2 (pprFamInsts fam_insts)
-
-ppr_sigs :: [Var] -> SDoc
-ppr_sigs ids -- Print type signatures; sort by OccName
-  = hang (text "TYPE SIGNATURES")
-       2 (vcat (map ppr_sig (sortBy (comparing getOccName) ids)))
+  = ppr_things "FAMILY INSTANCES" pprFamInst fam_insts
+
+ppr_things :: String -> (a -> SDoc) -> [a] -> SDoc
+ppr_things herald ppr_one things
+  | null things = empty
+  | otherwise   = text herald $$ nest 2 (vcat (map ppr_one things))
+
+hasTopUserName :: NamedThing x => x -> Bool
+-- A top-level thing whose name is not "derived"
+-- Thus excluding things like $tcX, from Typeable boilerplate
+-- and C:Coll from class-dictionary data constructors
+hasTopUserName x
+  = isExternalName name && not (isDerivedOccName (nameOccName name))
   where
-    ppr_sig id = hang (ppr id <+> dcolon) 2 (ppr (tidyTopType (idType id)))
-
-ppr_tydecls :: [TyCon] -> SDoc
-ppr_tydecls tycons
-  -- Print type constructor info for debug purposes
-  -- Sort by OccName to reduce unnecessary changes
-  = getPprDebug $ \ debug ->
-    vcat $ map (ppr_tc debug) $ sortBy (comparing getOccName) tycons
-  where
-    ppr_tc debug tc
-       = vcat [ ppWhen show_roles $
-                hang (text "type role" <+> ppr tc)
-                   2 (hsep (map ppr roles))
-              , hang (ppr tc <+> dcolon)
-                   2 (ppr (tidyTopType (tyConKind tc))) ]
-       where
-         roles = tyConRoles tc
-         show_roles = debug || not (all (== boring_role) roles)
-         boring_role | isClassTyCon tc = Nominal
-                     | otherwise       = Representational
-            -- Matches the choice in IfaceSyn, calls to pprRoles
+    name = getName x
 
 {-
 ********************************************************************************
index c0f7838..86066d3 100644 (file)
@@ -41,8 +41,6 @@ TYPE SIGNATURES
     forall (m :: * -> *) a p.
     (Monad m, Num (m a)) =>
     (m a -> m (m a)) -> p -> m a
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 1f6a636..d0a002b 100644 (file)
@@ -4,8 +4,6 @@ TYPE SIGNATURES
     forall (f :: * -> *) t b.
     (Applicative f, Num t, Num b) =>
     (t -> f b) -> f b
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
@@ -15,8 +13,6 @@ TYPE SIGNATURES
     forall (f :: * -> *) t b.
     (Applicative f, Num t, Num b) =>
     (t -> f b) -> f b
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index b9e4297..d5e50be 100644 (file)
@@ -1 +1 @@
-{"span": null,"doc": "TYPE SIGNATURES foo :: forall a. a -> a\nTYPE CONSTRUCTORS\nCOERCION AXIOMS\nDependent modules: []\nDependent packages: [base-4.12.0.0, ghc-prim-0.5.3,\n                     integer-gmp-1.0.2.0]","severity": "SevOutput","reason": null}
+{"span": null,"doc": "TYPE SIGNATURES\n  foo :: forall a. a -> a\nDependent modules: []\nDependent packages: [base-4.12.0.0, ghc-prim-0.5.3,\n                     integer-gmp-1.0.2.0]","severity": "SevOutput","reason": null}
index 2c82e8e..2a57edf 100644 (file)
@@ -1,5 +1,4 @@
 TYPE SIGNATURES
-  Foo.L :: forall a. [a] -> ListColl a
   empty :: forall c. Coll c => c
   emptyL :: forall a. ListColl a
   insert :: forall c. Coll c => Elem c -> c -> c
@@ -11,7 +10,9 @@ TYPE CONSTRUCTORS
 COERCION AXIOMS
   axiom Foo.D:R:ElemListColl ::
     Elem (ListColl a) = a -- Defined at T3017.hs:13:9
-INSTANCES
+DATA CONSTRUCTORS
+  L :: forall a. [a] -> ListColl a
+CLASS INSTANCES
   instance Coll (ListColl a) -- Defined at T3017.hs:12:11
 FAMILY INSTANCES
   type Elem (ListColl a)
index 92e1bf5..0569722 100644 (file)
@@ -1,9 +1,9 @@
 TYPE SIGNATURES
-  ADT.Foo :: forall x y z. x -> y -> z -> Foo x y z
   bar :: Int -> Foo Bool () Int
 TYPE CONSTRUCTORS
   Foo :: * -> * -> * -> *
-COERCION AXIOMS
+DATA CONSTRUCTORS
+  Foo :: forall x y z. x -> y -> z -> Foo x y z
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 2574e55..cc5ab0a 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   addAndOr1 :: (Int, Bool) -> (Bool, Int) -> (Int, Bool)
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 3540207..cf4989b 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   addAndOr2 :: (Int, Bool) -> (Bool, Int) -> (Int, Bool)
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index ea8248b..d7a164b 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   addAndOr3 :: (Int, Bool) -> (Bool, Int) -> (Int, Bool)
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 55a2fb2..30b1744 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   addAndOr4 :: (Int, Bool) -> (Bool, Int) -> (Int, Bool)
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 36d5df8..97e4ba2 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   addAndOr5 :: (Int, Bool) -> (Bool, Int) -> (Int, Bool)
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index b81f39e..1cb8965 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   addAndOr6 :: (Int, Bool) -> (Bool, Int) -> (Int, Bool)
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 1993ae0..3af6ead 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   bar :: Bool -> Bool
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index f3be34f..58f423c 100644 (file)
@@ -1,14 +1,4 @@
 TYPE SIGNATURES
-  DataFamilyInstanceLHS.A :: MyKind
-  DataFamilyInstanceLHS.B :: MyKind
-  DataFamilyInstanceLHS.SingA ::
-    forall (_ :: MyKind).
-    (_ ~ 'A) =>
-    DataFamilyInstanceLHS.R:SingMyKind_ _
-  DataFamilyInstanceLHS.SingB ::
-    forall (_ :: MyKind).
-    (_ ~ 'B) =>
-    DataFamilyInstanceLHS.R:SingMyKind_ _
   foo :: Sing 'A
 TYPE CONSTRUCTORS
   MyKind :: *
@@ -18,6 +8,11 @@ COERCION AXIOMS
   axiom DataFamilyInstanceLHS.D:R:SingMyKind_0 ::
     Sing _ = DataFamilyInstanceLHS.R:SingMyKind_
       -- Defined at DataFamilyInstanceLHS.hs:8:15
+DATA CONSTRUCTORS
+  A :: MyKind
+  B :: MyKind
+  SingA :: Sing 'A
+  SingB :: Sing 'B
 FAMILY INSTANCES
   data instance Sing
 Dependent modules: []
index 99dec3d..34107ee 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   alpha :: Integer
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 635823b..008a1fc 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   bravo :: forall w. Num w => w
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 635823b..008a1fc 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   bravo :: forall w. Num w => w
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index a97a933..86fe4a0 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   barry :: forall w. w -> (Either [Char] w, Either [Char] w)
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 08b903e..ea6cf34 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   foo :: forall a. (a ~ Bool) => (a, Bool)
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 900e9d9..bb09089 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   every :: forall t. (t -> Bool) -> [t] -> Bool
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 037f071..e6f8a90 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   every :: forall w. (w -> Bool) -> [w] -> Bool
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 1993ae0..3af6ead 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   bar :: Bool -> Bool
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 1993ae0..3af6ead 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   bar :: Bool -> Bool
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index d86d047..9fd86b8 100644 (file)
@@ -4,8 +4,6 @@ TYPE SIGNATURES
   arbitCs3 :: forall a. (Show a, Enum a, Eq a) => a -> String
   arbitCs4 :: forall a. (Eq a, Show a, Enum a) => a -> String
   arbitCs5 :: forall a. (Eq a, Enum a, Show a) => a -> String
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index b438683..830e504 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   foo :: String
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 4a23e06..c49b1a0 100644 (file)
@@ -227,8 +227,6 @@ TYPE SIGNATURES
   zipWith3 ::
     forall a b c d. (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]
   || :: Bool -> Bool -> Bool
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index a806a25..9cf9ef9 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   foo :: forall a. Num a => a
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index a806a25..9cf9ef9 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   foo :: forall a. Num a => a
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 91ad39f..aa01e67 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   fall :: forall a. a -> a
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 1993ae0..3af6ead 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   bar :: Bool -> Bool
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index aba15a1..6bd3696 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   foo :: (forall a. [a] -> [a]) -> ([Bool], [Char])
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index aba15a1..6bd3696 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   foo :: (forall a. [a] -> [a]) -> ([Bool], [Char])
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 5cf1ad8..7106594 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   monoLoc :: forall a. a -> ((a, String), (a, String))
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 752ee4d..750a951 100644 (file)
@@ -6,8 +6,7 @@ TYPE SIGNATURES
 TYPE CONSTRUCTORS
   type role NukeMonad phantom phantom phantom
   NukeMonad :: * -> * -> * -> *
-COERCION AXIOMS
-INSTANCES
+CLASS INSTANCES
   instance Functor (NukeMonad a b) -- Defined at Meltdown.hs:8:10
   instance Applicative (NukeMonad a b)
     -- Defined at Meltdown.hs:11:10
index 5cf1ad8..7106594 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   monoLoc :: forall a. a -> ((a, String), (a, String))
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 68ae226..8d6d3e5 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   foo :: forall b a. (a, b) -> (a, b)
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 1c8a89a..a075b34 100644 (file)
@@ -1,14 +1,3 @@
-TYPE SIGNATURES
-  NamedWildcardInDataFamilyInstanceLHS.A :: MyKind
-  NamedWildcardInDataFamilyInstanceLHS.B :: MyKind
-  NamedWildcardInDataFamilyInstanceLHS.SingA ::
-    forall (_a :: MyKind).
-    (_a ~ 'A) =>
-    NamedWildcardInDataFamilyInstanceLHS.R:SingMyKind_a _a
-  NamedWildcardInDataFamilyInstanceLHS.SingB ::
-    forall (_a :: MyKind).
-    (_a ~ 'B) =>
-    NamedWildcardInDataFamilyInstanceLHS.R:SingMyKind_a _a
 TYPE CONSTRUCTORS
   MyKind :: *
   type role Sing nominal nominal
@@ -17,6 +6,11 @@ COERCION AXIOMS
   axiom NamedWildcardInDataFamilyInstanceLHS.D:R:SingMyKind_a0 ::
     Sing _a = NamedWildcardInDataFamilyInstanceLHS.R:SingMyKind_a
       -- Defined at NamedWildcardInDataFamilyInstanceLHS.hs:8:15
+DATA CONSTRUCTORS
+  A :: MyKind
+  B :: MyKind
+  SingA :: Sing 'A
+  SingB :: Sing 'B
 FAMILY INSTANCES
   data instance Sing
 Dependent modules: []
index 2c61b54..e2656dd 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   f :: forall a. Eq a => a -> a -> Bool
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index a784c73..2db0beb 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   foo :: forall a. a -> a
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 43d7d12..5748b12 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   foo :: Bool -> Bool
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 1993ae0..3af6ead 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   bar :: Bool -> Bool
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 579c554..8f8f123 100644 (file)
@@ -2,8 +2,6 @@ TYPE SIGNATURES
   f :: Bool
   g :: Bool
   orr :: forall a. a -> a -> a
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index dad0d43..08bf650 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   test3 :: Bool -> Bool
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 41d2b93..bacfd16 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   foo :: Bool -> Char
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 5d4b15d..9ec0a0b 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   showTwo :: forall a. Show a => a -> String
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 59ce087..bae5060 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   bar :: forall w. w -> Bool
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 3508652..a821a69 100644 (file)
@@ -1,13 +1,12 @@
 TYPE SIGNATURES
-  SkipMany.GenParser ::
-    forall tok st a. tok -> st -> a -> GenParser tok st a
   skipMany ::
     forall tok st a. GenParser tok st a -> GenParser tok st ()
   skipMany' ::
     forall tok st a. GenParser tok st a -> GenParser tok st ()
 TYPE CONSTRUCTORS
   GenParser :: * -> * -> * -> *
-COERCION AXIOMS
+DATA CONSTRUCTORS
+  GenParser :: forall tok st a. tok -> st -> a -> GenParser tok st a
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 262b76d..dd83b62 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   somethingShowable :: Show Bool => Bool -> String
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index c8c7a80..b9816b9 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   unc :: forall w1 w2 w3. (w1 -> w2 -> w3) -> (w1, w2) -> w3
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index bdeacf3..f04dfbb 100644 (file)
@@ -1,7 +1,5 @@
 TYPE SIGNATURES
   unc :: forall a b w. (a -> b -> w) -> (a, b) -> w
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 26ace31..2c891dc 100644 (file)
@@ -1,8 +1,6 @@
 TYPE SIGNATURES
   bar :: forall t w. t -> (t -> w) -> w
   foo :: forall a. (Show a, Enum a) => a -> String
-TYPE CONSTRUCTORS
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 71dc3b2..c1b823e 100644 (file)
@@ -1,11 +1,9 @@
-TYPE SIGNATURES
-  T15592.MkT ::
-    forall {k} k1 (f :: k1 -> k -> *) (a :: k1) (b :: k).
-    f a b -> T f a b -> T f a b
 TYPE CONSTRUCTORS
   type role T nominal nominal representational nominal nominal
   T :: forall {k} k1. (k1 -> k -> *) -> k1 -> k -> *
-COERCION AXIOMS
+DATA CONSTRUCTORS
+  MkT :: forall {k} k1 (f :: k1 -> k -> *) (a :: k1) (b :: k).
+         f a b -> T f a b -> T f a b
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index e11b454..3278701 100644 (file)
@@ -1,11 +1,3 @@
-TYPE SIGNATURES
-  Roles1.K1 :: forall a. a -> T1 a
-  Roles1.K2 :: forall a. a -> T2 a
-  Roles1.K3 :: forall k (a :: k). T3 a
-  Roles1.K4 :: forall (a :: * -> *) b. a b -> T4 a b
-  Roles1.K5 :: forall a. a -> T5 a
-  Roles1.K6 :: forall {k} (a :: k). T6 a
-  Roles1.K7 :: forall {k} (a :: k) b. b -> T7 a b
 TYPE CONSTRUCTORS
   type role T1 nominal
   T1 :: * -> *
@@ -19,7 +11,14 @@ TYPE CONSTRUCTORS
   T6 :: forall {k}. k -> *
   type role T7 nominal phantom representational
   T7 :: forall {k}. k -> * -> *
-COERCION AXIOMS
+DATA CONSTRUCTORS
+  K7 :: forall {k} (a :: k) b. b -> T7 a b
+  K6 :: forall {k} (a :: k). T6 a
+  K5 :: forall a. a -> T5 a
+  K4 :: forall (a :: * -> *) b. a b -> T4 a b
+  K3 :: forall k (a :: k). T3 a
+  K2 :: forall a. a -> T2 a
+  K1 :: forall a. a -> T1 a
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 81cf221..4cb55ec 100644 (file)
@@ -1,11 +1,10 @@
-TYPE SIGNATURES
-  Roles2.K1 :: forall a. IO a -> T1 a
-  Roles2.K2 :: forall a. FunPtr a -> T2 a
 TYPE CONSTRUCTORS
   T1 :: * -> *
   type role T2 phantom
   T2 :: * -> *
-COERCION AXIOMS
+DATA CONSTRUCTORS
+  K2 :: forall a. FunPtr a -> T2 a
+  K1 :: forall a. IO a -> T1 a
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]
index 55a6303..eaad638 100644 (file)
@@ -1,8 +1,6 @@
 
 T8958.hs:1:31: warning:
     -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
-TYPE SIGNATURES
-  T8958.MkMap :: forall k v. [(k, v)] -> Map k v
 TYPE CONSTRUCTORS
   type role Map nominal representational
   Map :: * -> * -> *
@@ -11,7 +9,9 @@ TYPE CONSTRUCTORS
   Representational :: * -> Constraint
 COERCION AXIOMS
   axiom T8958.N:Map :: Map k v = [(k, v)] -- Defined at T8958.hs:13:1
-INSTANCES
+DATA CONSTRUCTORS
+  MkMap :: forall k v. [(k, v)] -> Map k v
+CLASS INSTANCES
   instance [incoherent] Representational a
     -- Defined at T8958.hs:10:10
   instance [incoherent] Nominal a -- Defined at T8958.hs:7:10
index 9112faf..3752e8c 100644 (file)
@@ -1,8 +1,6 @@
-TYPE SIGNATURES
 TYPE CONSTRUCTORS
   type role T nominal representational
   T :: forall k. k -> *
-COERCION AXIOMS
 Dependent modules: []
 Dependent packages: [array-0.5.2.0, base-4.12.0.0, deepseq-1.4.4.0,
                      ghc-boot-th-8.7, ghc-prim-0.5.3, integer-gmp-1.0.2.0,
index c2c09d5..ad3460c 100644 (file)
@@ -5,7 +5,7 @@ TYPE CONSTRUCTORS
   C :: * -> Constraint
 COERCION AXIOMS
   axiom T12763.N:C :: C a = a -> () -- Defined at T12763.hs:6:1
-INSTANCES
+CLASS INSTANCES
   instance C Int -- Defined at T12763.hs:9:10
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
index 10128de..6c785b4 100644 (file)
@@ -1,6 +1,4 @@
 TYPE SIGNATURES
-  Node :: forall s a chain. s -> a -> chain -> Q s a chain
-  Z :: forall a. a -> Z a
   foo ::
     forall s b chain.
     Zork s (Z [Char]) b =>
@@ -15,6 +13,9 @@ COERCION AXIOMS
   axiom N:Zork ::
     Zork s a b = forall chain. Q s a chain -> ST s ()
       -- Defined at tc231.hs:25:1
+DATA CONSTRUCTORS
+  Z :: forall a. a -> Z a
+  Node :: forall s a chain. s -> a -> chain -> Q s a chain
 Dependent modules: []
 Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3,
                      integer-gmp-1.0.2.0]