| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
DDC.Build.Interface.Store
- data Store
- new :: IO Store
- wrap :: Store -> InterfaceAA -> IO ()
- load :: FilePath -> IO (Either Error InterfaceAA)
- data Meta = Meta {}
- getMeta :: Store -> IO [Meta]
- getModuleNames :: Store -> IO [ModuleName]
- getInterfaces :: Store -> IO [InterfaceAA]
- data Super = Super {}
- findSuper :: Store -> Name -> [ModuleName] -> IO [Super]
Documentation
Abstract API to a collection of module interfaces.
This lives in IO land because in future we want to demand-load the inferface files as needed, rather than loading the full dependency tree. Keeping it in IO means that callers must also be in IO.
wrap :: Store -> InterfaceAA -> IO () Source
Add a pre-loaded interface file to the store.
Metadata for interfaces currently loaded into the store.
Constructors
| Meta | |
Fields | |
getModuleNames :: Store -> IO [ModuleName] Source
Get names of the modules currently in the store.
getInterfaces :: Store -> IO [InterfaceAA] Source
Get the fully loaded interfaces.
Interface for some top-level super.
Constructors
| Super | |
Fields
| |
Arguments
| :: Store | |
| -> Name | Name of desired super. |
| -> [ModuleName] | Names of modules to search. |
| -> IO [Super] |
See if a super is defined in any of the given modules, and if so return the module name and super type.
NOTE: This function returns an IO [Super] in preparation for the case where we load data from interface files on demand. We want to ensure that the caller is also in IO, to make the refactoring easier later.