Copyright | (c) 2013-2016 Galois Inc. |
---|---|
License | BSD3 |
Maintainer | cryptol@galois.com |
Stability | provisional |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell98 |
- data ModuleEnv = ModuleEnv {}
- data CoreLint
- resetModuleEnv :: ModuleEnv -> ModuleEnv
- initialModuleEnv :: IO ModuleEnv
- focusModule :: ModName -> ModuleEnv -> Maybe ModuleEnv
- loadedModules :: ModuleEnv -> [Module]
- focusedEnv :: ModuleEnv -> (IfaceDecls, NamingEnv, NameDisp)
- dynamicEnv :: ModuleEnv -> (IfaceDecls, NamingEnv, NameDisp)
- qualifiedEnv :: ModuleEnv -> IfaceDecls
- newtype LoadedModules = LoadedModules {}
- data LoadedModule = LoadedModule {}
- isLoaded :: ModName -> LoadedModules -> Bool
- lookupModule :: ModName -> ModuleEnv -> Maybe LoadedModule
- addLoadedModule :: FilePath -> FilePath -> Module -> LoadedModules -> LoadedModules
- removeLoadedModule :: FilePath -> LoadedModules -> LoadedModules
- data DynamicEnv = DEnv {}
- deIfaceDecls :: DynamicEnv -> IfaceDecls
Documentation
ModuleEnv | |
|
NoCoreLint | Don't run core lint |
CoreLint | Run core lint |
resetModuleEnv :: ModuleEnv -> ModuleEnv Source #
focusModule :: ModName -> ModuleEnv -> Maybe ModuleEnv Source #
Try to focus a loaded module in the module environment.
loadedModules :: ModuleEnv -> [Module] Source #
Get a list of all the loaded modules. Each module in the resulting list depends only on other modules that precede it.
focusedEnv :: ModuleEnv -> (IfaceDecls, NamingEnv, NameDisp) Source #
Produce an ifaceDecls that represents the focused environment of the module
system, as well as a NameDisp
for pretty-printing names according to the
imports.
XXX This could really do with some better error handling, just returning mempty when one of the imports fails isn't really desirable.
dynamicEnv :: ModuleEnv -> (IfaceDecls, NamingEnv, NameDisp) Source #
The unqualified declarations and name environment for the dynamic environment.
qualifiedEnv :: ModuleEnv -> IfaceDecls Source #
Retrieve all IfaceDecls
referenced by a module, as well as all of its
public and private declarations, checking expressions
newtype LoadedModules Source #
Invariant: All the dependencies of any module m
must precede m
in the list.
data LoadedModule Source #
LoadedModule | |
|
lookupModule :: ModName -> ModuleEnv -> Maybe LoadedModule Source #
addLoadedModule :: FilePath -> FilePath -> Module -> LoadedModules -> LoadedModules Source #
data DynamicEnv Source #
Extra information we need to carry around to dynamically extend
an environment outside the context of a single module. Particularly
useful when dealing with interactive declarations as in :let
or
it
.
deIfaceDecls :: DynamicEnv -> IfaceDecls Source #
Build IfaceDecls
that correspond to all of the bindings in the
dynamic environment.
XXX: if we ever add type synonyms or newtypes at the REPL, revisit this.