| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
GHC.Iface.Type
Synopsis
- type IfExtName = Name
 - type IfLclName = FastString
 - data IfaceType
- = IfaceFreeTyVar TyVar
 - | IfaceTyVar IfLclName
 - | IfaceLitTy IfaceTyLit
 - | IfaceAppTy IfaceType IfaceAppArgs
 - | IfaceFunTy FunTyFlag IfaceMult IfaceType IfaceType
 - | IfaceForAllTy IfaceForAllBndr IfaceType
 - | IfaceTyConApp IfaceTyCon IfaceAppArgs
 - | IfaceCastTy IfaceType IfaceCoercion
 - | IfaceCoercionTy IfaceCoercion
 - | IfaceTupleTy TupleSort PromotionFlag IfaceAppArgs
 
 - type IfacePredType = IfaceType
 - type IfaceKind = IfaceType
 - data IfaceCoercion
- = IfaceReflCo IfaceType
 - | IfaceGReflCo Role IfaceType IfaceMCoercion
 - | IfaceFunCo Role IfaceCoercion IfaceCoercion IfaceCoercion
 - | IfaceTyConAppCo Role IfaceTyCon [IfaceCoercion]
 - | IfaceAppCo IfaceCoercion IfaceCoercion
 - | IfaceForAllCo IfaceBndr IfaceCoercion IfaceCoercion
 - | IfaceCoVarCo IfLclName
 - | IfaceAxiomInstCo IfExtName BranchIndex [IfaceCoercion]
 - | IfaceAxiomRuleCo IfLclName [IfaceCoercion]
 - | IfaceUnivCo IfaceUnivCoProv Role IfaceType IfaceType
 - | IfaceSymCo IfaceCoercion
 - | IfaceTransCo IfaceCoercion IfaceCoercion
 - | IfaceSelCo CoSel IfaceCoercion
 - | IfaceLRCo LeftOrRight IfaceCoercion
 - | IfaceInstCo IfaceCoercion IfaceCoercion
 - | IfaceKindCo IfaceCoercion
 - | IfaceSubCo IfaceCoercion
 - | IfaceFreeCoVar CoVar
 - | IfaceHoleCo CoVar
 
 - data IfaceMCoercion
 - data IfaceUnivCoProv
 - type IfaceMult = IfaceType
 - data IfaceTyCon = IfaceTyCon {}
 - data IfaceTyConInfo = IfaceTyConInfo {}
 - mkIfaceTyConInfo :: PromotionFlag -> IfaceTyConSort -> IfaceTyConInfo
 - data IfaceTyConSort
 - data IfaceTyLit
 - data IfaceAppArgs
 - type IfaceContext = [IfacePredType]
 - data IfaceBndr
 - data IfaceOneShot
 - type IfaceLamBndr = (IfaceBndr, IfaceOneShot)
 - type IfaceTvBndr = (IfLclName, IfaceKind)
 - type IfaceIdBndr = (IfaceType, IfLclName, IfaceType)
 - type IfaceTyConBinder = VarBndr IfaceBndr TyConBndrVis
 - type IfaceForAllSpecBndr = VarBndr IfaceBndr Specificity
 - type IfaceForAllBndr = VarBndr IfaceBndr ForAllTyFlag
 - data ForAllTyFlag where
