| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
Language.Haskell.Liquid.GHC.Types
Synopsis
- newtype StableName = MkStableName {
- unStableName :: Name
- mkStableName :: Name -> StableName
- availsToStableNameSet :: [AvailInfo] -> HashSet StableName
- data MGIModGuts = MI {
- mgi_binds :: !CoreProgram
- mgi_module :: !Module
- mgi_tcs :: ![TyCon]
- mgi_exports :: !(HashSet StableName)
- mgi_cls_inst :: !(Maybe [ClsInst])
- miModGuts :: Maybe [ClsInst] -> ModGuts -> MGIModGuts
- mgiNamestring :: MGIModGuts -> String
Documentation
newtype StableName Source #
A StableName is virtually isomorphic to a GHC's Name but crucially we don't use
the Eq instance defined on a Name because it's Unique-based. In particular, GHC
doesn't guarantee that if we load an interface multiple times we would get the same Unique for the
same Name, and this is a problem when we rely on Names to be the same when we call isExportedVar,
which used to use a NameSet derived from the '[AvailInfo]'. As the name implies, a NameSet uses a
Names Unique for duplicate detection and indexing, and this would lead to Vars being resolved to
a Name which is basically the same, but it has a different Unique, and that would cause the lookup
inside the NameSet to fail.
Constructors
| MkStableName | |
Fields
| |
Instances
mkStableName :: Name -> StableName Source #
Creates a new StableName out of a Name.
availsToStableNameSet :: [AvailInfo] -> HashSet StableName Source #
Converts a list of AvailInfo into a "StableNameSet", similarly to what availsToNameSet would do.
data MGIModGuts Source #
Datatype For Holding GHC ModGuts ------------------------------------------
Constructors
| MI | |
Fields
| |
mgiNamestring :: MGIModGuts -> String Source #