Safe Haskell | None |
---|---|
Language | Haskell2010 |
- type TcRnIf a b = IOEnv (Env a b)
- type TcRn = TcRnIf TcGblEnv TcLclEnv
- type TcM = TcRn
- type RnM = TcRn
- type IfM lcl = TcRnIf IfGblEnv lcl
- type IfL = IfM IfLclEnv
- type IfG = IfM ()
- type TcRef a = IORef a
- data Env gbl lcl = Env {}
- data TcGblEnv = TcGblEnv {
- tcg_mod :: Module
- tcg_src :: HscSource
- tcg_sig_of :: Maybe Module
- tcg_impl_rdr_env :: Maybe GlobalRdrEnv
- tcg_rdr_env :: GlobalRdrEnv
- tcg_default :: Maybe [Type]
- tcg_fix_env :: FixityEnv
- tcg_field_env :: RecFieldEnv
- tcg_type_env :: TypeEnv
- tcg_type_env_var :: TcRef TypeEnv
- tcg_inst_env :: InstEnv
- tcg_fam_inst_env :: FamInstEnv
- tcg_ann_env :: AnnEnv
- tcg_exports :: [AvailInfo]
- tcg_imports :: ImportAvails
- tcg_dus :: DefUses
- tcg_used_gres :: TcRef [GlobalRdrElt]
- tcg_keep :: TcRef NameSet
- tcg_th_used :: TcRef Bool
- tcg_th_splice_used :: TcRef Bool
- tcg_dfun_n :: TcRef OccSet
- tcg_rn_exports :: Maybe [Located (IE Name)]
- tcg_rn_imports :: [LImportDecl Name]
- tcg_rn_decls :: Maybe (HsGroup Name)
- tcg_dependent_files :: TcRef [FilePath]
- tcg_th_topdecls :: TcRef [LHsDecl RdrName]
- tcg_th_topnames :: TcRef NameSet
- tcg_th_modfinalizers :: TcRef [Q ()]
- tcg_th_state :: TcRef (Map TypeRep Dynamic)
- tcg_th_remote_state :: TcRef (Maybe (ForeignRef (IORef QState)))
- tcg_ev_binds :: Bag EvBind
- tcg_tr_module :: Maybe Id
- tcg_binds :: LHsBinds Id
- tcg_sigs :: NameSet
- tcg_imp_specs :: [LTcSpecPrag]
- tcg_warns :: Warnings
- tcg_anns :: [Annotation]
- tcg_tcs :: [TyCon]
- tcg_insts :: [ClsInst]
- tcg_fam_insts :: [FamInst]
- tcg_rules :: [LRuleDecl Id]
- tcg_fords :: [LForeignDecl Id]
- tcg_vects :: [LVectDecl Id]
- tcg_patsyns :: [PatSyn]
- tcg_doc_hdr :: Maybe LHsDocString
- tcg_hpc :: AnyHpcUsage
- tcg_self_boot :: SelfBootInfo
- tcg_main :: Maybe Name
- tcg_safeInfer :: TcRef (Bool, WarningMessages)
- tcg_tc_plugins :: [TcPluginSolver]
- tcg_static_wc :: TcRef WantedConstraints
- data TcLclEnv = TcLclEnv {
- tcl_loc :: RealSrcSpan
- tcl_ctxt :: [ErrCtxt]
- tcl_tclvl :: TcLevel
- tcl_th_ctxt :: ThStage
- tcl_th_bndrs :: ThBindEnv
- tcl_arrow_ctxt :: ArrowCtxt
- tcl_rdr :: LocalRdrEnv
- tcl_env :: TcTypeEnv
- tcl_bndrs :: TcIdBinderStack
- tcl_tidy :: TidyEnv
- tcl_tyvars :: TcRef TcTyVarSet
- tcl_lie :: TcRef WantedConstraints
- tcl_errs :: TcRef Messages
- data IfGblEnv = IfGblEnv {
- if_rec_types :: Maybe (Module, IfG TypeEnv)
- data IfLclEnv = IfLclEnv {}
- tcVisibleOrphanMods :: TcGblEnv -> ModuleSet
- data FrontendResult = FrontendTypecheck TcGblEnv
- type ErrCtxt = (Bool, TidyEnv -> TcM (TidyEnv, MsgDoc))
- type RecFieldEnv = NameEnv [FieldLabel]
- data ImportAvails = ImportAvails {
- imp_mods :: ImportedMods
- imp_dep_mods :: ModuleNameEnv (ModuleName, IsBootInterface)
- imp_dep_pkgs :: [UnitId]
- imp_trust_pkgs :: [UnitId]
- imp_trust_own_pkg :: Bool
- imp_orphs :: [Module]
- imp_finsts :: [Module]
- emptyImportAvails :: ImportAvails
- plusImportAvails :: ImportAvails -> ImportAvails -> ImportAvails
- data WhereFrom
- mkModDeps :: [(ModuleName, IsBootInterface)] -> ModuleNameEnv (ModuleName, IsBootInterface)
- type TcTypeEnv = NameEnv TcTyThing
- type TcIdBinderStack = [TcIdBinder]
- data TcIdBinder
- data TcTyThing
- = AGlobal TyThing
- | ATcId {
- tct_id :: TcId
- tct_closed :: TopLevelFlag
- | ATyVar Name TcTyVar
- | ATcTyCon TyCon
- | APromotionErr PromotionErr
- data PromotionErr
- data SelfBootInfo
- = NoSelfBoot
- | SelfBoot { }
- pprTcTyThingCategory :: TcTyThing -> SDoc
- pprPECategory :: PromotionErr -> SDoc
- type DsM = TcRnIf DsGblEnv DsLclEnv
- data DsLclEnv = DsLclEnv {}
- data DsGblEnv = DsGblEnv {
- ds_mod :: Module
- ds_fam_inst_env :: FamInstEnv
- ds_unqual :: PrintUnqualified
- ds_msgs :: IORef Messages
- ds_if_env :: (IfGblEnv, IfLclEnv)
- ds_dph_env :: GlobalRdrEnv
- ds_parr_bi :: PArrBuiltin
- ds_static_binds :: IORef [(Fingerprint, (Id, CoreExpr))]
- data PArrBuiltin = PArrBuiltin {
- lengthPVar :: Var
- replicatePVar :: Var
- singletonPVar :: Var
- mapPVar :: Var
- filterPVar :: Var
- zipPVar :: Var
- crossMapPVar :: Var
- indexPVar :: Var
- emptyPVar :: Var
- appPVar :: Var
- enumFromToPVar :: Var
- enumFromThenToPVar :: Var
- type DsMetaEnv = NameEnv DsMetaVal
- data DsMetaVal
- data ThStage
- data SpliceType
- data PendingStuff
- topStage :: ThStage
- topAnnStage :: ThStage
- topSpliceStage :: ThStage
- type ThLevel = Int
- impLevel :: ThLevel
- outerLevel :: ThLevel
- thLevel :: ThStage -> ThLevel
- data ArrowCtxt
- type TcSigFun = Name -> Maybe TcSigInfo
- data TcSigInfo
- data TcIdSigInfo = TISI {
- sig_bndr :: TcIdSigBndr
- sig_skols :: [(Name, TcTyVar)]
- sig_theta :: TcThetaType
- sig_tau :: TcSigmaType
- sig_ctxt :: UserTypeCtxt
- sig_loc :: SrcSpan
- data TcPatSynInfo = TPSI {}
- data TcIdSigBndr
- findScopedTyVars :: TcType -> [TcTyVar] -> [(Name, TcTyVar)]
- isPartialSig :: TcIdSigInfo -> Bool
- noCompleteSig :: Maybe TcSigInfo -> Bool
- tcSigInfoName :: TcSigInfo -> Name
- completeIdSigPolyId :: TcIdSigInfo -> TcId
- completeSigPolyId_maybe :: TcSigInfo -> Maybe TcId
- completeIdSigPolyId_maybe :: TcIdSigInfo -> Maybe TcId
- type Xi = Type
- data Ct
- = CDictCan {
- cc_ev :: CtEvidence
- cc_class :: Class
- cc_tyargs :: [Xi]
- cc_pend_sc :: Bool
- | CIrredEvCan {
- cc_ev :: CtEvidence
- | CTyEqCan { }
- | CFunEqCan { }
- | CNonCanonical {
- cc_ev :: CtEvidence
- | CHoleCan { }
- = CDictCan {
- type Cts = Bag Ct
- emptyCts :: Cts
- andCts :: Cts -> Cts -> Cts
- andManyCts :: [Cts] -> Cts
- pprCts :: Cts -> SDoc
- singleCt :: Ct -> Cts
- listToCts :: [Ct] -> Cts
- ctsElts :: Cts -> [Ct]
- consCts :: Ct -> Cts -> Cts
- snocCts :: Cts -> Ct -> Cts
- extendCtsList :: Cts -> [Ct] -> Cts
- isEmptyCts :: Cts -> Bool
- isCTyEqCan :: Ct -> Bool
- isCFunEqCan :: Ct -> Bool
- isPendingScDict :: Ct -> Maybe Ct
- superClassesMightHelp :: Ct -> Bool
- isCDictCan_Maybe :: Ct -> Maybe Class
- isCFunEqCan_maybe :: Ct -> Maybe (TyCon, [Type])
- isCIrredEvCan :: Ct -> Bool
- isCNonCanonical :: Ct -> Bool
- isWantedCt :: Ct -> Bool
- isDerivedCt :: Ct -> Bool
- isGivenCt :: Ct -> Bool
- isHoleCt :: Ct -> Bool
- isOutOfScopeCt :: Ct -> Bool
- isExprHoleCt :: Ct -> Bool
- isTypeHoleCt :: Ct -> Bool
- isUserTypeErrorCt :: Ct -> Bool
- isCallStackDict :: Class -> [Type] -> Maybe FastString
- getUserTypeErrorMsg :: Ct -> Maybe Type
- ctEvidence :: Ct -> CtEvidence
- ctLoc :: Ct -> CtLoc
- setCtLoc :: Ct -> CtLoc -> Ct
- ctPred :: Ct -> PredType
- ctFlavour :: Ct -> CtFlavour
- ctEqRel :: Ct -> EqRel
- ctOrigin :: Ct -> CtOrigin
- mkTcEqPredLikeEv :: CtEvidence -> TcType -> TcType -> TcType
- mkNonCanonical :: CtEvidence -> Ct
- mkNonCanonicalCt :: Ct -> Ct
- ctEvPred :: CtEvidence -> TcPredType
- ctEvLoc :: CtEvidence -> CtLoc
- ctEvOrigin :: CtEvidence -> CtOrigin
- ctEvEqRel :: CtEvidence -> EqRel
- ctEvTerm :: CtEvidence -> EvTerm
- ctEvCoercion :: CtEvidence -> Coercion
- ctEvId :: CtEvidence -> TcId
- tyCoVarsOfCt :: Ct -> TcTyCoVarSet
- tyCoVarsOfCts :: Cts -> TcTyCoVarSet
- tyCoVarsOfCtList :: Ct -> [TcTyCoVar]
- tyCoVarsOfCtsList :: Cts -> [TcTyCoVar]
- toDerivedCt :: Ct -> Ct
- data WantedConstraints = WC {}
- insolubleWC :: TcLevel -> WantedConstraints -> Bool
- emptyWC :: WantedConstraints
- isEmptyWC :: WantedConstraints -> Bool
- toDerivedWC :: WantedConstraints -> WantedConstraints
- andWC :: WantedConstraints -> WantedConstraints -> WantedConstraints
- unionsWC :: [WantedConstraints] -> WantedConstraints
- mkSimpleWC :: [CtEvidence] -> WantedConstraints
- mkImplicWC :: Bag Implication -> WantedConstraints
- addInsols :: WantedConstraints -> Bag Ct -> WantedConstraints
- addSimples :: WantedConstraints -> Bag Ct -> WantedConstraints
- addImplics :: WantedConstraints -> Bag Implication -> WantedConstraints
- tyCoVarsOfWC :: WantedConstraints -> TyCoVarSet
- dropDerivedWC :: WantedConstraints -> WantedConstraints
- dropDerivedSimples :: Cts -> Cts
- dropDerivedInsols :: Cts -> Cts
- isDroppableDerivedLoc :: CtLoc -> Bool
- insolubleImplic :: Implication -> Bool
- arisesFromGivens :: Ct -> Bool
- data Implication = Implic {
- ic_tclvl :: TcLevel
- ic_skols :: [TcTyVar]
- ic_info :: SkolemInfo
- ic_given :: [EvVar]
- ic_no_eqs :: Bool
- ic_env :: TcLclEnv
- ic_wanted :: WantedConstraints
- ic_binds :: Maybe EvBindsVar
- ic_status :: ImplicStatus
- data ImplicStatus
- = IC_Solved { }
- | IC_Insoluble
- | IC_Unsolved
- isInsolubleStatus :: ImplicStatus -> Bool
- data SubGoalDepth
- initialSubGoalDepth :: SubGoalDepth
- bumpSubGoalDepth :: SubGoalDepth -> SubGoalDepth
- subGoalDepthExceeded :: DynFlags -> SubGoalDepth -> Bool
- data CtLoc = CtLoc {}
- ctLocSpan :: CtLoc -> RealSrcSpan
- ctLocEnv :: CtLoc -> TcLclEnv
- ctLocLevel :: CtLoc -> TcLevel
- ctLocOrigin :: CtLoc -> CtOrigin
- ctLocTypeOrKind_maybe :: CtLoc -> Maybe TypeOrKind
- ctLocDepth :: CtLoc -> SubGoalDepth
- bumpCtLocDepth :: CtLoc -> CtLoc
- setCtLocOrigin :: CtLoc -> CtOrigin -> CtLoc
- setCtLocEnv :: CtLoc -> TcLclEnv -> CtLoc
- setCtLocSpan :: CtLoc -> RealSrcSpan -> CtLoc
- data CtOrigin
- = GivenOrigin SkolemInfo
- | OccurrenceOf Name
- | OccurrenceOfRecSel RdrName
- | AppOrigin
- | SpecPragOrigin UserTypeCtxt
- | TypeEqOrigin { }
- | KindEqOrigin TcType (Maybe TcType) CtOrigin (Maybe TypeOrKind)
- | IPOccOrigin HsIPName
- | OverLabelOrigin FastString
- | LiteralOrigin (HsOverLit Name)
- | NegateOrigin
- | ArithSeqOrigin (ArithSeqInfo Name)
- | PArrSeqOrigin (ArithSeqInfo Name)
- | SectionOrigin
- | TupleOrigin
- | ExprSigOrigin
- | PatSigOrigin
- | PatOrigin
- | RecordUpdOrigin
- | ViewPatOrigin
- | ScOrigin TypeSize
- | DerivOrigin
- | DerivOriginDC DataCon Int
- | DerivOriginCoerce Id Type Type
- | StandAloneDerivOrigin
- | DefaultOrigin
- | DoOrigin
- | DoPatOrigin (LPat Name)
- | MCompOrigin
- | MCompPatOrigin (LPat Name)
- | IfOrigin
- | ProcOrigin
- | AnnOrigin
- | FunDepOrigin1 PredType CtLoc PredType CtLoc
- | FunDepOrigin2 PredType CtOrigin PredType SrcSpan
- | HoleOrigin
- | UnboundOccurrenceOf OccName
- | ListOrigin
- | StaticOrigin
- | FailablePattern (LPat TcId)
- | Shouldn'tHappenOrigin String
- exprCtOrigin :: HsExpr Name -> CtOrigin
- matchesCtOrigin :: MatchGroup Name (LHsExpr Name) -> CtOrigin
- grhssCtOrigin :: GRHSs Name (LHsExpr Name) -> CtOrigin
- data ErrorThing = Outputable a => ErrorThing a (Maybe Arity) (TidyEnv -> a -> TcM (TidyEnv, a))
- mkErrorThing :: Outputable a => a -> ErrorThing
- errorThingNumArgs_maybe :: ErrorThing -> Maybe Arity
- data TypeOrKind
- isTypeLevel :: TypeOrKind -> Bool
- isKindLevel :: TypeOrKind -> Bool
- pprCtOrigin :: CtOrigin -> SDoc
- pprCtLoc :: CtLoc -> SDoc
- pushErrCtxt :: CtOrigin -> ErrCtxt -> CtLoc -> CtLoc
- pushErrCtxtSameOrigin :: ErrCtxt -> CtLoc -> CtLoc
- data SkolemInfo
- pprSigSkolInfo :: UserTypeCtxt -> ExpType -> SDoc
- pprSkolInfo :: SkolemInfo -> SDoc
- data CtEvidence
- data TcEvDest
- mkGivenLoc :: TcLevel -> SkolemInfo -> TcLclEnv -> CtLoc
- mkKindLoc :: TcType -> TcType -> CtLoc -> CtLoc
- toKindLoc :: CtLoc -> CtLoc
- isWanted :: CtEvidence -> Bool
- isGiven :: CtEvidence -> Bool
- isDerived :: CtEvidence -> Bool
- ctEvRole :: CtEvidence -> Role
- data TcPlugin = TcPlugin {
- tcPluginInit :: TcPluginM s
- tcPluginSolve :: s -> TcPluginSolver
- tcPluginStop :: s -> TcPluginM ()
- data TcPluginResult
- = TcPluginContradiction [Ct]
- | TcPluginOk [(EvTerm, Ct)] [Ct]
- type TcPluginSolver = [Ct] -> [Ct] -> [Ct] -> TcPluginM TcPluginResult
- data TcPluginM a
- runTcPluginM :: TcPluginM a -> Maybe EvBindsVar -> TcM a
- unsafeTcPluginTcM :: TcM a -> TcPluginM a
- getEvBindsTcPluginM_maybe :: TcPluginM (Maybe EvBindsVar)
- data CtFlavour
- ctEvFlavour :: CtEvidence -> CtFlavour
- type CtFlavourRole = (CtFlavour, EqRel)
- ctEvFlavourRole :: CtEvidence -> CtFlavourRole
- ctFlavourRole :: Ct -> CtFlavourRole
- eqCanRewrite :: CtEvidence -> CtEvidence -> Bool
- eqCanRewriteFR :: CtFlavourRole -> CtFlavourRole -> Bool
- eqCanDischarge :: CtEvidence -> CtEvidence -> Bool
- funEqCanDischarge :: CtEvidence -> CtEvidence -> Bool
- funEqCanDischargeFR :: CtFlavourRole -> CtFlavourRole -> Bool
- pprEvVarTheta :: [EvVar] -> SDoc
- pprEvVars :: [EvVar] -> SDoc
- pprEvVarWithType :: EvVar -> SDoc
- type TcId = Id
- type TcIdSet = IdSet
- data HoleSort
Documentation
ContainsModule gbl => ContainsModule (Env gbl lcl) | |
ContainsDynFlags (Env gbl lcl) | |
TcGblEnv
describes the top-level of the module at the
point at which the typechecker is finished work.
It is this structure that is handed on to the desugarer
For state that needs to be updated during the typechecking
phase and returned at end, use a TcRef
(= IORef
).
TcGblEnv | |
|
TcLclEnv | |
|
data FrontendResult Source
FrontendResult
describes the result of running the
frontend of a Haskell module. Usually, you'll get
a FrontendTypecheck
, since running the frontend involves
typechecking a program, but for an hs-boot merge you'll
just get a ModIface, since no actual typechecking occurred.
This data type really should be in HscTypes, but it needs to have a TcGblEnv which is only defined here.
type RecFieldEnv = NameEnv [FieldLabel] Source
data ImportAvails Source
ImportAvails
summarises what was imported from where, irrespective of
whether the imported things are actually used or not. It is used:
- when processing the export list,
- when constructing usage info for the interface file,
- to identify the list of directly imported modules for initialisation purposes and for optimised overlap checking of family instances,
- when figuring out what things are really unused
ImportAvails | |
|
plusImportAvails :: ImportAvails -> ImportAvails -> ImportAvails Source
Union two ImportAvails
This function is a key part of Import handling, basically for each import we create a separate ImportAvails structure and then union them all together with this function.
mkModDeps :: [(ModuleName, IsBootInterface)] -> ModuleNameEnv (ModuleName, IsBootInterface) Source
type TcIdBinderStack = [TcIdBinder] Source
data TcIdBinder Source
A typecheckable thing available in a local context. Could be
AGlobal
TyThing
, but also lexically scoped variables, etc.
See TcEnv
for how to retrieve a TyThing
given a Name
.
data PromotionErr Source
pprPECategory :: PromotionErr -> SDoc Source
DsGblEnv | |
|
data PArrBuiltin Source
PArrBuiltin | |
|
data SpliceType Source
data PendingStuff Source
data TcIdSigInfo Source
TISI | |
|
data TcPatSynInfo Source
TPSI | |
|
isPartialSig :: TcIdSigInfo -> Bool Source
noCompleteSig :: Maybe TcSigInfo -> Bool Source
No signature or a partial signature
tcSigInfoName :: TcSigInfo -> Name Source
CDictCan | |
| |
CIrredEvCan | |
| |
CTyEqCan | |
CFunEqCan | |
CNonCanonical | |
| |
CHoleCan | |
andManyCts :: [Cts] -> Cts Source
extendCtsList :: Cts -> [Ct] -> Cts Source
isEmptyCts :: Cts -> Bool Source
isCTyEqCan :: Ct -> Bool Source
isCFunEqCan :: Ct -> Bool Source
isPendingScDict :: Ct -> Maybe Ct Source
superClassesMightHelp :: Ct -> Bool Source
True if taking superclasses of givens, or of wanteds (to perhaps expose more equalities or functional dependencies) might help to solve this constraint. See Note [When superclases help]
isCDictCan_Maybe :: Ct -> Maybe Class Source
isCIrredEvCan :: Ct -> Bool Source
isCNonCanonical :: Ct -> Bool Source
isWantedCt :: Ct -> Bool Source
isDerivedCt :: Ct -> Bool Source
isOutOfScopeCt :: Ct -> Bool Source
isExprHoleCt :: Ct -> Bool Source
isTypeHoleCt :: Ct -> Bool Source
isUserTypeErrorCt :: Ct -> Bool Source
isCallStackDict :: Class -> [Type] -> Maybe FastString Source
Are we looking at an Implicit CallStack
(i.e. IP "name" CallStack
)?
If so, returns Just "name"
.
getUserTypeErrorMsg :: Ct -> Maybe Type Source
The following constraints are considered to be a custom type error: 1. TypeError msg a b c 2. TypeError msg a b c ~ Something (and the other way around) 4. C (TypeError msg a b c) (for any parameter of class constraint)
ctEvidence :: Ct -> CtEvidence Source
mkTcEqPredLikeEv :: CtEvidence -> TcType -> TcType -> TcType Source
Makes a new equality predicate with the same role as the given evidence.
mkNonCanonical :: CtEvidence -> Ct Source
mkNonCanonicalCt :: Ct -> Ct Source
ctEvPred :: CtEvidence -> TcPredType Source
ctEvLoc :: CtEvidence -> CtLoc Source
ctEvOrigin :: CtEvidence -> CtOrigin Source
ctEvEqRel :: CtEvidence -> EqRel Source
Get the equality relation relevant for a CtEvidence
ctEvTerm :: CtEvidence -> EvTerm Source
ctEvCoercion :: CtEvidence -> Coercion Source
ctEvId :: CtEvidence -> TcId Source
tyCoVarsOfCt :: Ct -> TcTyCoVarSet Source
Returns free variables of constraints as a non-deterministic set
tyCoVarsOfCts :: Cts -> TcTyCoVarSet Source
Returns free variables of a bag of constraints as a non-deterministic set. See Note [Deterministic FV] in FV.
tyCoVarsOfCtList :: Ct -> [TcTyCoVar] Source
Returns free variables of constraints as a deterministically ordered. list. See Note [Deterministic FV] in FV.
tyCoVarsOfCtsList :: Cts -> [TcTyCoVar] Source
Returns free variables of a bag of constraints as a deterministically odered list. See Note [Deterministic FV] in FV.
toDerivedCt :: Ct -> Ct Source
Convert a Wanted to a Derived
data WantedConstraints Source
insolubleWC :: TcLevel -> WantedConstraints -> Bool Source
isEmptyWC :: WantedConstraints -> Bool Source
toDerivedWC :: WantedConstraints -> WantedConstraints Source
Convert all Wanteds into Deriveds (ignoring insolubles)
mkSimpleWC :: [CtEvidence] -> WantedConstraints Source
addInsols :: WantedConstraints -> Bag Ct -> WantedConstraints Source
addSimples :: WantedConstraints -> Bag Ct -> WantedConstraints Source
dropDerivedSimples :: Cts -> Cts Source
dropDerivedInsols :: Cts -> Cts Source
isDroppableDerivedLoc :: CtLoc -> Bool Source
insolubleImplic :: Implication -> Bool Source
arisesFromGivens :: Ct -> Bool Source
data Implication Source
Implic | |
|
data ImplicStatus Source
data SubGoalDepth Source
See Note [SubGoalDepth]
subGoalDepthExceeded :: DynFlags -> SubGoalDepth -> Bool Source
CtLoc | |
|
ctLocSpan :: CtLoc -> RealSrcSpan Source
ctLocLevel :: CtLoc -> TcLevel Source
ctLocOrigin :: CtLoc -> CtOrigin Source
ctLocDepth :: CtLoc -> SubGoalDepth Source
bumpCtLocDepth :: CtLoc -> CtLoc Source
setCtLocOrigin :: CtLoc -> CtOrigin -> CtLoc Source
setCtLocEnv :: CtLoc -> TcLclEnv -> CtLoc Source
setCtLocSpan :: CtLoc -> RealSrcSpan -> CtLoc Source
exprCtOrigin :: HsExpr Name -> CtOrigin Source
Extract a suitable CtOrigin from a HsExpr
matchesCtOrigin :: MatchGroup Name (LHsExpr Name) -> CtOrigin Source
Extract a suitable CtOrigin from a MatchGroup
grhssCtOrigin :: GRHSs Name (LHsExpr Name) -> CtOrigin Source
Extract a suitable CtOrigin from guarded RHSs
data ErrorThing Source
A thing that can be stored for error message generation only. It is stored with a function to zonk and tidy the thing.
Outputable a => ErrorThing a (Maybe Arity) (TidyEnv -> a -> TcM (TidyEnv, a)) |
mkErrorThing :: Outputable a => a -> ErrorThing Source
Make an ErrorThing
that doesn't need tidying or zonking
errorThingNumArgs_maybe :: ErrorThing -> Maybe Arity Source
Retrieve the # of arguments in the error thing, if known
data TypeOrKind Source
Flag to see whether we're type-checking terms or kind-checking types
isTypeLevel :: TypeOrKind -> Bool Source
isKindLevel :: TypeOrKind -> Bool Source
pprCtOrigin :: CtOrigin -> SDoc Source
pushErrCtxtSameOrigin :: ErrCtxt -> CtLoc -> CtLoc Source
data SkolemInfo Source
pprSigSkolInfo :: UserTypeCtxt -> ExpType -> SDoc Source
pprSkolInfo :: SkolemInfo -> SDoc Source
data CtEvidence Source
A place for type-checking evidence to go after it is generated. Wanted equalities are always HoleDest; other wanteds are always EvVarDest.
EvVarDest EvVar | bind this var to the evidence |
HoleDest CoercionHole | fill in this hole with the evidence See Note [Coercion holes] in TyCoRep |
mkGivenLoc :: TcLevel -> SkolemInfo -> TcLclEnv -> CtLoc Source
isWanted :: CtEvidence -> Bool Source
isGiven :: CtEvidence -> Bool Source
isDerived :: CtEvidence -> Bool Source
ctEvRole :: CtEvidence -> Role Source
Get the role relevant for a CtEvidence
TcPlugin | |
|
data TcPluginResult Source
TcPluginContradiction [Ct] | The plugin found a contradiction. The returned constraints are removed from the inert set, and recorded as insoluable. |
TcPluginOk [(EvTerm, Ct)] [Ct] | The first field is for constraints that were solved. These are removed from the inert set, and the evidence for them is recorded. The second field contains new work, that should be processed by the constraint solver. |
type TcPluginSolver = [Ct] -> [Ct] -> [Ct] -> TcPluginM TcPluginResult Source
runTcPluginM :: TcPluginM a -> Maybe EvBindsVar -> TcM a Source
unsafeTcPluginTcM :: TcM a -> TcPluginM a Source
getEvBindsTcPluginM_maybe :: TcPluginM (Maybe EvBindsVar) Source
Access the EvBindsVar
carried by the TcPluginM
during
constraint solving. Returns Nothing
if invoked during
tcPluginInit
or tcPluginStop
.
ctEvFlavour :: CtEvidence -> CtFlavour Source
type CtFlavourRole = (CtFlavour, EqRel) Source
Whether or not one Ct
can rewrite another is determined by its
flavour and its equality relation. See also
Note [Flavours with roles] in TcSMonad
ctEvFlavourRole :: CtEvidence -> CtFlavourRole Source
Extract the flavour, role, and boxity from a CtEvidence
ctFlavourRole :: Ct -> CtFlavourRole Source
Extract the flavour, role, and boxity from a Ct
eqCanRewrite :: CtEvidence -> CtEvidence -> Bool Source
eqCanRewriteFR :: CtFlavourRole -> CtFlavourRole -> Bool Source
eqCanDischarge :: CtEvidence -> CtEvidence -> Bool Source
funEqCanDischarge :: CtEvidence -> CtEvidence -> Bool Source
pprEvVarTheta :: [EvVar] -> SDoc Source
pprEvVarWithType :: EvVar -> SDoc Source