- Invisible Specificity
 - Required
 - pattern Specified :: ForAllTyFlag
 - pattern Inferred :: ForAllTyFlag
 
 - data FunTyFlag
 - data ShowForAllFlag
 - data ShowSub = ShowSub {}
 - data ShowHowMuch
 - newtype AltPpr = AltPpr (Maybe (OccName -> SDoc))
 - mkIfaceForAllTvBndr :: ForAllTyFlag -> IfaceTvBndr -> IfaceForAllBndr
 - mkIfaceTyConKind :: [IfaceTyConBinder] -> IfaceKind -> IfaceKind
 - ifaceForAllSpecToBndrs :: [IfaceForAllSpecBndr] -> [IfaceForAllBndr]
 - ifaceForAllSpecToBndr :: IfaceForAllSpecBndr -> IfaceForAllBndr
 - ifForAllBndrVar :: IfaceForAllBndr -> IfaceBndr
 - ifForAllBndrName :: IfaceForAllBndr -> IfLclName
 - ifaceBndrName :: IfaceBndr -> IfLclName
 - ifTyConBinderVar :: IfaceTyConBinder -> IfaceBndr
 - ifTyConBinderName :: IfaceTyConBinder -> IfLclName
 - isIfaceLiftedTypeKind :: IfaceKind -> Bool
 - appArgsIfaceTypes :: IfaceAppArgs -> [IfaceType]
 - appArgsIfaceTypesForAllTyFlags :: IfaceAppArgs -> [(IfaceType, ForAllTyFlag)]
 - newtype SuppressBndrSig = SuppressBndrSig Bool
 - newtype UseBndrParens = UseBndrParens Bool
 - newtype PrintExplicitKinds = PrintExplicitKinds Bool
 - pprIfaceType :: IfaceType -> SDoc
 - pprParendIfaceType :: IfaceType -> SDoc
 - pprPrecIfaceType :: PprPrec -> IfaceType -> SDoc
 - pprIfaceContext :: PprPrec -> [IfacePredType] -> SDoc
 - pprIfaceContextArr :: [IfacePredType] -> SDoc
 - pprIfaceIdBndr :: IfaceIdBndr -> SDoc
 - pprIfaceLamBndr :: IfaceLamBndr -> SDoc
 - pprIfaceTvBndr :: IfaceTvBndr -> SuppressBndrSig -> UseBndrParens -> SDoc
 - pprIfaceTyConBinders :: SuppressBndrSig -> [IfaceTyConBinder] -> SDoc
 - pprIfaceBndrs :: [IfaceBndr] -> SDoc
 - pprIfaceAppArgs :: IfaceAppArgs -> SDoc
 - pprParendIfaceAppArgs :: IfaceAppArgs -> SDoc
 - pprIfaceForAllPart :: [IfaceForAllBndr] -> [IfacePredType] -> SDoc -> SDoc
 - pprIfaceForAllPartMust :: [IfaceForAllBndr] -> [IfacePredType] -> SDoc -> SDoc
 - pprIfaceForAll :: [IfaceForAllBndr] -> SDoc
 - pprIfaceSigmaType :: ShowForAllFlag -> IfaceType -> SDoc
 - pprIfaceTyLit :: IfaceTyLit -> SDoc
 - pprIfaceCoercion :: IfaceCoercion -> SDoc
 - pprParendIfaceCoercion :: IfaceCoercion -> SDoc
 - splitIfaceSigmaTy :: IfaceType -> ([IfaceForAllBndr], [IfacePredType], IfaceType)
 - pprIfaceTypeApp :: PprPrec -> IfaceTyCon -> IfaceAppArgs -> SDoc
 - pprUserIfaceForAll :: [IfaceForAllBndr] -> SDoc
 - pprIfaceCoTcApp :: PprPrec -> IfaceTyCon -> [IfaceCoercion] -> SDoc
 - pprTyTcApp :: PprPrec -> IfaceTyCon -> IfaceAppArgs -> SDoc
 - pprIfacePrefixApp :: PprPrec -> SDoc -> [SDoc] -> SDoc
 - isIfaceRhoType :: IfaceType -> Bool
 - suppressIfaceInvisibles :: PrintExplicitKinds -> [IfaceTyConBinder] -> [a] -> [a]
 - stripIfaceInvisVars :: PrintExplicitKinds -> [IfaceTyConBinder] -> [IfaceTyConBinder]
 - stripInvisArgs :: PrintExplicitKinds -> IfaceAppArgs -> IfaceAppArgs
 - mkIfaceTySubst :: [(IfLclName, IfaceType)] -> IfaceTySubst
 - substIfaceTyVar :: IfaceTySubst -> IfLclName -> IfaceType
 - substIfaceAppArgs :: IfaceTySubst -> IfaceAppArgs -> IfaceAppArgs
 - inDomIfaceTySubst :: IfaceTySubst -> IfaceTvBndr -> Bool
 - many_ty :: IfaceType
 - pprTypeArrow :: FunTyFlag -> IfaceMult -> SDoc
 
