IfaceSyn

ghc-8.0.0.20160204: The GHC API

Safe Haskell | None
Language | Haskell2010

IfaceSyn

Synopsis

- module IfaceType
- data IfaceDecl
  - = IfaceId {
    - ifName :: IfaceTopBndr
    - ifType :: IfaceType
    - ifIdDetails :: IfaceIdDetails
    - ifIdInfo :: IfaceIdInfo
    }
  - | IfaceData {
    - ifName :: IfaceTopBndr
    - ifKind :: IfaceType
    - ifCType :: Maybe CType
    - ifTyVars :: [IfaceTvBndr]
    - ifRoles :: [Role]
    - ifCtxt :: IfaceContext
    - ifCons :: IfaceConDecls
    - ifRec :: RecFlag
    - ifGadtSyntax :: Bool
    - ifParent :: IfaceTyConParent
    }
  - | IfaceSynonym {
    - ifName :: IfaceTopBndr
    - ifTyVars :: [IfaceTvBndr]
    - ifRoles :: [Role]
    - ifSynKind :: IfaceKind
    - ifSynRhs :: IfaceType
    }
  - | IfaceFamily {
    - ifName :: IfaceTopBndr
    - ifTyVars :: [IfaceTvBndr]
    - ifResVar :: Maybe IfLclName
    - ifFamKind :: IfaceKind
    - ifFamFlav :: IfaceFamTyConFlav
    - ifFamInj :: Injectivity
    }
  - | IfaceClass {
    - ifCtxt :: IfaceContext
    - ifName :: IfaceTopBndr
    - ifTyVars :: [IfaceTvBndr]
    - ifRoles :: [Role]
    - ifKind :: IfaceType
    - ifFDs :: [FunDep FastString]
    - ifATs :: [IfaceAT]
    - ifSigs :: [IfaceClassOp]
    - ifMinDef :: BooleanFormula IfLclName
    - ifRec :: RecFlag
    }
  - | IfaceAxiom {
    - ifName :: IfaceTopBndr
    - ifTyCon :: IfaceTyCon
    - ifRole :: Role
    - ifAxBranches :: [IfaceAxBranch]
    }
  - | IfacePatSyn {
    - ifName :: IfaceTopBndr
    - ifPatIsInfix :: Bool
    - ifPatMatcher :: (IfExtName, Bool)
    - ifPatBuilder :: Maybe (IfExtName, Bool)
    - ifPatUnivTvs :: [IfaceTvBndr]
    - ifPatExTvs :: [IfaceTvBndr]
    - ifPatProvCtxt :: IfaceContext
    - ifPatReqCtxt :: IfaceContext
    - ifPatArgs :: [IfaceType]
    - ifPatTy :: IfaceType
    - ifFieldLabels :: [FieldLabel]
    }
- data IfaceFamTyConFlav
  - = IfaceDataFamilyTyCon
  - | IfaceOpenSynFamilyTyCon
  - | IfaceClosedSynFamilyTyCon (Maybe (IfExtName, [IfaceAxBranch]))
  - | IfaceAbstractClosedSynFamilyTyCon
  - | IfaceBuiltInSynFamTyCon
- data IfaceClassOp = IfaceClassOp IfaceTopBndr IfaceType (Maybe (DefMethSpec IfaceType))
- data IfaceAT = IfaceAT IfaceDecl (Maybe IfaceType)
- data IfaceConDecl = IfCon {
  - ifConOcc :: IfaceTopBndr
  - ifConWrapper :: Bool
  - ifConInfix :: Bool
  - ifConExTvs :: [IfaceTvBndr]
  - ifConEqSpec :: IfaceEqSpec
  - ifConCtxt :: IfaceContext
  - ifConArgTys :: [IfaceType]
  - ifConFields :: [IfaceTopBndr]
  - ifConStricts :: [IfaceBang]
  - ifConSrcStricts :: [IfaceSrcBang]
  }
- data IfaceConDecls
  - = IfAbstractTyCon Bool
  - | IfDataTyCon [IfaceConDecl] Bool [FieldLabelString]
  - | IfNewTyCon IfaceConDecl Bool [FieldLabelString]
