libcspm-0.1: src/CSPM/TypeChecker/Environment.hs
module CSPM.TypeChecker.Environment (
module Util.HierarchicalMap,
Environment,
mkSymbolInformation, SymbolInformation(..)
)
where
import CSPM.DataStructures.Names
import CSPM.DataStructures.Types
import Util.HierarchicalMap
-- | Make symbol information for the type assuming that the symbol
-- is not deprecated and its type is not unsafe.
mkSymbolInformation :: TypeScheme -> SymbolInformation
mkSymbolInformation t = SymbolInformation {
typeScheme = t,
isDeprecated = False,
isTypeUnsafe = False
}
-- | Used to represent information about a symbol
data SymbolInformation = SymbolInformation {
-- | The type of the symbol
typeScheme :: TypeScheme,
-- | Is this symbol deprecated
isDeprecated :: Bool,
-- | Is this symbols' type too general (if so
-- use of it will emit a soundness warning)
isTypeUnsafe :: Bool
}
deriving (Eq, Show)
type Environment = HierarchicalMap Name SymbolInformation