Documentation
type IfLclName = FastString Source #
A kind of universal type, used for types and kinds.
Any time a Type is pretty-printed, it is first converted to an IfaceType
 before being printed. See Note [Pretty printing via Iface syntax] in GHC.Types.TyThing.Ppr
Constructors
Instances
| NFData IfaceType Source # | |
Defined in GHC.Iface.Type  | |
| Binary IfaceType Source # | |
| Outputable IfaceType Source # | |
| Binary (DefMethSpec IfaceType) Source # | |
Defined in GHC.Iface.Type  | |
type IfacePredType = IfaceType Source #
data IfaceCoercion Source #
Constructors
Instances
| NFData IfaceCoercion Source # | |
Defined in GHC.Iface.Type Methods rnf :: IfaceCoercion -> () Source #  | |
| Binary IfaceCoercion Source # | |
Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceCoercion -> IO () Source # put :: BinHandle -> IfaceCoercion -> IO (Bin IfaceCoercion) Source #  | |
| Outputable IfaceCoercion Source # | |
Defined in GHC.Iface.Type Methods ppr :: IfaceCoercion -> SDoc Source #  | |
data IfaceMCoercion Source #
Constructors
| IfaceMRefl | |
| IfaceMCo IfaceCoercion | 
Instances
| NFData IfaceMCoercion Source # | |
Defined in GHC.Iface.Type Methods rnf :: IfaceMCoercion -> () Source #  | |
| Binary IfaceMCoercion Source # | |
Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceMCoercion -> IO () Source # put :: BinHandle -> IfaceMCoercion -> IO (Bin IfaceMCoercion) Source #  | |
data IfaceUnivCoProv Source #
Constructors
| IfacePhantomProv IfaceCoercion | |
| IfaceProofIrrelProv IfaceCoercion | |
| IfacePluginProv String | |
| IfaceCorePrepProv Bool | 
Instances
| NFData IfaceUnivCoProv Source # | |
Defined in GHC.Iface.Type Methods rnf :: IfaceUnivCoProv -> () Source #  | |
| Binary IfaceUnivCoProv Source # | |
Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceUnivCoProv -> IO () Source # put :: BinHandle -> IfaceUnivCoProv -> IO (Bin IfaceUnivCoProv) Source #  | |
data IfaceTyCon Source #
Constructors
| IfaceTyCon | |
Fields  | |
Instances
| NFData IfaceTyCon Source # | |
Defined in GHC.Iface.Type Methods rnf :: IfaceTyCon -> () Source #  | |
| Binary IfaceTyCon Source # | |
Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceTyCon -> IO () Source # put :: BinHandle -> IfaceTyCon -> IO (Bin IfaceTyCon) Source #  | |
| Outputable IfaceTyCon Source # | |
Defined in GHC.Iface.Type Methods ppr :: IfaceTyCon -> SDoc Source #  | |
| Eq IfaceTyCon Source # | |
Defined in GHC.Iface.Type  | |
data IfaceTyConInfo Source #
Constructors
| IfaceTyConInfo | |
Instances
| NFData IfaceTyConInfo Source # | |
Defined in GHC.Iface.Type Methods rnf :: IfaceTyConInfo -> () Source #  | |
| Binary IfaceTyConInfo Source # | |
Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceTyConInfo -> IO () Source # put :: BinHandle -> IfaceTyConInfo -> IO (Bin IfaceTyConInfo) Source #  | |
| Outputable IfaceTyConInfo Source # | |
Defined in GHC.Iface.Type Methods ppr :: IfaceTyConInfo -> SDoc Source #  | |
| Eq IfaceTyConInfo Source # | |
Defined in GHC.Iface.Type Methods (==) :: IfaceTyConInfo -> IfaceTyConInfo -> Bool # (/=) :: IfaceTyConInfo -> IfaceTyConInfo -> Bool #  | |
data IfaceTyConSort Source #
The various types of TyCons which have special, built-in syntax.
Constructors
| IfaceNormalTyCon | a regular tycon  | 
| IfaceTupleTyCon !Arity !TupleSort | a tuple, e.g.   | 
| IfaceSumTyCon !Arity | an unboxed sum, e.g.   | 
| IfaceEqualityTyCon | A heterogeneous equality TyCon (i.e. eqPrimTyCon, eqReprPrimTyCon, heqTyCon) that is actually being applied to two types of the same kind. This affects pretty-printing only: see Note [Equality predicates in IfaceType]  | 
Instances
| NFData IfaceTyConSort Source # | |
Defined in GHC.Iface.Type Methods rnf :: IfaceTyConSort -> () Source #  | |
| Binary IfaceTyConSort Source # | |
Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceTyConSort -> IO () Source # put :: BinHandle -> IfaceTyConSort -> IO (Bin IfaceTyConSort) Source #  | |
| Outputable IfaceTyConSort Source # | |
Defined in GHC.Iface.Type Methods ppr :: IfaceTyConSort -> SDoc Source #  | |
| Eq IfaceTyConSort Source # | |
Defined in GHC.Iface.Type Methods (==) :: IfaceTyConSort -> IfaceTyConSort -> Bool # (/=) :: IfaceTyConSort -> IfaceTyConSort -> Bool #  | |
data IfaceTyLit Source #
Constructors
| IfaceNumTyLit Integer | |
| IfaceStrTyLit FastString | |
| IfaceCharTyLit Char | 
Instances
| NFData IfaceTyLit Source # | |
Defined in GHC.Iface.Type Methods rnf :: IfaceTyLit -> () Source #  | |
| Binary IfaceTyLit Source # | |
Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceTyLit -> IO () Source # put :: BinHandle -> IfaceTyLit -> IO (Bin IfaceTyLit) Source #  | |
| Outputable IfaceTyLit Source # | |
Defined in GHC.Iface.Type Methods ppr :: IfaceTyLit -> SDoc Source #  | |
| Eq IfaceTyLit Source # | |
Defined in GHC.Iface.Type  | |
data IfaceAppArgs Source #
Stores the arguments in a type application as a list.
 See Note [Suppressing invisible arguments].
