ghc-9.15: The GHC API
Safe HaskellNone
LanguageGHC2021

GHC.Types.Name.Cache

Description

The Name Cache

Synopsis

Documentation

data NameCache Source #

The NameCache makes sure that there is just one Unique assigned for each original name; i.e. (module-name, occ-name) pair and provides something of a lookup mechanism for those names.

Constructors

NameCache 

newNameCache :: IO NameCache Source #

Initialize a new name cache

newNameCacheWith :: Char -> OrigNameCache -> IO NameCache Source #

This is a version of newNameCache that lets you supply your own unique tag and set of known key names. This can go wrong if the tag supplied is one reserved by GHC for internal purposes. See #26055 for an example.

Use newNameCache when possible.

initNameCache :: Char -> [Name] -> IO NameCache Source #

Deprecated: Use newNameCache or newNameCacheWith instead

This takes a tag for uniques to be generated and the list of knownKeyNames These must be initialized properly to ensure that names generated from this NameCache do not conflict with known key names.

Use newNameCache or newNameCacheWith instead

updateNameCache' :: NameCache -> (OrigNameCache -> IO (OrigNameCache, c)) -> IO c Source #

Update the name cache with the given function

updateNameCache :: NameCache -> Module -> OccName -> (OrigNameCache -> IO (OrigNameCache, c)) -> IO c Source #

Update the name cache with the given function

Additionally, it ensures that the given Module and OccName are evaluated. If not, chaos can ensue: we read the name-cache then pull on mod (say) which does some stuff that modifies the name cache This did happen, with tycon_mod in GHC.IfaceToCore.tcIfaceAlt (DataAlt..)

OrigNameCache

type OrigNameCache = ModuleEnv (OccEnv Name) Source #

Per-module cache of original OccNames given Names

Known-key names