- type IfaceEqSpec = [(IfLclName, IfaceType)]
- data IfaceExpr
  - = IfaceLcl IfLclName
  - | IfaceExt IfExtName
  - | IfaceType IfaceType
  - | IfaceCo IfaceCoercion
  - | IfaceTuple TupleSort [IfaceExpr]
  - | IfaceLam IfaceLamBndr IfaceExpr
  - | IfaceApp IfaceExpr IfaceExpr
  - | IfaceCase IfaceExpr IfLclName [IfaceAlt]
  - | IfaceECase IfaceExpr IfaceType
  - | IfaceLet IfaceBinding IfaceExpr
  - | IfaceCast IfaceExpr IfaceCoercion
  - | IfaceLit Literal
  - | IfaceFCall ForeignCall IfaceType
  - | IfaceTick IfaceTickish IfaceExpr
- type IfaceAlt = (IfaceConAlt, [IfLclName], IfaceExpr)
- data IfaceLetBndr = IfLetBndr IfLclName IfaceType IfaceIdInfo
- data IfaceBinding
  - = IfaceNonRec IfaceLetBndr IfaceExpr
  - | IfaceRec [(IfaceLetBndr, IfaceExpr)]
- data IfaceConAlt
  - = IfaceDefault
  - | IfaceDataAlt IfExtName
  - | IfaceLitAlt Literal
- data IfaceIdInfo
  - = NoInfo
  - | HasInfo [IfaceInfoItem]
- data IfaceIdDetails
  - = IfVanillaId
  - | IfRecSelId (Either IfaceTyCon IfaceDecl) Bool
  - | IfDFunId
- data IfaceUnfolding
  - = IfCoreUnfold Bool IfaceExpr
  - | IfCompulsory IfaceExpr
  - | IfInlineRule Arity Bool Bool IfaceExpr
  - | IfDFunUnfold [IfaceBndr] [IfaceExpr]
- data IfaceInfoItem
  - = HsArity Arity
  - | HsStrictness StrictSig
  - | HsInline InlinePragma
  - | HsUnfold Bool IfaceUnfolding
  - | HsNoCafRefs
- data IfaceRule = IfaceRule {
  - ifRuleName :: RuleName
  - ifActivation :: Activation
  - ifRuleBndrs :: [IfaceBndr]
  - ifRuleHead :: IfExtName
  - ifRuleArgs :: [IfaceExpr]
  - ifRuleRhs :: IfaceExpr
  - ifRuleAuto :: Bool
  - ifRuleOrph :: IsOrphan
  }
- data IfaceAnnotation = IfaceAnnotation {
  - ifAnnotatedTarget :: IfaceAnnTarget
  - ifAnnotatedValue :: AnnPayload
  }
- type IfaceAnnTarget = AnnTarget OccName
- data IfaceClsInst = IfaceClsInst {
  - ifInstCls :: IfExtName
  - ifInstTys :: [Maybe IfaceTyCon]
  - ifDFun :: IfExtName
  - ifOFlag :: OverlapFlag
  - ifInstOrph :: IsOrphan
  }
- data IfaceFamInst = IfaceFamInst {
  - ifFamInstFam :: IfExtName
  - ifFamInstTys :: [Maybe IfaceTyCon]
  - ifFamInstAxiom :: IfExtName
  - ifFamInstOrph :: IsOrphan
  }
- data IfaceTickish
  - = IfaceHpcTick Module Int
  - | IfaceSCC CostCentre Bool Bool
  - | IfaceSource RealSrcSpan String
- data IfaceBang
  - = IfNoBang
  - | IfStrict
  - | IfUnpack
  - | IfUnpackCo IfaceCoercion
- data IfaceSrcBang = IfSrcBang SrcUnpackedness SrcStrictness
- data SrcUnpackedness
  - = SrcUnpack
  - | SrcNoUnpack
  - | NoSrcUnpack
- data SrcStrictness
  - = SrcLazy
  - | SrcStrict
  - | NoSrcStrict
- data IfaceAxBranch = IfaceAxBranch {
  - ifaxbTyVars :: [IfaceTvBndr]
  - ifaxbCoVars :: [IfaceIdBndr]
  - ifaxbLHS :: IfaceTcArgs
  - ifaxbRoles :: [Role]
  - ifaxbRHS :: IfaceType
  - ifaxbIncomps :: [BranchIndex]
  }
- data IfaceTyConParent
  - = IfNoParent
  - | IfDataInstance IfExtName IfaceTyCon IfaceTcArgs