Constructors
| IA_Nil | |
| IA_Arg IfaceType ForAllTyFlag IfaceAppArgs | 
Instances
| Monoid IfaceAppArgs Source # | |
Defined in GHC.Iface.Type Methods mempty :: IfaceAppArgs Source # mappend :: IfaceAppArgs -> IfaceAppArgs -> IfaceAppArgs Source # mconcat :: [IfaceAppArgs] -> IfaceAppArgs Source #  | |
| Semigroup IfaceAppArgs Source # | |
Defined in GHC.Iface.Type Methods (<>) :: IfaceAppArgs -> IfaceAppArgs -> IfaceAppArgs Source # sconcat :: NonEmpty IfaceAppArgs -> IfaceAppArgs Source # stimes :: Integral b => b -> IfaceAppArgs -> IfaceAppArgs Source #  | |
| NFData IfaceAppArgs Source # | |
Defined in GHC.Iface.Type Methods rnf :: IfaceAppArgs -> () Source #  | |
| Binary IfaceAppArgs Source # | |
Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceAppArgs -> IO () Source # put :: BinHandle -> IfaceAppArgs -> IO (Bin IfaceAppArgs) Source #  | |
| Outputable IfaceAppArgs Source # | |
Defined in GHC.Iface.Type Methods ppr :: IfaceAppArgs -> SDoc Source #  | |
type IfaceContext = [IfacePredType] Source #
Constructors
| IfaceIdBndr !IfaceIdBndr | |
| IfaceTvBndr !IfaceTvBndr | 
data IfaceOneShot Source #
Constructors
| IfaceNoOneShot | |
| IfaceOneShot | 
Instances
| NFData IfaceOneShot Source # | |
Defined in GHC.Iface.Type Methods rnf :: IfaceOneShot -> () Source #  | |
| Binary IfaceOneShot Source # | |
Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceOneShot -> IO () Source # put :: BinHandle -> IfaceOneShot -> IO (Bin IfaceOneShot) Source #  | |
| Outputable IfaceOneShot Source # | |
Defined in GHC.Iface.Type Methods ppr :: IfaceOneShot -> SDoc Source #  | |
type IfaceLamBndr = (IfaceBndr, IfaceOneShot) Source #
type IfaceTvBndr = (IfLclName, IfaceKind) Source #
data ForAllTyFlag Source #
ForAllTyFlag
Is something required to appear in source Haskell (Required),
 permitted by request (Specified) (visible type application), or
 prohibited entirely from appearing in source Haskell (Inferred)?
 See Note [VarBndrs, ForAllTyBinders, TyConBinders, and visibility] in GHC.Core.TyCo.Rep
