Copyright | (c) 2013-2015 Galois, Inc. |
---|---|
License | BSD3 |
Maintainer | cryptol@galois.com |
Stability | provisional |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell98 |
- data ImportSource
- importedModule :: ImportSource -> ModName
- data ModuleError
- = ModuleNotFound ModName [FilePath]
- | CantFindFile FilePath
- | OtherIOError FilePath IOException
- | ModuleParseError FilePath ParseError
- | RecursiveModules [ImportSource]
- | RenamerErrors ImportSource [RenamerError]
- | NoPatErrors ImportSource [Error]
- | NoIncludeErrors ImportSource [IncludeError]
- | TypeCheckingFailed ImportSource [(Range, Error)]
- | OtherFailure String
- | ModuleNameMismatch ModName (Located ModName)
- | DuplicateModuleName ModName FilePath FilePath
- moduleNotFound :: ModName -> [FilePath] -> ModuleM a
- cantFindFile :: FilePath -> ModuleM a
- otherIOError :: FilePath -> IOException -> ModuleM a
- moduleParseError :: FilePath -> ParseError -> ModuleM a
- recursiveModules :: [ImportSource] -> ModuleM a
- renamerErrors :: [RenamerError] -> ModuleM a
- noPatErrors :: [Error] -> ModuleM a
- noIncludeErrors :: [IncludeError] -> ModuleM a
- typeCheckingFailed :: [(Range, Error)] -> ModuleM a
- moduleNameMismatch :: ModName -> Located ModName -> ModuleM a
- duplicateModuleName :: ModName -> FilePath -> FilePath -> ModuleM a
- data ModuleWarning
- warn :: [ModuleWarning] -> ModuleM ()
- typeCheckWarnings :: [(Range, Warning)] -> ModuleM ()
- renamerWarnings :: [RenamerWarning] -> ModuleM ()
- data RO = RO {
- roLoading :: [ImportSource]
- emptyRO :: RO
- newtype ModuleT m a = ModuleT {
- unModuleT :: ReaderT RO (StateT ModuleEnv (ExceptionT ModuleError (WriterT [ModuleWarning] m))) a
- runModuleT :: Monad m => ModuleEnv -> ModuleT m a -> m (Either ModuleError (a, ModuleEnv), [ModuleWarning])
- type ModuleM = ModuleT IO
- runModuleM :: ModuleEnv -> ModuleM a -> IO (Either ModuleError (a, ModuleEnv), [ModuleWarning])
- io :: BaseM m IO => IO a -> ModuleT m a
- getModuleEnv :: Monad m => ModuleT m ModuleEnv
- setModuleEnv :: Monad m => ModuleEnv -> ModuleT m ()
- modifyModuleEnv :: Monad m => (ModuleEnv -> ModuleEnv) -> ModuleT m ()
- isLoaded :: ModName -> ModuleM Bool
- loadingImport :: Located Import -> ModuleM a -> ModuleM a
- loadingModule :: ModName -> ModuleM a -> ModuleM a
- interactive :: ModuleM a -> ModuleM a
- loading :: ImportSource -> ModuleM a -> ModuleM a
- getImportSource :: ModuleM ImportSource
- getIface :: ModName -> ModuleM Iface
- getNameSeeds :: ModuleM NameSeeds
- getMonoBinds :: ModuleM Bool
- setMonoBinds :: Bool -> ModuleM ()
- setNameSeeds :: NameSeeds -> ModuleM ()
- unloadModule :: FilePath -> ModuleM ()
- loadedModule :: FilePath -> Module -> ModuleM ()
- modifyEvalEnv :: (EvalEnv -> EvalEnv) -> ModuleM ()
- getEvalEnv :: ModuleM EvalEnv
- getFocusedModule :: ModuleM (Maybe ModName)
- setFocusedModule :: ModName -> ModuleM ()
- getSearchPath :: ModuleM [FilePath]
- withPrependedSearchPath :: [FilePath] -> ModuleM a -> ModuleM a
- getFocusedEnv :: ModuleM IfaceDecls
- getQualifiedEnv :: ModuleM IfaceDecls
- getDynEnv :: ModuleM DynamicEnv
- setDynEnv :: DynamicEnv -> ModuleM ()
Documentation
data ImportSource Source
data ModuleError Source
ModuleNotFound ModName [FilePath] | Unable to find the module given, tried looking in these paths |
CantFindFile FilePath | Unable to open a file |
OtherIOError FilePath IOException | Some other IO error occurred while reading this file |
ModuleParseError FilePath ParseError | Generated this parse error when parsing the file for module m |
RecursiveModules [ImportSource] | Recursive module group discovered |
RenamerErrors ImportSource [RenamerError] | Problems during the renaming phase |
NoPatErrors ImportSource [Error] | Problems during the NoPat phase |
NoIncludeErrors ImportSource [IncludeError] | Problems during the NoInclude phase |
TypeCheckingFailed ImportSource [(Range, Error)] | Problems during type checking |
OtherFailure String | Problems after type checking, eg. specialization |
ModuleNameMismatch ModName (Located ModName) | Module loaded by 'import' statement has the wrong module name |
DuplicateModuleName ModName FilePath FilePath | Two modules loaded from different files have the same module name |
moduleNotFound :: ModName -> [FilePath] -> ModuleM a Source
cantFindFile :: FilePath -> ModuleM a Source
otherIOError :: FilePath -> IOException -> ModuleM a Source
moduleParseError :: FilePath -> ParseError -> ModuleM a Source
recursiveModules :: [ImportSource] -> ModuleM a Source
renamerErrors :: [RenamerError] -> ModuleM a Source
noPatErrors :: [Error] -> ModuleM a Source
noIncludeErrors :: [IncludeError] -> ModuleM a Source
typeCheckingFailed :: [(Range, Error)] -> ModuleM a Source
data ModuleWarning Source
warn :: [ModuleWarning] -> ModuleM () Source
typeCheckWarnings :: [(Range, Warning)] -> ModuleM () Source
renamerWarnings :: [RenamerWarning] -> ModuleM () Source
RO | |
|
ModuleT | |
|
runModuleT :: Monad m => ModuleEnv -> ModuleT m a -> m (Either ModuleError (a, ModuleEnv), [ModuleWarning]) Source
runModuleM :: ModuleEnv -> ModuleM a -> IO (Either ModuleError (a, ModuleEnv), [ModuleWarning]) Source
getModuleEnv :: Monad m => ModuleT m ModuleEnv Source
setModuleEnv :: Monad m => ModuleEnv -> ModuleT m () Source
loadingModule :: ModName -> ModuleM a -> ModuleM a Source
interactive :: ModuleM a -> ModuleM a Source
Push an "interactive" context onto the loading stack. A bit of a hack, as it uses a faked module name
loading :: ImportSource -> ModuleM a -> ModuleM a Source
getImportSource :: ModuleM ImportSource Source
Get the currently focused import source.
setMonoBinds :: Bool -> ModuleM () Source
setNameSeeds :: NameSeeds -> ModuleM () Source
unloadModule :: FilePath -> ModuleM () Source
Remove a module from the set of loaded module, by its path.
loadedModule :: FilePath -> Module -> ModuleM () Source
modifyEvalEnv :: (EvalEnv -> EvalEnv) -> ModuleM () Source
setFocusedModule :: ModName -> ModuleM () Source
withPrependedSearchPath :: [FilePath] -> ModuleM a -> ModuleM a Source
Run a ModuleM
action in a context with a prepended search
path. Useful for temporarily looking in other places while
resolving imports, for example.
setDynEnv :: DynamicEnv -> ModuleM () Source