- ifaceDeclImplicitBndrs :: IfaceDecl -> [OccName]
- visibleIfConDecls :: IfaceConDecls -> [IfaceConDecl]
- ifaceConDeclFields :: IfaceConDecls -> [FieldLbl OccName]
- ifaceDeclFingerprints :: Fingerprint -> IfaceDecl -> [(OccName, Fingerprint)]
- freeNamesIfDecl :: IfaceDecl -> NameSet
- freeNamesIfRule :: IfaceRule -> NameSet
- freeNamesIfFamInst :: IfaceFamInst -> NameSet
- pprIfaceExpr :: (SDoc -> SDoc) -> IfaceExpr -> SDoc
- pprIfaceDecl :: ShowSub -> IfaceDecl -> SDoc
- data ShowSub = ShowSub {
  - ss_ppr_bndr :: OccName -> SDoc
  - ss_how_much :: ShowHowMuch
  }
- data ShowHowMuch
  - = ShowHeader
  - | ShowSome [OccName]
  - | ShowIface

# Documentation

module IfaceType

data IfaceDecl Source

Constructors

IfaceId |
Fields ifName :: IfaceTopBndr ifType :: IfaceType ifIdDetails :: IfaceIdDetails ifIdInfo :: IfaceIdInfo
IfaceData |
Fields ifName :: IfaceTopBndr ifKind :: IfaceType ifCType :: Maybe CType ifTyVars :: [IfaceTvBndr] ifRoles :: [Role] ifCtxt :: IfaceContext ifCons :: IfaceConDecls ifRec :: RecFlag ifGadtSyntax :: Bool ifParent :: IfaceTyConParent
IfaceSynonym |
Fields ifName :: IfaceTopBndr ifTyVars :: [IfaceTvBndr] ifRoles :: [Role] ifSynKind :: IfaceKind ifSynRhs :: IfaceType
IfaceFamily |
Fields ifName :: IfaceTopBndr ifTyVars :: [IfaceTvBndr] ifResVar :: Maybe IfLclName ifFamKind :: IfaceKind ifFamFlav :: IfaceFamTyConFlav ifFamInj :: Injectivity
IfaceClass |
Fields ifCtxt :: IfaceContext ifName :: IfaceTopBndr ifTyVars :: [IfaceTvBndr] ifRoles :: [Role] ifKind :: IfaceType ifFDs :: [FunDep FastString] ifATs :: [IfaceAT] ifSigs :: [IfaceClassOp] ifMinDef :: BooleanFormula IfLclName ifRec :: RecFlag
IfaceAxiom |
Fields ifName :: IfaceTopBndr ifTyCon :: IfaceTyCon ifRole :: Role ifAxBranches :: [IfaceAxBranch]
IfacePatSyn |
Fields ifName :: IfaceTopBndr ifPatIsInfix :: Bool ifPatMatcher :: (IfExtName, Bool) ifPatBuilder :: Maybe (IfExtName, Bool) ifPatUnivTvs :: [IfaceTvBndr] ifPatExTvs :: [IfaceTvBndr] ifPatProvCtxt :: IfaceContext ifPatReqCtxt :: IfaceContext ifPatArgs :: [IfaceType] ifPatTy :: IfaceType ifFieldLabels :: [FieldLabel]

Instances

Outputable IfaceDecl |
Methods ppr :: IfaceDecl -> SDoc Source pprPrec :: Rational -> IfaceDecl -> SDoc Source
Binary IfaceDecl |
Methods put_ :: BinHandle -> IfaceDecl -> IO () Source put :: BinHandle -> IfaceDecl -> IO (Bin IfaceDecl) Source get :: BinHandle -> IO IfaceDecl Source
HasOccName IfaceDecl |
Methods occName :: IfaceDecl -> OccName Source

data IfaceFamTyConFlav Source

Constructors

IfaceDataFamilyTyCon |
IfaceOpenSynFamilyTyCon |
IfaceClosedSynFamilyTyCon (Maybe (IfExtName, [IfaceAxBranch])) | Name of associated axiom and branches for pretty printing purposes, or `Nothing` for an empty closed family without an axiom
IfaceAbstractClosedSynFamilyTyCon |
IfaceBuiltInSynFamTyCon |

Instances

Binary IfaceFamTyConFlav |
Methods put_ :: BinHandle -> IfaceFamTyConFlav -> IO () Source put :: BinHandle -> IfaceFamTyConFlav -> IO (Bin IfaceFamTyConFlav) Source get :: BinHandle -> IO IfaceFamTyConFlav Source