Constructors
| Invisible Specificity | |
| Required | 
Bundled Patterns
| pattern Specified :: ForAllTyFlag | |
| pattern Inferred :: ForAllTyFlag | 
Instances
The non-dependent version of ForAllTyFlag.
 See Note [FunTyFlag]
 Appears here partly so that it's together with its friends ForAllTyFlag
 and ForallVisFlag, but also because it is used in IfaceType, rather
 early in the compilation chain
Instances
| Data FunTyFlag Source # | |
Defined in GHC.Types.Var Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FunTyFlag -> c FunTyFlag Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FunTyFlag Source # toConstr :: FunTyFlag -> Constr Source # dataTypeOf :: FunTyFlag -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FunTyFlag) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FunTyFlag) Source # gmapT :: (forall b. Data b => b -> b) -> FunTyFlag -> FunTyFlag Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FunTyFlag -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FunTyFlag -> r Source # gmapQ :: (forall d. Data d => d -> u) -> FunTyFlag -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> FunTyFlag -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FunTyFlag -> m FunTyFlag Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FunTyFlag -> m FunTyFlag Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FunTyFlag -> m FunTyFlag Source #  | |
| Binary FunTyFlag Source # | |
| Outputable FunTyFlag Source # | |
| Eq FunTyFlag Source # | |
| Ord FunTyFlag Source # | |
data ShowForAllFlag Source #
Show forall flag
Unconditionally show the forall quantifier with (ShowForAllMust)
 or when (ShowForAllWhen) the names used are free in the binder
 or when compiling with -fprint-explicit-foralls.
Constructors
| ShowForAllMust | |
| ShowForAllWhen | 
Constructors
| ShowSub | |
Fields  | |
data ShowHowMuch Source #
Constructors
| ShowHeader AltPpr | Header information only, not rhs  | 
| ShowSome [OccName] AltPpr | Show only some sub-components. Specifically, 
  | 
| ShowIface | Everything including GHC-internal information (used in --show-iface)  | 
Instances
| Outputable ShowHowMuch Source # | |
Defined in GHC.Iface.Type Methods ppr :: ShowHowMuch -> SDoc Source #  | |
mkIfaceForAllTvBndr :: ForAllTyFlag -> IfaceTvBndr -> IfaceForAllBndr Source #
Make an IfaceForAllBndr from an IfaceTvBndr.
mkIfaceTyConKind :: [IfaceTyConBinder] -> IfaceKind -> IfaceKind Source #
Build the tyConKind from the binders and the result kind.
 Keep in sync with mkTyConKind in GHC.Core.TyCon.
