diff options
author | Richard Eisenberg <eir@cis.upenn.edu> | 2013-10-22 11:16:42 -0400 |
---|---|---|
committer | Richard Eisenberg <eir@cis.upenn.edu> | 2013-10-23 09:23:30 -0400 |
commit | 8854d9e246de9bb7b87499c24ebb55468326bc59 (patch) | |
tree | 8bf68f2620d54ed010022afc3d1631a0cd51a1ab /compiler/main/PprTyThing.hs | |
parent | 4fe12f4cd9afa122a88fec88de8cea5f1d689a74 (diff) | |
download | haskell-8854d9e246de9bb7b87499c24ebb55468326bc59.tar.gz |
Be more selective about when to print out roles with :info
Diffstat (limited to 'compiler/main/PprTyThing.hs')
-rw-r--r-- | compiler/main/PprTyThing.hs | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/compiler/main/PprTyThing.hs b/compiler/main/PprTyThing.hs index 1f458f0d70..c83552b054 100644 --- a/compiler/main/PprTyThing.hs +++ b/compiler/main/PprTyThing.hs @@ -197,18 +197,22 @@ pprTyCon ss tyCon -- e.g. type T = forall a. a->a | Just cls <- tyConClass_maybe tyCon - = pp_roles $$ pprClass ss cls + = (pp_roles (== Nominal)) $$ pprClass ss cls | otherwise - = pp_roles $$ pprAlgTyCon ss tyCon + = (pp_roles (== Representational)) $$ pprAlgTyCon ss tyCon where - pp_roles = sdocWithDynFlags $ \dflags -> - let roles = suppressKinds dflags (tyConKind tyCon) (tyConRoles tyCon) - in ppUnless (all (== Representational) roles) $ - ptext (sLit "type role") <+> ppr tyCon <+> hsep (map ppr roles) - - pp_tc_with_kind = vcat [ pp_roles + -- if, for each role, suppress_if role is True, then suppress the role + -- output + pp_roles :: (Role -> Bool) -> SDoc + pp_roles suppress_if + = sdocWithDynFlags $ \dflags -> + let roles = suppressKinds dflags (tyConKind tyCon) (tyConRoles tyCon) + in ppUnless (all suppress_if roles) $ + ptext (sLit "type role") <+> ppr tyCon <+> hsep (map ppr roles) + + pp_tc_with_kind = vcat [ pp_roles (const True) , pprTyConHdr tyCon <+> dcolon <+> pprTypeForUser (synTyConResKind tyCon) ] closed_family_header |