data IfaceClassOp Source

Constructors

IfaceClassOp IfaceTopBndr IfaceType (Maybe (DefMethSpec IfaceType)) |

Instances

Outputable IfaceClassOp |
Methods ppr :: IfaceClassOp -> SDoc Source pprPrec :: Rational -> IfaceClassOp -> SDoc Source
Binary IfaceClassOp |
Methods put_ :: BinHandle -> IfaceClassOp -> IO () Source put :: BinHandle -> IfaceClassOp -> IO (Bin IfaceClassOp) Source get :: BinHandle -> IO IfaceClassOp Source
HasOccName IfaceClassOp |
Methods occName :: IfaceClassOp -> OccName Source

data IfaceAT Source

Constructors

IfaceAT IfaceDecl (Maybe IfaceType) |

Instances

Outputable IfaceAT |
Methods ppr :: IfaceAT -> SDoc Source pprPrec :: Rational -> IfaceAT -> SDoc Source
Binary IfaceAT |
Methods put_ :: BinHandle -> IfaceAT -> IO () Source put :: BinHandle -> IfaceAT -> IO (Bin IfaceAT) Source get :: BinHandle -> IO IfaceAT Source

data IfaceConDecl Source

Constructors

IfCon |
Fields ifConOcc :: IfaceTopBndr ifConWrapper :: Bool ifConInfix :: Bool ifConExTvs :: [IfaceTvBndr] ifConEqSpec :: IfaceEqSpec ifConCtxt :: IfaceContext ifConArgTys :: [IfaceType] ifConFields :: [IfaceTopBndr] ifConStricts :: [IfaceBang] ifConSrcStricts :: [IfaceSrcBang]

Instances

Binary IfaceConDecl |
Methods put_ :: BinHandle -> IfaceConDecl -> IO () Source put :: BinHandle -> IfaceConDecl -> IO (Bin IfaceConDecl) Source get :: BinHandle -> IO IfaceConDecl Source
HasOccName IfaceConDecl |
Methods occName :: IfaceConDecl -> OccName Source

data IfaceConDecls Source

Constructors

IfAbstractTyCon Bool |
IfDataTyCon [IfaceConDecl] Bool [FieldLabelString] |
IfNewTyCon IfaceConDecl Bool [FieldLabelString] |

Instances

Binary IfaceConDecls |
Methods put_ :: BinHandle -> IfaceConDecls -> IO () Source put :: BinHandle -> IfaceConDecls -> IO (Bin IfaceConDecls) Source get :: BinHandle -> IO IfaceConDecls Source

type IfaceEqSpec = [(IfLclName, IfaceType)] Source

data IfaceExpr Source

Constructors

IfaceLcl IfLclName |
IfaceExt IfExtName |
IfaceType IfaceType |
IfaceCo IfaceCoercion |
IfaceTuple TupleSort [IfaceExpr] |
IfaceLam IfaceLamBndr IfaceExpr |
IfaceApp IfaceExpr IfaceExpr |
IfaceCase IfaceExpr IfLclName [IfaceAlt] |
IfaceECase IfaceExpr IfaceType |
IfaceLet IfaceBinding IfaceExpr |
IfaceCast IfaceExpr IfaceCoercion |
IfaceLit Literal |
IfaceFCall ForeignCall IfaceType |
IfaceTick IfaceTickish IfaceExpr |

Instances

Outputable IfaceExpr |
Methods ppr :: IfaceExpr -> SDoc Source pprPrec :: Rational -> IfaceExpr -> SDoc Source
Binary IfaceExpr |
Methods put_ :: BinHandle -> IfaceExpr -> IO () Source put :: BinHandle -> IfaceExpr -> IO (Bin IfaceExpr) Source get :: BinHandle -> IO IfaceExpr Source

type IfaceAlt = (IfaceConAlt, [IfLclName], IfaceExpr) Source

data IfaceLetBndr Source

Constructors

IfLetBndr IfLclName IfaceType IfaceIdInfo |

Instances

Binary IfaceLetBndr |
Methods put_ :: BinHandle -> IfaceLetBndr -> IO () Source put :: BinHandle -> IfaceLetBndr -> IO (Bin IfaceLetBndr) Source get :: BinHandle -> IO IfaceLetBndr Source

data IfaceBinding Source

Constructors

