Safe Haskell | None |
---|---|
Language | Haskell98 |
This module contains the code for Incremental checking, which finds the
part of a target file (the subset of the [CoreBind]
that have been
modified since it was last checked, as determined by a diff against
a saved version of the file.
Synopsis
- data DiffCheck = DC {}
- slice :: FilePath -> [CoreBind] -> TargetSpec -> IO (Maybe DiffCheck)
- thin :: [CoreBind] -> TargetSpec -> [Var] -> DiffCheck
- saveResult :: FilePath -> Output Doc -> IO ()
- checkedVars :: DiffCheck -> [Var]
- filterBinds :: [CoreBind] -> HashSet Var -> [CoreBind]
- coreDeps :: [CoreBind] -> Deps
- dependsOn :: Deps -> [Var] -> HashSet Var
Changed binders + Unchanged Errors
Data Types ----------------------------------------------------------------
Main type of value returned for diff-check.
Use previously saved info to generate DiffCheck target
slice :: FilePath -> [CoreBind] -> TargetSpec -> IO (Maybe DiffCheck) Source #
slice
returns a subset of the [CoreBind]
of the input target
file which correspond to top-level binders whose code has changed
and their transitive dependencies.
Use target binders to generate DiffCheck target
thin :: [CoreBind] -> TargetSpec -> [Var] -> DiffCheck Source #
thin cbs sp vs
returns a subset of the cbs :: [CoreBind]
which
correspond to the definitions of vs
and the functions transitively
called therein for which there are *no* type signatures. Callees with
type signatures are assumed to satisfy those signatures.
Save current information for next time
saveResult :: FilePath -> Output Doc -> IO () Source #
save
creates an .saved version of the target
file, which will be
used to find what has changed the next time target
is checked.
Names of top-level binders that are rechecked
checkedVars :: DiffCheck -> [Var] Source #
checkedNames
returns the names of the top-level binders that will be checked
CoreBinds defining given set of Var
dependsOn :: Deps -> [Var] -> HashSet Var Source #
Given a call graph, and a list of vars, dependsOn
checks all functions to see if they call any of the
functions in the vars list.
If any do, then they must also be rechecked.
Orphan instances
Functor Diff Source # | |
ToJSON Doc Source # | |
ToJSON Stats Source # | |
ToJSON SourcePos Source # | Aeson instances ----------------------------------------------------------- |
ToJSON ErrorResult Source # | |
toJSON :: ErrorResult -> Value # toEncoding :: ErrorResult -> Encoding # toJSONList :: [ErrorResult] -> Value # toEncodingList :: [ErrorResult] -> Encoding # | |
FromJSON Doc Source # | |
FromJSON Stats Source # | |
FromJSON SourcePos Source # | |
FromJSON ErrorResult Source # | |
parseJSON :: Value -> Parser ErrorResult # parseJSONList :: Value -> Parser [ErrorResult] # | |
ToJSON (Output Doc) Source # | |
ToJSON a => ToJSON (AnnInfo a) Source # | |
FromJSON (Output Doc) Source # | |
FromJSON a => FromJSON (AnnInfo a) Source # | |