summaryrefslogtreecommitdiff
path: root/compiler/main/PprTyThing.hs
diff options
context:
space:
mode:
authorRichard Eisenberg <eir@cis.upenn.edu>2013-10-22 11:16:42 -0400
committerRichard Eisenberg <eir@cis.upenn.edu>2013-10-23 09:23:30 -0400
commit8854d9e246de9bb7b87499c24ebb55468326bc59 (patch)
tree8bf68f2620d54ed010022afc3d1631a0cd51a1ab /compiler/main/PprTyThing.hs
parent4fe12f4cd9afa122a88fec88de8cea5f1d689a74 (diff)
downloadhaskell-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.hs20
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