IfaceNonRec IfaceLetBndr IfaceExpr |
IfaceRec [(IfaceLetBndr, IfaceExpr)] |

Instances

Binary IfaceBinding |
Methods put_ :: BinHandle -> IfaceBinding -> IO () Source put :: BinHandle -> IfaceBinding -> IO (Bin IfaceBinding) Source get :: BinHandle -> IO IfaceBinding Source

data IfaceConAlt Source

Constructors

IfaceDefault |
IfaceDataAlt IfExtName |
IfaceLitAlt Literal |

Instances

Outputable IfaceConAlt |
Methods ppr :: IfaceConAlt -> SDoc Source pprPrec :: Rational -> IfaceConAlt -> SDoc Source
Binary IfaceConAlt |
Methods put_ :: BinHandle -> IfaceConAlt -> IO () Source put :: BinHandle -> IfaceConAlt -> IO (Bin IfaceConAlt) Source get :: BinHandle -> IO IfaceConAlt Source

data IfaceIdInfo Source

Constructors

NoInfo |
HasInfo [IfaceInfoItem] |

Instances

Outputable IfaceIdInfo |
Methods ppr :: IfaceIdInfo -> SDoc Source pprPrec :: Rational -> IfaceIdInfo -> SDoc Source
Binary IfaceIdInfo |
Methods put_ :: BinHandle -> IfaceIdInfo -> IO () Source put :: BinHandle -> IfaceIdInfo -> IO (Bin IfaceIdInfo) Source get :: BinHandle -> IO IfaceIdInfo Source

data IfaceIdDetails Source

Constructors

IfVanillaId |
IfRecSelId (Either IfaceTyCon IfaceDecl) Bool |
IfDFunId |

Instances

Outputable IfaceIdDetails |
Methods ppr :: IfaceIdDetails -> SDoc Source pprPrec :: Rational -> IfaceIdDetails -> SDoc Source
Binary IfaceIdDetails |
Methods put_ :: BinHandle -> IfaceIdDetails -> IO () Source put :: BinHandle -> IfaceIdDetails -> IO (Bin IfaceIdDetails) Source get :: BinHandle -> IO IfaceIdDetails Source

data IfaceUnfolding Source

Constructors

IfCoreUnfold Bool IfaceExpr |
IfCompulsory IfaceExpr |
IfInlineRule Arity Bool Bool IfaceExpr |
IfDFunUnfold [IfaceBndr] [IfaceExpr] |

Instances

Outputable IfaceUnfolding |
Methods ppr :: IfaceUnfolding -> SDoc Source pprPrec :: Rational -> IfaceUnfolding -> SDoc Source
Binary IfaceUnfolding |
Methods put_ :: BinHandle -> IfaceUnfolding -> IO () Source put :: BinHandle -> IfaceUnfolding -> IO (Bin IfaceUnfolding) Source get :: BinHandle -> IO IfaceUnfolding Source

data IfaceInfoItem Source

Constructors

HsArity Arity |
HsStrictness StrictSig |
HsInline InlinePragma |
HsUnfold Bool IfaceUnfolding |
HsNoCafRefs |

Instances

Outputable IfaceInfoItem |
Methods ppr :: IfaceInfoItem -> SDoc Source pprPrec :: Rational -> IfaceInfoItem -> SDoc Source
Binary IfaceInfoItem |
Methods put_ :: BinHandle -> IfaceInfoItem -> IO () Source put :: BinHandle -> IfaceInfoItem -> IO (Bin IfaceInfoItem) Source get :: BinHandle -> IO IfaceInfoItem Source

data IfaceRule Source

Constructors

IfaceRule |
Fields ifRuleName :: RuleName ifActivation :: Activation ifRuleBndrs :: [IfaceBndr] ifRuleHead :: IfExtName ifRuleArgs :: [IfaceExpr] ifRuleRhs :: IfaceExpr ifRuleAuto :: Bool ifRuleOrph :: IsOrphan

Instances

Outputable IfaceRule |
Methods ppr :: IfaceRule -> SDoc Source pprPrec :: Rational -> IfaceRule -> SDoc Source
Binary IfaceRule |
Methods put_ :: BinHandle -> IfaceRule -> IO () Source put :: BinHandle -> IfaceRule -> IO (Bin IfaceRule) Source get :: BinHandle -> IO IfaceRule Source

data IfaceAnnotation Source

Constructors

