Safe Haskell | Safe-Inferred |
---|---|
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 Name
s 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
Name
s Unique
for duplicate detection and indexing, and this would lead to Var
s 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
Generic StableName Source # | |
Defined in Language.Haskell.Liquid.GHC.Types Associated Types type Rep StableName :: Type -> Type # | |
Show StableName Source # | |
Defined in Language.Haskell.Liquid.GHC.Types Methods showsPrec :: Int -> StableName -> ShowS # show :: StableName -> String # showList :: [StableName] -> ShowS # | |
Eq StableName Source # | |
Defined in Language.Haskell.Liquid.GHC.Types | |
Hashable StableName Source # | |
Defined in Language.Haskell.Liquid.GHC.Types | |
type Rep StableName Source # | |
Defined in Language.Haskell.Liquid.GHC.Types type Rep StableName = D1 ('MetaData "StableName" "Language.Haskell.Liquid.GHC.Types" "liquidhaskell-boot-0.9.2.5.0-JuBNLAGIRFD6ItsPyAO3oF" 'True) (C1 ('MetaCons "MkStableName" 'PrefixI 'True) (S1 ('MetaSel ('Just "unStableName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) |
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 #