Safe Haskell | None |
---|---|
Language | Haskell98 |
Language.Haskell.Liquid.Types.Names
Synopsis
- lenLocSymbol :: Located Symbol
- anyTypeSymbol :: Symbol
- selfSymbol :: Symbol
- data LogicName
- data LHResolvedName
- data LHName
- data LHNameSpace
- data LHThisModuleNameFlag
- makeResolvedLHName :: LHResolvedName -> Symbol -> LHName
- getLHGHCName :: LHName -> Maybe Name
- getLHNameResolved :: HasCallStack => LHName -> LHResolvedName
- getLHNameSymbol :: LHName -> Symbol
- lhNameToResolvedSymbol :: LHName -> Symbol
- lhNameToUnqualifiedSymbol :: HasCallStack => LHName -> Symbol
- makeGHCLHName :: Name -> Symbol -> LHName
- makeGHCLHNameFromId :: Id -> LHName
- makeGHCLHNameLocated :: (NamedThing a, Symbolic a) => a -> Located LHName
- makeGHCLHNameLocatedFromId :: Id -> Located LHName
- makeLocalLHName :: Symbol -> LHName
- makeLogicLHName :: Symbol -> Module -> Maybe Name -> LHName
- makeGeneratedLogicLHName :: Symbol -> LHName
- makeUnresolvedLHName :: LHNameSpace -> Symbol -> LHName
- mapLHNames :: Data a => (LHName -> LHName) -> a -> a
- mapMLocLHNames :: forall m a. (Data a, Monad m) => (Located LHName -> m (Located LHName)) -> a -> m a
- maybeReflectedLHName :: LHName -> Maybe Name
- reflectGHCName :: Module -> Name -> LHName
- reflectLHName :: HasCallStack => Module -> LHName -> LHName
- updateLHNameSymbol :: (Symbol -> Symbol) -> LHName -> LHName
Documentation
selfSymbol :: Symbol Source #
A name for an entity that does not exist in Haskell
For instance, this can be used to represent predicate aliases or uninterpreted functions.
Constructors
LogicName | |
GeneratedLogicName Symbol |
Instances
data LHResolvedName Source #
A name whose procedence is known.
Constructors
LHRLogic !LogicName | |
LHRGHC !Name | A name for an entity that exists in Haskell |
LHRLocal !Symbol | A name for a local variable, e.g. one that is bound by a type alias. |
LHRIndex Word | The index of a name in some environment Before serializing names, they are converted to indices. The names themselves are kept in an environment or table that is serialized separately. This is to acommodate how GHC serializes its Names. |
Instances
Binary LHResolvedName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods put :: LHResolvedName -> Put # get :: Get LHResolvedName # putList :: [LHResolvedName] -> Put # | |||||
NFData LHResolvedName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods rnf :: LHResolvedName -> () # | |||||
Binary LHResolvedName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods put_ :: BinHandle -> LHResolvedName -> IO () # put :: BinHandle -> LHResolvedName -> IO (Bin LHResolvedName) # get :: BinHandle -> IO LHResolvedName # | |||||
Data LHResolvedName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LHResolvedName -> c LHResolvedName # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c LHResolvedName # toConstr :: LHResolvedName -> Constr # dataTypeOf :: LHResolvedName -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c LHResolvedName) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c LHResolvedName) # gmapT :: (forall b. Data b => b -> b) -> LHResolvedName -> LHResolvedName # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LHResolvedName -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LHResolvedName -> r # gmapQ :: (forall d. Data d => d -> u) -> LHResolvedName -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> LHResolvedName -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> LHResolvedName -> m LHResolvedName # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LHResolvedName -> m LHResolvedName # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LHResolvedName -> m LHResolvedName # | |||||
Generic LHResolvedName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Associated Types
Methods from :: LHResolvedName -> Rep LHResolvedName x # to :: Rep LHResolvedName x -> LHResolvedName # | |||||
Show LHResolvedName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods showsPrec :: Int -> LHResolvedName -> ShowS # show :: LHResolvedName -> String # showList :: [LHResolvedName] -> ShowS # | |||||
Eq LHResolvedName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods (==) :: LHResolvedName -> LHResolvedName -> Bool # (/=) :: LHResolvedName -> LHResolvedName -> Bool # | |||||
Ord LHResolvedName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods compare :: LHResolvedName -> LHResolvedName -> Ordering # (<) :: LHResolvedName -> LHResolvedName -> Bool # (<=) :: LHResolvedName -> LHResolvedName -> Bool # (>) :: LHResolvedName -> LHResolvedName -> Bool # (>=) :: LHResolvedName -> LHResolvedName -> Bool # max :: LHResolvedName -> LHResolvedName -> LHResolvedName # min :: LHResolvedName -> LHResolvedName -> LHResolvedName # | |||||
Hashable LHResolvedName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names | |||||
type Rep LHResolvedName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names type Rep LHResolvedName = D1 ('MetaData "LHResolvedName" "Language.Haskell.Liquid.Types.Names" "liquidhaskell-boot-0.9.10.1.2-inplace" 'False) ((C1 ('MetaCons "LHRLogic" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LogicName)) :+: C1 ('MetaCons "LHRGHC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name))) :+: (C1 ('MetaCons "LHRLocal" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Symbol)) :+: C1 ('MetaCons "LHRIndex" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word)))) |
A name that is potentially unresolved.
Constructors
LHNResolved !LHResolvedName !Symbol | In order to integrate the resolved names gradually, we keep the unresolved names. |
LHNUnresolved !LHNameSpace !Symbol |
Instances
Binary LHName Source # | |||||
NFData LHName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names | |||||
Data LHName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LHName -> c LHName # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c LHName # toConstr :: LHName -> Constr # dataTypeOf :: LHName -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c LHName) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c LHName) # gmapT :: (forall b. Data b => b -> b) -> LHName -> LHName # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LHName -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LHName -> r # gmapQ :: (forall d. Data d => d -> u) -> LHName -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> LHName -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> LHName -> m LHName # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LHName -> m LHName # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LHName -> m LHName # | |||||
Generic LHName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Associated Types
| |||||
Show LHName Source # | |||||
Eq LHName Source # | An Eq instance that ignores the Symbol in resolved names | ||||
Ord LHName Source # | An Ord instance that ignores the Symbol in resolved names | ||||
Hashable LHName Source # | A Hashable instance that ignores the Symbol in resolved names | ||||
Defined in Language.Haskell.Liquid.Types.Names | |||||
PPrint LHName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names | |||||
Expand BareDef Source # | |||||
Expand BareMeasure Source # | |||||
Defined in Language.Haskell.Liquid.Bare.Expand Methods expand :: BareRTEnv -> SourcePos -> BareMeasure -> BareMeasure Source # | |||||
type Rep LHName Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names type Rep LHName = D1 ('MetaData "LHName" "Language.Haskell.Liquid.Types.Names" "liquidhaskell-boot-0.9.10.1.2-inplace" 'False) (C1 ('MetaCons "LHNResolved" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LHResolvedName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Symbol)) :+: C1 ('MetaCons "LHNUnresolved" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LHNameSpace) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Symbol))) |
data LHNameSpace Source #
Constructors
LHTcName | |
LHDataConName LHThisModuleNameFlag | |
LHVarName LHThisModuleNameFlag | |
LHLogicNameBinder | |
LHLogicName |
Instances
Binary LHNameSpace Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names | |||||
NFData LHNameSpace Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods rnf :: LHNameSpace -> () # | |||||
Data LHNameSpace Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LHNameSpace -> c LHNameSpace # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c LHNameSpace # toConstr :: LHNameSpace -> Constr # dataTypeOf :: LHNameSpace -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c LHNameSpace) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c LHNameSpace) # gmapT :: (forall b. Data b => b -> b) -> LHNameSpace -> LHNameSpace # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LHNameSpace -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LHNameSpace -> r # gmapQ :: (forall d. Data d => d -> u) -> LHNameSpace -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> LHNameSpace -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> LHNameSpace -> m LHNameSpace # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LHNameSpace -> m LHNameSpace # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LHNameSpace -> m LHNameSpace # | |||||
Generic LHNameSpace Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Associated Types
| |||||
Show LHNameSpace Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods showsPrec :: Int -> LHNameSpace -> ShowS # show :: LHNameSpace -> String # showList :: [LHNameSpace] -> ShowS # | |||||
Eq LHNameSpace Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names | |||||
Ord LHNameSpace Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods compare :: LHNameSpace -> LHNameSpace -> Ordering # (<) :: LHNameSpace -> LHNameSpace -> Bool # (<=) :: LHNameSpace -> LHNameSpace -> Bool # (>) :: LHNameSpace -> LHNameSpace -> Bool # (>=) :: LHNameSpace -> LHNameSpace -> Bool # max :: LHNameSpace -> LHNameSpace -> LHNameSpace # min :: LHNameSpace -> LHNameSpace -> LHNameSpace # | |||||
Hashable LHNameSpace Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names | |||||
type Rep LHNameSpace Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names type Rep LHNameSpace = D1 ('MetaData "LHNameSpace" "Language.Haskell.Liquid.Types.Names" "liquidhaskell-boot-0.9.10.1.2-inplace" 'False) ((C1 ('MetaCons "LHTcName" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LHDataConName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 LHThisModuleNameFlag))) :+: (C1 ('MetaCons "LHVarName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 LHThisModuleNameFlag)) :+: (C1 ('MetaCons "LHLogicNameBinder" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LHLogicName" 'PrefixI 'False) (U1 :: Type -> Type)))) |
data LHThisModuleNameFlag Source #
Whether the name should be looked up in the current module only or in any module
Constructors
LHThisModuleNameF | |
LHAnyModuleNameF |
Instances
Binary LHThisModuleNameFlag Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods put :: LHThisModuleNameFlag -> Put # get :: Get LHThisModuleNameFlag # putList :: [LHThisModuleNameFlag] -> Put # | |||||
NFData LHThisModuleNameFlag Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods rnf :: LHThisModuleNameFlag -> () # | |||||
Data LHThisModuleNameFlag Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LHThisModuleNameFlag -> c LHThisModuleNameFlag # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c LHThisModuleNameFlag # toConstr :: LHThisModuleNameFlag -> Constr # dataTypeOf :: LHThisModuleNameFlag -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c LHThisModuleNameFlag) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c LHThisModuleNameFlag) # gmapT :: (forall b. Data b => b -> b) -> LHThisModuleNameFlag -> LHThisModuleNameFlag # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LHThisModuleNameFlag -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LHThisModuleNameFlag -> r # gmapQ :: (forall d. Data d => d -> u) -> LHThisModuleNameFlag -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> LHThisModuleNameFlag -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> LHThisModuleNameFlag -> m LHThisModuleNameFlag # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LHThisModuleNameFlag -> m LHThisModuleNameFlag # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LHThisModuleNameFlag -> m LHThisModuleNameFlag # | |||||
Generic LHThisModuleNameFlag Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Associated Types
Methods from :: LHThisModuleNameFlag -> Rep LHThisModuleNameFlag x # to :: Rep LHThisModuleNameFlag x -> LHThisModuleNameFlag # | |||||
Show LHThisModuleNameFlag Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods showsPrec :: Int -> LHThisModuleNameFlag -> ShowS # show :: LHThisModuleNameFlag -> String # showList :: [LHThisModuleNameFlag] -> ShowS # | |||||
Eq LHThisModuleNameFlag Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods (==) :: LHThisModuleNameFlag -> LHThisModuleNameFlag -> Bool # (/=) :: LHThisModuleNameFlag -> LHThisModuleNameFlag -> Bool # | |||||
Ord LHThisModuleNameFlag Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names Methods compare :: LHThisModuleNameFlag -> LHThisModuleNameFlag -> Ordering # (<) :: LHThisModuleNameFlag -> LHThisModuleNameFlag -> Bool # (<=) :: LHThisModuleNameFlag -> LHThisModuleNameFlag -> Bool # (>) :: LHThisModuleNameFlag -> LHThisModuleNameFlag -> Bool # (>=) :: LHThisModuleNameFlag -> LHThisModuleNameFlag -> Bool # max :: LHThisModuleNameFlag -> LHThisModuleNameFlag -> LHThisModuleNameFlag # min :: LHThisModuleNameFlag -> LHThisModuleNameFlag -> LHThisModuleNameFlag # | |||||
Hashable LHThisModuleNameFlag Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names | |||||
type Rep LHThisModuleNameFlag Source # | |||||
Defined in Language.Haskell.Liquid.Types.Names type Rep LHThisModuleNameFlag = D1 ('MetaData "LHThisModuleNameFlag" "Language.Haskell.Liquid.Types.Names" "liquidhaskell-boot-0.9.10.1.2-inplace" 'False) (C1 ('MetaCons "LHThisModuleNameF" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LHAnyModuleNameF" 'PrefixI 'False) (U1 :: Type -> Type)) |
makeResolvedLHName :: LHResolvedName -> Symbol -> LHName Source #
getLHNameResolved :: HasCallStack => LHName -> LHResolvedName Source #
Get the resolved Symbol from an LHName.
getLHNameSymbol :: LHName -> Symbol Source #
Get the unresolved Symbol from an LHName.
lhNameToResolvedSymbol :: LHName -> Symbol Source #
Converts resolved names to symbols.
One important postcondition of this function is that the symbol for reflected names must match exactly the symbol for the corresponding Haskell function. Otherwise, LH would fail to link the two at various places where it is needed.
lhNameToUnqualifiedSymbol :: HasCallStack => LHName -> Symbol Source #
makeGHCLHNameFromId :: Id -> LHName Source #
makeGHCLHNameLocated :: (NamedThing a, Symbolic a) => a -> Located LHName Source #
makeLocalLHName :: Symbol -> LHName Source #
makeUnresolvedLHName :: LHNameSpace -> Symbol -> LHName Source #
mapMLocLHNames :: forall m a. (Data a, Monad m) => (Located LHName -> m (Located LHName)) -> a -> m a Source #
reflectGHCName :: Module -> Name -> LHName Source #
Creates a name in the logic namespace for the given Haskell name.
reflectLHName :: HasCallStack => Module -> LHName -> LHName Source #
Creates a name in the logic namespace for the given Haskell name.