IfaceAnnotation |
Fields ifAnnotatedTarget :: IfaceAnnTarget ifAnnotatedValue :: AnnPayload

Instances

Outputable IfaceAnnotation |
Methods ppr :: IfaceAnnotation -> SDoc Source pprPrec :: Rational -> IfaceAnnotation -> SDoc Source
Binary IfaceAnnotation |
Methods put_ :: BinHandle -> IfaceAnnotation -> IO () Source put :: BinHandle -> IfaceAnnotation -> IO (Bin IfaceAnnotation) Source get :: BinHandle -> IO IfaceAnnotation Source

type IfaceAnnTarget = AnnTarget OccName Source

data IfaceClsInst Source

Constructors

IfaceClsInst |
Fields ifInstCls :: IfExtName ifInstTys :: [Maybe IfaceTyCon] ifDFun :: IfExtName ifOFlag :: OverlapFlag ifInstOrph :: IsOrphan

Instances

Outputable IfaceClsInst |
Methods ppr :: IfaceClsInst -> SDoc Source pprPrec :: Rational -> IfaceClsInst -> SDoc Source
Binary IfaceClsInst |
Methods put_ :: BinHandle -> IfaceClsInst -> IO () Source put :: BinHandle -> IfaceClsInst -> IO (Bin IfaceClsInst) Source get :: BinHandle -> IO IfaceClsInst Source

data IfaceFamInst Source

Constructors

IfaceFamInst |
Fields ifFamInstFam :: IfExtName ifFamInstTys :: [Maybe IfaceTyCon] ifFamInstAxiom :: IfExtName ifFamInstOrph :: IsOrphan

Instances

Outputable IfaceFamInst |
Methods ppr :: IfaceFamInst -> SDoc Source pprPrec :: Rational -> IfaceFamInst -> SDoc Source
Binary IfaceFamInst |
Methods put_ :: BinHandle -> IfaceFamInst -> IO () Source put :: BinHandle -> IfaceFamInst -> IO (Bin IfaceFamInst) Source get :: BinHandle -> IO IfaceFamInst Source

data IfaceTickish Source

Constructors

IfaceHpcTick Module Int |
IfaceSCC CostCentre Bool Bool |
IfaceSource RealSrcSpan String |

Instances

Binary IfaceTickish |
Methods put_ :: BinHandle -> IfaceTickish -> IO () Source put :: BinHandle -> IfaceTickish -> IO (Bin IfaceTickish) Source get :: BinHandle -> IO IfaceTickish Source

data IfaceBang Source

This corresponds to an HsImplBang; that is, the final implementation decision about the data constructor arg

Constructors

IfNoBang |
IfStrict |
IfUnpack |
IfUnpackCo IfaceCoercion |

Instances

Binary IfaceBang |
Methods put_ :: BinHandle -> IfaceBang -> IO () Source put :: BinHandle -> IfaceBang -> IO (Bin IfaceBang) Source get :: BinHandle -> IO IfaceBang Source

data IfaceSrcBang Source

This corresponds to HsSrcBang

Constructors

IfSrcBang SrcUnpackedness SrcStrictness |

Instances

Binary IfaceSrcBang |
Methods put_ :: BinHandle -> IfaceSrcBang -> IO () Source put :: BinHandle -> IfaceSrcBang -> IO (Bin IfaceSrcBang) Source get :: BinHandle -> IO IfaceSrcBang Source

data SrcUnpackedness Source

What unpackedness the user requested

Constructors

SrcUnpack | {--} specified
SrcNoUnpack | {--} specified
NoSrcUnpack | no unpack pragma

Instances

Eq SrcUnpackedness |
Methods (==) :: SrcUnpackedness -> SrcUnpackedness -> Bool (/=) :: SrcUnpackedness -> SrcUnpackedness -> Bool
Data SrcUnpackedness |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SrcUnpackedness -> c SrcUnpackedness Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SrcUnpackedness Source toConstr :: SrcUnpackedness -> Constr Source dataTypeOf :: SrcUnpackedness -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c SrcUnpackedness) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SrcUnpackedness) Source gmapT :: (forall b. Data b => b -> b) -> SrcUnpackedness -> SrcUnpackedness Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SrcUnpackedness -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SrcUnpackedness -> r Source gmapQ :: (forall d. Data d => d -> u) -> SrcUnpackedness -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> SrcUnpackedness -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> SrcUnpackedness -> m SrcUnpackedness Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcUnpackedness -> m SrcUnpackedness Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcUnpackedness -> m SrcUnpackedness Source
Outputable SrcUnpackedness |
Methods ppr :: SrcUnpackedness -> SDoc Source pprPrec :: Rational -> SrcUnpackedness -> SDoc Source
Binary SrcUnpackedness |
Methods put_ :: BinHandle -> SrcUnpackedness -> IO () Source put :: BinHandle -> SrcUnpackedness -> IO (Bin SrcUnpackedness) Source get :: BinHandle -> IO SrcUnpackedness Source

