ghc-9.0.2: The GHC API
Safe HaskellSafe-Inferred
LanguageHaskell2010

GHC.Tc.Types.Constraint

Description

This module defines types and simple operations over constraints, as used in the type-checker and constraint solver.

Synopsis

Documentation

data QCInst #

Constructors

QCI 

Instances

Instances details
Outputable QCInst # 
Instance details

Defined in GHC.Tc.Types.Constraint

Methods

ppr :: QCInst -> SDoc #

pprPrec :: Rational -> QCInst -> SDoc #

type Xi = Type #

data Ct #

Instances

Instances details
Outputable Ct # 
Instance details

Defined in GHC.Tc.Types.Constraint

Methods

ppr :: Ct -> SDoc #

pprPrec :: Rational -> Ct -> SDoc #

type Cts = Bag Ct #

data CtIrredStatus #

Used to indicate extra information about why a CIrredCan is irreducible

Instances

Instances details
Outputable CtIrredStatus # 
Instance details

Defined in GHC.Tc.Types.Constraint

andCts :: Cts -> Cts -> Cts #

listToCts :: [Ct] -> Cts #

ctsElts :: Cts -> [Ct] #

consCts :: Ct -> Cts -> Cts #

snocCts :: Cts -> Ct -> Cts #

extendCtsList :: Cts -> [Ct] -> Cts #

superClassesMightHelp :: WantedConstraints -> Bool #

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 superclasses help]

getUserTypeErrorMsg :: Ct -> Maybe Type #

A constraint is considered to be a custom type error, if it contains custom type errors anywhere in it. See Note [Custom type errors in constraints]

ctLoc :: Ct -> CtLoc #

setCtLoc :: Ct -> CtLoc -> Ct #

ctFlavour :: Ct -> CtFlavour #

Get the flavour of the given Ct

ctEqRel :: Ct -> EqRel #

Get the equality relation for the given Ct

mkTcEqPredLikeEv :: CtEvidence -> TcType -> TcType -> TcType #

Makes a new equality predicate with the same role as the given evidence.

mkGivens :: CtLoc -> [EvId] -> [Ct] #

ctEvEqRel :: CtEvidence -> EqRel #

Get the equality relation relevant for a CtEvidence

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 GHC.Utils.FV.

tyCoVarsOfCtList :: Ct -> [TcTyCoVar] #

Returns free variables of constraints as a deterministically ordered. list. See Note [Deterministic FV] in GHC.Utils.FV.

tyCoVarsOfCtsList :: Cts -> [TcTyCoVar] #

Returns free variables of a bag of constraints as a deterministically ordered list. See Note [Deterministic FV] in GHC.Utils.FV.

data Hole #

A hole stores the information needed to report diagnostics about holes in terms (unbound identifiers or underscores) or in types (also called wildcards, as used in partial type signatures). See Note [Holes].

Constructors

Hole 

Fields

Instances

Instances details
Outputable Hole # 
Instance details

Defined in GHC.Tc.Types.Constraint

Methods

ppr :: Hole -> SDoc #

pprPrec :: Rational -> Hole -> SDoc #

data HoleSort #

Used to indicate which sort of hole we have.

Constructors

ExprHole Id

Either an out-of-scope variable or a "true" hole in an expression (TypedHoles). The Id is where to store "evidence": this evidence will be an erroring expression for -fdefer-type-errors.

TypeHole

A hole in a type (PartialTypeSignatures)

Instances

Instances details
Outputable HoleSort # 
Instance details

Defined in GHC.Tc.Types.Constraint

isOutOfScopeHole :: Hole -> Bool #

Does this hole represent an "out of scope" error? See Note [Insoluble holes]

data WantedConstraints #

Constructors

WC 

Instances

Instances details
Outputable WantedConstraints # 
Instance details

Defined in GHC.Tc.Types.Constraint

isSolvedWC :: WantedConstraints -> Bool #

Checks whether a the given wanted constraints are solved, i.e. that there are no simple constraints left and all the implications are solved.

tyCoVarsOfWC :: WantedConstraints -> TyCoVarSet #

Returns free variables of WantedConstraints as a non-deterministic set. See Note [Deterministic FV] in GHC.Utils.FV.

tyCoVarsOfWCList :: WantedConstraints -> [TyCoVar] #

Returns free variables of WantedConstraints as a deterministically ordered list. See Note [Deterministic FV] in GHC.Utils.FV.

data ImplicStatus #

Instances

Instances details
Outputable ImplicStatus # 
Instance details

Defined in GHC.Tc.Types.Constraint

data CtEvidence #

Instances

Instances details
Outputable CtEvidence # 
Instance details

Defined in GHC.Tc.Types.Constraint

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 EvVarDest is always used for non-type-equalities e.g. class constraints

HoleDest CoercionHole

fill in this hole with the evidence HoleDest is always used for type-equalities See Note [Coercion holes] in GHC.Core.TyCo.Rep

Instances

Instances details
Outputable TcEvDest # 
Instance details

Defined in GHC.Tc.Types.Constraint

toKindLoc :: CtLoc -> CtLoc #

Take a CtLoc and moves it to the kind level

ctEvRole :: CtEvidence -> Role #

Get the role relevant for a CtEvidence

wrapType :: Type -> [TyVar] -> [PredType] -> Type #

data CtFlavour #

Constructors

Given 
Wanted ShadowInfo 
Derived 

Instances

Instances details
Outputable CtFlavour # 
Instance details

Defined in GHC.Tc.Types.Constraint

Eq CtFlavour # 
Instance details

Defined in GHC.Tc.Types.Constraint

data ShadowInfo #

Constructors

WDeriv 
WOnly 

Instances

Instances details
Eq ShadowInfo # 
Instance details

Defined in GHC.Tc.Types.Constraint

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 GHC.Tc.Solver.Monad

ctEvFlavourRole :: CtEvidence -> CtFlavourRole #

Extract the flavour, role, and boxity from a CtEvidence

ctFlavourRole :: Ct -> CtFlavourRole #

Extract the flavour and role from a Ct