Safe Haskell | None |
---|---|
Language | Haskell2010 |
MkIface
Description
Module for constructing ModIface
values (interface files),
writing them to disk and comparing two versions to see if
recompilation is required.
Synopsis
- mkPartialIface :: HscEnv -> ModDetails -> ModGuts -> PartialModIface
- mkFullIface :: HscEnv -> PartialModIface -> IO ModIface
- mkIfaceTc :: HscEnv -> SafeHaskellMode -> ModDetails -> TcGblEnv -> IO ModIface
- writeIfaceFile :: DynFlags -> FilePath -> ModIface -> IO ()
- checkOldIface :: HscEnv -> ModSummary -> SourceModified -> Maybe ModIface -> IO (RecompileRequired, Maybe ModIface)
- data RecompileRequired
- recompileRequired :: RecompileRequired -> Bool
- mkIfaceExports :: [AvailInfo] -> [IfaceExport]
- coAxiomToIfaceDecl :: CoAxiom br -> IfaceDecl
- tyThingToIfaceDecl :: TyThing -> IfaceDecl
Documentation
mkPartialIface :: HscEnv -> ModDetails -> ModGuts -> PartialModIface Source #
mkFullIface :: HscEnv -> PartialModIface -> IO ModIface Source #
Fully instantiate a interface Adds fingerprints and potentially code generator produced information.
mkIfaceTc :: HscEnv -> SafeHaskellMode -> ModDetails -> TcGblEnv -> IO ModIface Source #
Make an interface from the results of typechecking only. Useful
for non-optimising compilation, or where we aren't generating any
object code at all (HscNothing
).
checkOldIface :: HscEnv -> ModSummary -> SourceModified -> Maybe ModIface -> IO (RecompileRequired, Maybe ModIface) Source #
Top level function to check if the version of an old interface file is equivalent to the current source file the user asked us to compile. If the same, we can avoid recompilation. We return a tuple where the first element is a bool saying if we should recompile the object file and the second is maybe the interface file, where Nothing means to rebuild the interface file and not use the existing one.
data RecompileRequired Source #
Constructors
UpToDate | everything is up to date, recompilation is not required |
MustCompile | The .hs file has been touched, or the .o/.hi file does not exist |
RecompBecause String | The .o/.hi files are up to date, but something else has changed to force recompilation; the String says what (one-line summary) |
Instances
Eq RecompileRequired # | |
Defined in MkIface Methods (==) :: RecompileRequired -> RecompileRequired -> Bool # (/=) :: RecompileRequired -> RecompileRequired -> Bool # | |
Semigroup RecompileRequired # | |
Defined in MkIface Methods (<>) :: RecompileRequired -> RecompileRequired -> RecompileRequired Source # sconcat :: NonEmpty RecompileRequired -> RecompileRequired Source # stimes :: Integral b => b -> RecompileRequired -> RecompileRequired Source # | |
Monoid RecompileRequired # | |
Defined in MkIface Methods mempty :: RecompileRequired Source # mappend :: RecompileRequired -> RecompileRequired -> RecompileRequired Source # mconcat :: [RecompileRequired] -> RecompileRequired Source # |
mkIfaceExports :: [AvailInfo] -> [IfaceExport] Source #
coAxiomToIfaceDecl :: CoAxiom br -> IfaceDecl Source #