data SrcStrictness Source

What strictness annotation the user wrote

Constructors

SrcLazy | Lazy, ie '~'
SrcStrict | Strict, ie `!`
NoSrcStrict | no strictness annotation

Instances

Eq SrcStrictness |
Methods (==) :: SrcStrictness -> SrcStrictness -> Bool (/=) :: SrcStrictness -> SrcStrictness -> Bool
Data SrcStrictness |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SrcStrictness -> c SrcStrictness Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SrcStrictness Source toConstr :: SrcStrictness -> Constr Source dataTypeOf :: SrcStrictness -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c SrcStrictness) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SrcStrictness) Source gmapT :: (forall b. Data b => b -> b) -> SrcStrictness -> SrcStrictness Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SrcStrictness -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SrcStrictness -> r Source gmapQ :: (forall d. Data d => d -> u) -> SrcStrictness -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> SrcStrictness -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> SrcStrictness -> m SrcStrictness Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcStrictness -> m SrcStrictness Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcStrictness -> m SrcStrictness Source
Outputable SrcStrictness |
Methods ppr :: SrcStrictness -> SDoc Source pprPrec :: Rational -> SrcStrictness -> SDoc Source
Binary SrcStrictness |
Methods put_ :: BinHandle -> SrcStrictness -> IO () Source put :: BinHandle -> SrcStrictness -> IO (Bin SrcStrictness) Source get :: BinHandle -> IO SrcStrictness Source

data IfaceAxBranch Source

Constructors

IfaceAxBranch |
Fields ifaxbTyVars :: [IfaceTvBndr] ifaxbCoVars :: [IfaceIdBndr] ifaxbLHS :: IfaceTcArgs ifaxbRoles :: [Role] ifaxbRHS :: IfaceType ifaxbIncomps :: [BranchIndex]

Instances

Binary IfaceAxBranch |
Methods put_ :: BinHandle -> IfaceAxBranch -> IO () Source put :: BinHandle -> IfaceAxBranch -> IO (Bin IfaceAxBranch) Source get :: BinHandle -> IO IfaceAxBranch Source

data IfaceTyConParent Source

Constructors

IfNoParent |
IfDataInstance IfExtName IfaceTyCon IfaceTcArgs |

Instances

Outputable IfaceTyConParent |
Methods ppr :: IfaceTyConParent -> SDoc Source pprPrec :: Rational -> IfaceTyConParent -> SDoc Source
Binary IfaceTyConParent |
Methods put_ :: BinHandle -> IfaceTyConParent -> IO () Source put :: BinHandle -> IfaceTyConParent -> IO (Bin IfaceTyConParent) Source get :: BinHandle -> IO IfaceTyConParent Source

ifaceDeclImplicitBndrs :: IfaceDecl -> [OccName] Source

visibleIfConDecls :: IfaceConDecls -> [IfaceConDecl] Source

ifaceConDeclFields :: IfaceConDecls -> [FieldLbl OccName] Source

ifaceDeclFingerprints :: Fingerprint -> IfaceDecl -> [(OccName, Fingerprint)] Source

freeNamesIfDecl :: IfaceDecl -> NameSet Source

freeNamesIfRule :: IfaceRule -> NameSet Source

freeNamesIfFamInst :: IfaceFamInst -> NameSet Source

pprIfaceExpr :: (SDoc -> SDoc) -> IfaceExpr -> SDoc Source

Pretty Print an IfaceExpre

The first argument should be a function that adds parens in context that need an atomic value (e.g. function args)

pprIfaceDecl :: ShowSub -> IfaceDecl -> SDoc Source

data ShowSub Source

Constructors

ShowSub |
Fields ss_ppr_bndr :: OccName -> SDoc ss_how_much :: ShowHowMuch

data ShowHowMuch Source

Constructors

ShowHeader |
ShowSome [OccName] |
ShowIface |