module GHC.Tc.Types.Rank (Rank(..)) where
import GHC.Base (Bool)
import GHC.Utils.Outputable (Outputable, (<+>), parens, ppr, text)
data Rank = ArbitraryRank
| LimitedRank
Bool
Rank
| MonoTypeRankZero
| MonoTypeTyConArg
| MonoTypeSynArg
| MonoTypeConstraint
| MustBeMonoType
instance Outputable Rank where
ppr :: Rank -> SDoc
ppr Rank
ArbitraryRank = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"ArbitraryRank"
ppr (LimitedRank Bool
top_forall_ok Rank
r)
= String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"LimitedRank" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> Bool -> SDoc
forall a. Outputable a => a -> SDoc
ppr Bool
top_forall_ok
SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc
parens (Rank -> SDoc
forall a. Outputable a => a -> SDoc
ppr Rank
r)
ppr Rank
MonoTypeRankZero = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"MonoTypeRankZero"
ppr Rank
MonoTypeTyConArg = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"MonoTypeTyConArg"
ppr Rank
MonoTypeSynArg = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"MonoTypeSynArg"
ppr Rank
MonoTypeConstraint = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"MonoTypeConstraint"
ppr Rank
MustBeMonoType = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"MustBeMonoType"