ifForAllBndrVar :: IfaceForAllBndr -> IfaceBndr Source #
Extract an IfaceBndr from an IfaceForAllBndr.
ifForAllBndrName :: IfaceForAllBndr -> IfLclName Source #
Extract the variable name from an IfaceForAllBndr.
ifaceBndrName :: IfaceBndr -> IfLclName Source #
ifTyConBinderVar :: IfaceTyConBinder -> IfaceBndr Source #
Extract an IfaceBndr from an IfaceTyConBinder.
ifTyConBinderName :: IfaceTyConBinder -> IfLclName Source #
Extract the variable name from an IfaceTyConBinder.
isIfaceLiftedTypeKind :: IfaceKind -> Bool Source #
Returns true for Type or (TYPE LiftedRep)
appArgsIfaceTypes :: IfaceAppArgs -> [IfaceType] Source #
newtype SuppressBndrSig Source #
Do we want to suppress kind annotations on binders? See Note [Suppressing binder signatures]
Constructors
| SuppressBndrSig Bool | 
newtype UseBndrParens Source #
Constructors
| UseBndrParens Bool | 
newtype PrintExplicitKinds Source #
Constructors
| PrintExplicitKinds Bool | 
pprIfaceType :: IfaceType -> SDoc Source #
pprParendIfaceType :: IfaceType -> SDoc Source #
pprIfaceContext :: PprPrec -> [IfacePredType] -> SDoc Source #
Prints a context or () if empty
 You give it the context precedence
pprIfaceContextArr :: [IfacePredType] -> SDoc Source #
Prints "(C a, D b) =>", including the arrow.
 Used when we want to print a context in a type, so we
 use funPrec to decide whether to parenthesise a singleton
 predicate; e.g.   Num a => a -> a
pprIfaceIdBndr :: IfaceIdBndr -> SDoc Source #
pprIfaceLamBndr :: IfaceLamBndr -> SDoc Source #
pprIfaceTvBndr :: IfaceTvBndr -> SuppressBndrSig -> UseBndrParens -> SDoc Source #
pprIfaceTyConBinders :: SuppressBndrSig -> [IfaceTyConBinder] -> SDoc Source #
pprIfaceBndrs :: [IfaceBndr] -> SDoc Source #
pprIfaceAppArgs :: IfaceAppArgs -> SDoc Source #
pprIfaceForAllPart :: [IfaceForAllBndr] -> [IfacePredType] -> SDoc -> SDoc Source #
pprIfaceForAllPartMust :: [IfaceForAllBndr] -> [IfacePredType] -> SDoc -> SDoc Source #
Like pprIfaceForAllPart, but always uses an explicit forall.
pprIfaceForAll :: [IfaceForAllBndr] -> SDoc Source #
Render the "forall ... ." or "forall ... ->" bit of a type.
pprIfaceSigmaType :: ShowForAllFlag -> IfaceType -> SDoc Source #
pprIfaceTyLit :: IfaceTyLit -> SDoc Source #
pprIfaceCoercion :: IfaceCoercion -> SDoc Source #
splitIfaceSigmaTy :: IfaceType -> ([IfaceForAllBndr], [IfacePredType], IfaceType) Source #
pprIfaceTypeApp :: PprPrec -> IfaceTyCon -> IfaceAppArgs -> SDoc Source #
pprUserIfaceForAll :: [IfaceForAllBndr] -> SDoc Source #
pprIfaceCoTcApp :: PprPrec -> IfaceTyCon -> [IfaceCoercion] -> SDoc Source #
pprTyTcApp :: PprPrec -> IfaceTyCon -> IfaceAppArgs -> SDoc Source #
isIfaceRhoType :: IfaceType -> Bool Source #
suppressIfaceInvisibles :: PrintExplicitKinds -> [IfaceTyConBinder] -> [a] -> [a] Source #
mkIfaceTySubst :: [(IfLclName, IfaceType)] -> IfaceTySubst Source #
substIfaceTyVar :: IfaceTySubst -> IfLclName -> IfaceType Source #
substIfaceAppArgs :: IfaceTySubst -> IfaceAppArgs -> IfaceAppArgs Source #
inDomIfaceTySubst :: IfaceTySubst -> IfaceTvBndr -> Bool Source #