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

GHC.Tc.Utils.Env

Synopsis

Documentation

data TyThing Source #

A global typecheckable-thing, essentially anything that has a name. Not to be confused with a TcTyThing, which is also a typecheckable thing but in the *local* context. See GHC.Tc.Utils.Env for how to retrieve a TyThing given a Name.

Instances

Instances details
NamedThing TyThing Source # 
Instance details

Defined in GHC.Types.TyThing

Outputable TyThing Source # 
Instance details

Defined in GHC.Types.TyThing

Methods

ppr :: TyThing -> SDoc Source #

data TcTyThing Source #

A typecheckable thing available in a local context. Could be AGlobal TyThing, but also lexically scoped variables, etc. See GHC.Tc.Utils.Env for how to retrieve a TyThing given a Name.

Instances

Instances details
Outputable TcTyThing Source # 
Instance details

Defined in GHC.Tc.Types

Methods

ppr :: TcTyThing -> SDoc Source #

type TcId = Id Source #

data InstInfo a Source #

Constructors

InstInfo 

Fields

Instances

Instances details
OutputableBndrId a => Outputable (InstInfo (GhcPass a)) Source # 
Instance details

Defined in GHC.Tc.Utils.Env

Methods

ppr :: InstInfo (GhcPass a) -> SDoc Source #

tcExtendRecIds :: [(Name, TcId)] -> TcM a -> TcM a Source #

tcExtendIdEnv :: [TcId] -> TcM a -> TcM a Source #

tcExtendIdEnv2 :: [(Name, TcId)] -> TcM a -> TcM a Source #

tcCheckUsage :: Name -> Mult -> TcM a -> TcM (a, HsWrapper) Source #

tcCheckUsage name mult thing_inside runs thing_inside, checks that the usage of name is a submultiplicity of mult, and removes name from the usage environment. See also Note [Wrapper returned from tcSubMult] in GHC.Tc.Utils.Unify, which applies to the wrapper returned from this function.

tcInitOpenTidyEnv :: [TyCoVar] -> TcM TidyEnv Source #

Get a TidyEnv that includes mappings for all vars free in the given type. Useful when tidying open types.

newDFunName :: Class -> [Type] -> SrcSpan -> TcM Name Source #

Make a name for the dict fun for an instance decl. It's an *external* name, like other top-level names, and hence must be made with newGlobalBinder.

mkWrapperName :: (MonadIO m, HasModule m) => IORef (ModuleEnv Int) -> String -> String -> m FastString Source #

mkWrapperName ref what nameBase

See Note [Generating fresh names for FFI wrappers] for ref's purpose.

Orphan instances