Safe Haskell | None |
---|---|
Language | Haskell98 |
Language.Haskell.Liquid.UX.DiffCheck
Description
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.
Instances
PPrint DiffCheck # | |
Defined in Language.Haskell.Liquid.UX.DiffCheck |
Use previously saved info to generate DiffCheck target
slice :: FilePath -> [CoreBind] -> TargetSpec -> IO (Maybe DiffCheck) #
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 #
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 () #
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] #
checkedNames
returns the names of the top-level binders that will be checked
CoreBinds defining given set of Var
filterBinds :: [CoreBind] -> HashSet Var -> [CoreBind] #
dependsOn :: Deps -> [Var] -> HashSet Var #
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 # | |
FromJSON Doc # | |
FromJSON SourcePos # | |
FromJSON Stats # | |
FromJSON ErrorResult # | |
ToJSON Doc # | |
ToJSON SourcePos # | Aeson instances ----------------------------------------------------------- |
Methods toEncoding :: SourcePos -> Encoding toJSONList :: [SourcePos] -> Value toEncodingList :: [SourcePos] -> Encoding | |
ToJSON Stats # | |
Methods toJSON :: Stats -> Value toEncoding :: Stats -> Encoding toJSONList :: [Stats] -> Value toEncodingList :: [Stats] -> Encoding | |
ToJSON ErrorResult # | |
Methods toJSON :: ErrorResult -> Value toEncoding :: ErrorResult -> Encoding toJSONList :: [ErrorResult] -> Value toEncodingList :: [ErrorResult] -> Encoding | |
FromJSON (Output Doc) # | |
FromJSON a => FromJSON (AnnInfo a) # | |
ToJSON (Output Doc) # | |
Methods toEncoding :: Output Doc -> Encoding toJSONList :: [Output Doc] -> Value toEncodingList :: [Output Doc] -> Encoding | |
ToJSON a => ToJSON (AnnInfo a) # | |
Methods toEncoding :: AnnInfo a -> Encoding toJSONList :: [AnnInfo a] -> Value toEncodingList :: [AnnInfo a] -> Encoding |