liquidhaskell-0.8.10.1: Liquid Types for Haskell
Safe HaskellNone
LanguageHaskell98

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

Changed binders + Unchanged Errors

data DiffCheck #

Data Types ----------------------------------------------------------------

Main type of value returned for diff-check.

Constructors

DC 

Instances

Instances details
PPrint DiffCheck # 
Instance details

Defined in Language.Haskell.Liquid.UX.DiffCheck

Methods

pprintTidy :: Tidy -> DiffCheck -> Doc #

pprintPrec :: Int -> Tidy -> DiffCheck -> Doc #

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] #

coreDeps :: [CoreBind] -> Deps #

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 # 
Instance details

Methods

fmap :: (a -> b) -> Diff a -> Diff b #

(<$) :: a -> Diff b -> Diff a #

FromJSON Doc # 
Instance details

Methods

parseJSON :: Value -> Parser Doc

parseJSONList :: Value -> Parser [Doc]

FromJSON SourcePos # 
Instance details

Methods

parseJSON :: Value -> Parser SourcePos

parseJSONList :: Value -> Parser [SourcePos]

FromJSON Stats # 
Instance details

Methods

parseJSON :: Value -> Parser Stats

parseJSONList :: Value -> Parser [Stats]

FromJSON ErrorResult # 
Instance details

Methods

parseJSON :: Value -> Parser ErrorResult

parseJSONList :: Value -> Parser [ErrorResult]

ToJSON Doc # 
Instance details

Methods

toJSON :: Doc -> Value

toEncoding :: Doc -> Encoding

toJSONList :: [Doc] -> Value

toEncodingList :: [Doc] -> Encoding

ToJSON SourcePos #

Aeson instances -----------------------------------------------------------

Instance details

Methods

toJSON :: SourcePos -> Value

toEncoding :: SourcePos -> Encoding

toJSONList :: [SourcePos] -> Value

toEncodingList :: [SourcePos] -> Encoding

ToJSON Stats # 
Instance details

Methods

toJSON :: Stats -> Value

toEncoding :: Stats -> Encoding

toJSONList :: [Stats] -> Value

toEncodingList :: [Stats] -> Encoding

ToJSON ErrorResult # 
Instance details

Methods

toJSON :: ErrorResult -> Value

toEncoding :: ErrorResult -> Encoding

toJSONList :: [ErrorResult] -> Value

toEncodingList :: [ErrorResult] -> Encoding

FromJSON (Output Doc) # 
Instance details

Methods

parseJSON :: Value -> Parser (Output Doc)

parseJSONList :: Value -> Parser [Output Doc]

FromJSON a => FromJSON (AnnInfo a) # 
Instance details

Methods

parseJSON :: Value -> Parser (AnnInfo a)

parseJSONList :: Value -> Parser [AnnInfo a]

ToJSON (Output Doc) # 
Instance details

Methods

toJSON :: Output Doc -> Value

toEncoding :: Output Doc -> Encoding

toJSONList :: [Output Doc] -> Value

toEncodingList :: [Output Doc] -> Encoding

ToJSON a => ToJSON (AnnInfo a) # 
Instance details

Methods

toJSON :: AnnInfo a -> Value

toEncoding :: AnnInfo a -> Encoding

toJSONList :: [AnnInfo a] -> Value

toEncodingList :: [AnnInfo a] -> Encoding