Safe Haskell | None |
---|---|
Language | Haskell2010 |
TcRnTypes
- 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 = TcIdBndr TcId TopLevelFlag
- 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
- 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
- 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
- isCallStackCt :: Ct -> 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 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 -> Type -> 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
- canDischarge :: CtEvidence -> CtEvidence -> Bool
- canDischargeFR :: CtFlavourRole -> CtFlavourRole -> Bool
- pprEvVarTheta :: [EvVar] -> SDoc
- pprEvVars :: [EvVar] -> SDoc
- pprEvVarWithType :: EvVar -> SDoc
- type TcId = Id
- type TcIdSet = IdSet
- data HoleSort
Documentation
data Env gbl lcl
Instances
ContainsModule gbl => ContainsModule (Env gbl lcl) | |
ContainsDynFlags (Env gbl lcl) | |
data TcGblEnv
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
).
Constructors
TcGblEnv | |
Fields
|
Instances
data TcLclEnv
Constructors
TcLclEnv | |
Fields
|
data IfLclEnv
data FrontendResult
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.
Constructors
FrontendTypecheck TcGblEnv |
type RecFieldEnv = NameEnv [FieldLabel]
data ImportAvails
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
Constructors
ImportAvails | |
Fields
|
plusImportAvails :: ImportAvails -> ImportAvails -> ImportAvails
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)
type TcIdBinderStack = [TcIdBinder]
data TcTyThing
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
.
Constructors
AGlobal TyThing | |
ATcId | |
Fields
| |
ATyVar Name TcTyVar | |
ATcTyCon TyCon | |
APromotionErr PromotionErr |
Instances
data PromotionErr
Constructors
TyConPE | |
ClassPE | |
FamDataConPE | |
PatSynPE | |
RecDataConPE | |
NoDataKinds | |
NoTypeInTypeTC | |
NoTypeInTypeDC |
Instances
data SelfBootInfo
Constructors
NoSelfBoot | |
SelfBoot | |
pprPECategory :: PromotionErr -> SDoc
data DsLclEnv
data DsGblEnv
Constructors
DsGblEnv | |
Fields
|
Instances
data PArrBuiltin
Constructors
PArrBuiltin | |
Fields
|
data SpliceType
data PendingStuff
Constructors
RnPendingUntyped (TcRef [PendingRnSplice]) | |
RnPendingTyped | |
TcPending (TcRef [PendingTcSplice]) (TcRef WantedConstraints) |
data ArrowCtxt
Constructors
NoArrowCtxt | |
ArrowCtxt LocalRdrEnv (TcRef WantedConstraints) |
data TcIdSigInfo
Constructors
TISI | |
Fields
|
Instances
data TcPatSynInfo
Constructors
TPSI | |
Fields
|
Instances
findScopedTyVars :: TcType -> [TcTyVar] -> [(Name, TcTyVar)]
isPartialSig :: TcIdSigInfo -> Bool
noCompleteSig :: Maybe TcSigInfo -> Bool
No signature or a partial signature
tcSigInfoName :: TcSigInfo -> Name
data Ct
Constructors
CDictCan | |
Fields
| |
CIrredEvCan | |
Fields
| |
CTyEqCan | |
CFunEqCan | |
CNonCanonical | |
Fields
| |
CHoleCan | |
Instances
andManyCts :: [Cts] -> Cts
extendCtsList :: Cts -> [Ct] -> Cts
isEmptyCts :: Cts -> Bool
isCTyEqCan :: Ct -> Bool
isCFunEqCan :: 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
isOutOfScopeCt :: Ct -> Bool
isExprHoleCt :: Ct -> Bool
isTypeHoleCt :: Ct -> Bool
isUserTypeErrorCt :: Ct -> Bool
isCallStackCt :: Ct -> Maybe FastString
Is the constraint for an Implicit CallStack
(i.e. IP "name" CallStack
)?
If so, returns Just "name"
.
getUserTypeErrorMsg :: Ct -> Maybe Type
The following constraints are considered to be a custom type error: 1. TypeError msg 2. TypeError msg ~ Something (and the other way around) 3. C (TypeError msg) (for any parameter of class constraint)
ctEvidence :: Ct -> CtEvidence
mkTcEqPredLikeEv :: CtEvidence -> TcType -> TcType -> TcType
Makes a new equality predicate with the same role as the given evidence.
mkNonCanonical :: CtEvidence -> Ct
mkNonCanonicalCt :: Ct -> Ct
ctEvPred :: CtEvidence -> TcPredType
ctEvLoc :: CtEvidence -> CtLoc
ctEvOrigin :: CtEvidence -> CtOrigin
ctEvEqRel :: CtEvidence -> EqRel
Get the equality relation relevant for a CtEvidence
ctEvTerm :: CtEvidence -> EvTerm
ctEvCoercion :: CtEvidence -> Coercion
ctEvId :: CtEvidence -> TcId
tyCoVarsOfCt :: Ct -> TcTyCoVarSet
Returns free variables of constraints as a non-deterministic set
tyCoVarsOfCts :: Cts -> TcTyCoVarSet
Returns free variables of a bag of constraints as a non-deterministic set. See Note [Deterministic FV] in FV.
tyCoVarsOfCtList :: Ct -> [TcTyCoVar]
Returns free variables of constraints as a deterministically ordered. list. See Note [Deterministic FV] in FV.
tyCoVarsOfCtsList :: Cts -> [TcTyCoVar]
Returns free variables of a bag of constraints as a deterministically odered list. See Note [Deterministic FV] in FV.
toDerivedCt :: Ct -> Ct
Convert a Wanted to a Derived
data WantedConstraints
Instances
insolubleWC :: TcLevel -> WantedConstraints -> Bool
isEmptyWC :: WantedConstraints -> Bool
toDerivedWC :: WantedConstraints -> WantedConstraints
Convert all Wanteds into Deriveds (ignoring insolubles)
mkSimpleWC :: [CtEvidence] -> WantedConstraints
addInsols :: WantedConstraints -> Bag Ct -> WantedConstraints
addSimples :: WantedConstraints -> Bag Ct -> WantedConstraints
dropDerivedSimples :: Cts -> Cts
dropDerivedInsols :: Cts -> Cts
isDroppableDerivedLoc :: CtLoc -> Bool
insolubleImplic :: Implication -> Bool
arisesFromGivens :: Ct -> Bool
data Implication
Constructors
Implic | |
Fields
|
Instances
subGoalDepthExceeded :: DynFlags -> SubGoalDepth -> Bool
data CtLoc
Constructors
CtLoc | |
Fields
|
ctLocSpan :: CtLoc -> RealSrcSpan
ctLocLevel :: CtLoc -> TcLevel
ctLocOrigin :: CtLoc -> CtOrigin
ctLocDepth :: CtLoc -> SubGoalDepth
bumpCtLocDepth :: CtLoc -> CtLoc
setCtLocOrigin :: CtLoc -> CtOrigin -> CtLoc
setCtLocEnv :: CtLoc -> TcLclEnv -> CtLoc
setCtLocSpan :: CtLoc -> RealSrcSpan -> CtLoc
data CtOrigin
Constructors
Instances
exprCtOrigin :: HsExpr Name -> CtOrigin
Extract a suitable CtOrigin from a HsExpr
matchesCtOrigin :: MatchGroup Name (LHsExpr Name) -> CtOrigin
Extract a suitable CtOrigin from a MatchGroup
data ErrorThing
A thing that can be stored for error message generation only. It is stored with a function to zonk and tidy the thing.
Constructors
Outputable a => ErrorThing a (Maybe Arity) (TidyEnv -> a -> TcM (TidyEnv, a)) |
Instances
mkErrorThing :: Outputable a => a -> ErrorThing
Make an ErrorThing
that doesn't need tidying or zonking
errorThingNumArgs_maybe :: ErrorThing -> Maybe Arity
Retrieve the # of arguments in the error thing, if known
isTypeLevel :: TypeOrKind -> Bool
isKindLevel :: TypeOrKind -> Bool
pprCtOrigin :: CtOrigin -> SDoc
pushErrCtxt :: CtOrigin -> ErrCtxt -> CtLoc -> CtLoc
pushErrCtxtSameOrigin :: ErrCtxt -> CtLoc -> CtLoc
data SkolemInfo
Constructors
Instances
pprSigSkolInfo :: UserTypeCtxt -> Type -> SDoc
pprSkolInfo :: SkolemInfo -> SDoc
data CtEvidence
Instances
data TcEvDest
A place for type-checking evidence to go after it is generated. Wanted equalities are always HoleDest; other wanteds are always EvVarDest.
Constructors
EvVarDest EvVar | bind this var to the evidence |
HoleDest CoercionHole | fill in this hole with the evidence See Note [Coercion holes] in TyCoRep |
Instances
mkGivenLoc :: TcLevel -> SkolemInfo -> TcLclEnv -> CtLoc
isWanted :: CtEvidence -> Bool
isGiven :: CtEvidence -> Bool
isDerived :: CtEvidence -> Bool
ctEvRole :: CtEvidence -> Role
Get the role relevant for a CtEvidence
data TcPlugin
Constructors
TcPlugin | |
Fields
|
data TcPluginResult
Constructors
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
data TcPluginM a
runTcPluginM :: TcPluginM a -> Maybe EvBindsVar -> TcM a
unsafeTcPluginTcM :: TcM a -> TcPluginM a
getEvBindsTcPluginM_maybe :: TcPluginM (Maybe EvBindsVar)
Access the EvBindsVar
carried by the TcPluginM
during
constraint solving. Returns Nothing
if invoked during
tcPluginInit
or tcPluginStop
.
ctEvFlavour :: CtEvidence -> CtFlavour
type CtFlavourRole = (CtFlavour, EqRel)
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
Extract the flavour, role, and boxity from a CtEvidence
ctFlavourRole :: Ct -> CtFlavourRole
Extract the flavour, role, and boxity from a Ct
eqCanRewrite :: CtEvidence -> CtEvidence -> Bool
eqCanRewriteFR :: CtFlavourRole -> CtFlavourRole -> Bool
canDischarge :: CtEvidence -> CtEvidence -> Bool
canDischargeFR :: CtFlavourRole -> CtFlavourRole -> Bool
pprEvVarTheta :: [EvVar] -> SDoc
pprEvVarWithType :: EvVar -> SDoc