ghc-8.0.0.20160204: The GHC API

Safe HaskellNone
LanguageHaskell2010

TcSMonad

Synopsis

Documentation

data WorkList Source

Constructors

WL 

data TcS a Source

Instances

Monad TcS 

Methods

(>>=) :: TcS a -> (a -> TcS b) -> TcS b Source

(>>) :: TcS a -> TcS b -> TcS b Source

return :: a -> TcS a Source

fail :: String -> TcS a Source

Functor TcS 

Methods

fmap :: (a -> b) -> TcS a -> TcS b Source

(<$) :: a -> TcS b -> TcS a Source

MonadFail TcS 

Methods

fail :: String -> TcS a Source

Applicative TcS 

Methods

pure :: a -> TcS a Source

(<*>) :: TcS (a -> b) -> TcS a -> TcS b Source

(*>) :: TcS a -> TcS b -> TcS b Source

(<*) :: TcS a -> TcS b -> TcS a Source

MonadUnique TcS 
HasDynFlags TcS 

runTcSDeriveds :: TcS a -> TcM a Source

This variant of runTcS will keep solving, even when only Deriveds are left around. It also doesn't return any evidence, as callers won't need it.

runTcSWithEvBinds Source

Arguments

:: Bool

keep running even if only Deriveds are left?

-> Maybe EvBindsVar 
-> TcS a 
-> TcM a 

runTcSEqualities :: TcS a -> TcM a Source

This can deal only with equality constraints.

nestTcS :: TcS a -> TcS a Source

newWantedEq :: CtLoc -> Role -> TcType -> TcType -> TcS (CtEvidence, Coercion) Source

Make a new equality CtEvidence

newBoundEvVarId :: TcPredType -> EvTerm -> TcS EvVar Source

Make a new Id of the given type, bound (in the monad's EvBinds) to the given term

setWantedEq :: TcEvDest -> Coercion -> TcS () Source

Equalities only

setEqIfWanted :: CtEvidence -> Coercion -> TcS () Source

Equalities only

setWantedEvTerm :: TcEvDest -> EvTerm -> TcS () Source

Good for equalities and non-equalities

checkReductionDepth Source

Arguments

:: CtLoc 
-> TcType

type being reduced

-> TcS () 

Checks if the depth of the given location is too much. Fails if it's too big, with an appropriate error message.

data InertCans Source

Constructors

IC 

Fields

updInertDicts :: (DictMap Ct -> DictMap Ct) -> TcS () Source

matchableGivens :: CtLoc -> PredType -> InertSet -> Cts Source

Returns Given constraints that might, potentially, match the given pred. This is used when checking to see if a Given might overlap with an instance. See Note [Instance and Given overlap] in TcInteract.

removeInertCts :: [Ct] -> InertCans -> InertCans Source

Remove inert constraints from the InertCans, for use when a typechecker plugin wishes to discard a given.

insertFunEq :: FunEqMap a -> TyCon -> [Type] -> a -> FunEqMap a Source

updInertSafehask :: (DictMap Ct -> DictMap Ct) -> TcS () Source

lookupInertDict :: InertCans -> Class -> [Type] -> Maybe CtEvidence Source

Look up a dictionary inert. NB: the returned CtEvidence might not match the input exactly. Note [Use loose types in inert set].

findDictsByClass :: DictMap a -> Class -> Bag a Source

addDict :: DictMap a -> Class -> [Type] -> a -> DictMap a Source

addDictsByClass :: DictMap Ct -> Class -> Bag Ct -> DictMap Ct Source

delDict :: DictMap a -> Class -> [Type] -> DictMap a Source

partitionDicts :: (Ct -> Bool) -> DictMap Ct -> (Bag Ct, DictMap Ct) Source

foldDicts :: (a -> b -> b) -> DictMap a -> b -> b Source

filterDicts :: (Ct -> Bool) -> DictMap Ct -> DictMap Ct Source

foldTyEqs :: (Ct -> b -> b) -> TyVarEnv EqualCtList -> b -> b Source

lookupSolvedDict :: InertSet -> Class -> [Type] -> Maybe CtEvidence Source

Look up a solved inert. NB: the returned CtEvidence might not match the input exactly. See Note [Use loose types in inert set].

foldIrreds :: (Ct -> b -> b) -> Cts -> b -> b Source

updInertFunEqs :: (FunEqMap Ct -> FunEqMap Ct) -> TcS () Source

findFunEq :: FunEqMap a -> TyCon -> [Type] -> Maybe a Source

sizeFunEqMap :: FunEqMap a -> Int Source

filterFunEqs :: (Ct -> Bool) -> FunEqMap Ct -> FunEqMap Ct Source

findFunEqsByTyCon :: FunEqMap a -> TyCon -> [a] Source

partitionFunEqs :: (Ct -> Bool) -> FunEqMap Ct -> ([Ct], FunEqMap Ct) Source

foldFunEqs :: (a -> b -> b) -> FunEqMap a -> b -> b Source

newTcRef :: a -> TcS (TcRef a) Source

updTcRef :: TcRef a -> (a -> a) -> TcS () Source