liquidhaskell-0.8.10.1: Liquid Types for Haskell
Safe HaskellNone
LanguageHaskell98

Language.Haskell.Liquid.Bare.Resolve

Description

This module has the code that uses the GHC definitions to: 1. MAKE a name-resolution environment, 2. USE the environment to translate plain symbols into Var, TyCon, etc.

Synopsis

Creating the Environment

makeEnv :: Config -> GhcSrc -> LogicMap -> [(ModName, BareSpec)] -> Env #

Creating an environment

Resolving symbols

class ResolveSym a where #

Using the environment

Instances

Instances details
ResolveSym DataCon # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

ResolveSym Var # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

ResolveSym TyCon # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

ResolveSym Symbol # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

resolveLocSym :: Env -> ModName -> String -> LocSymbol -> Either UserError Symbol #

class Qualify a where #

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> a -> a #

Instances

Instances details
Qualify Equation # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> Equation -> Equation #

Qualify Qualifier # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> Qualifier -> Qualifier #

Qualify Symbol # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> Symbol -> Symbol #

Qualify Expr # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> Expr -> Expr #

Qualify Body # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> Body -> Body #

Qualify SizeFun # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> SizeFun -> SizeFun #

Qualify DataCtor # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> DataCtor -> DataCtor #

Qualify DataDecl # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> DataDecl -> DataDecl #

Qualify SpecType # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> SpecType -> SpecType #

Qualify BareType # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> BareType -> BareType #

Qualify RReft # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> RReft -> RReft #

Qualify TyConInfo # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> TyConInfo -> TyConInfo #

Qualify RTyCon # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> RTyCon -> RTyCon #

Qualify TyConP # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> TyConP -> TyConP #

Qualify TyConMap # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> TyConMap -> TyConMap #

Qualify BareMeasure # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> BareMeasure -> BareMeasure #

Qualify BareSpec # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> BareSpec -> BareSpec #

Qualify ModSpecs # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> ModSpecs -> ModSpecs #

Qualify a => Qualify [a] # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> [a] -> [a] #

Qualify a => Qualify (Maybe a) # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> Maybe a -> Maybe a #

Qualify a => Qualify (Located a) # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> Located a -> Located a #

Qualify b => Qualify (a, b) # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> (a, b) -> (a, b) #

Qualify (Measure SpecType DataCon) # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Qualify (Def ty ctor) # 
Instance details

Defined in Language.Haskell.Liquid.Bare.Resolve

Methods

qualify :: Env -> ModName -> SourcePos -> [Symbol] -> Def ty ctor -> Def ty ctor #

qualifyTop :: Qualify a => Env -> ModName -> SourcePos -> a -> a #

Qualify various names

qualifyTopDummy :: Qualify a => Env -> ModName -> a -> a #

Looking up names

maybeResolveSym :: ResolveSym a => Env -> ModName -> String -> LocSymbol -> Maybe a #

maybeResolve wraps the plain resolve to return Nothing if the name being searched for is unknown.

lookupGhcNamedVar :: (NamedThing a, Symbolic a) => Env -> ModName -> a -> Maybe Var #

Checking if names exist

knownGhcType :: Env -> ModName -> LocBareType -> Bool #

Checking existence of names

Misc

srcVars :: GhcSrc -> [Var] #

We prioritize the Ghc.Var in srcVars because _giDefVars and gsTyThings have _different_ values for the same binder, with different types where the type params are alpha-renamed. However, for absref, we need _the same_ type parameters as used by GHC as those are used inside the lambdas and other bindings in the code. See also [NOTE: Plug-Holes-TyVars] and tests-absref-pos-Papp00.hs

Conversions from Bare

ofBareType :: Env -> ModName -> SourcePos -> Maybe [PVar BSort] -> BareType -> SpecType #

ofBareType and ofBareTypeE should be the _only_ SpecType constructors

Post-processing types

txRefSort :: TyConMap -> TCEmb TyCon -> LocSpecType -> LocSpecType #

Is this the SAME as addTyConInfo? No. txRefSort (1) adds the _real_ sorts to RProp, (2) gathers _extra_ RProp at turns them into refinements, e.g. testsposmulti-pred-app-00.hs

Fixing local variables

resolveLocalBinds :: Env -> [(Var, LocBareType, Maybe [Located Expr])] -> [(Var, LocBareType, Maybe [Located Expr])] #

resolveLocalBinds resolves that the "free" variables that appear in the type-sigs for non-toplevel binders (that correspond to other locally bound) source variables that are visible at that at non-top-level scope. e.g. tests-names-pos-local02.hs

partitionLocalBinds :: [(Var, a)] -> ([(Var, a)], [(Var, a)]) #