hls-graph-1.4.0.0: Haskell Language Server internal graph API
Safe HaskellNone
LanguageHaskell2010

Development.IDE.Graph.Rule

Synopsis

Defining builtin rules

Functions and types for defining new types of Shake rules.

addRule :: (RuleResult key ~ value, ShakeValue key, Typeable value, NFData value, Show value) => (key -> Maybe ByteString -> RunMode -> Action (RunResult value)) -> Rules () Source #

data RunMode #

What mode a rule is running in, passed as an argument to BuiltinRun.

Constructors

RunDependenciesSame

My dependencies have not changed.

RunDependenciesChanged

At least one of my dependencies from last time have changed, or I have no recorded dependencies.

Instances

Instances details
Eq RunMode 
Instance details

Defined in Development.Shake.Internal.Core.Types

Methods

(==) :: RunMode -> RunMode -> Bool #

(/=) :: RunMode -> RunMode -> Bool #

Show RunMode 
Instance details

Defined in Development.Shake.Internal.Core.Types

NFData RunMode 
Instance details

Defined in Development.Shake.Internal.Core.Types

Methods

rnf :: RunMode -> () #

data RunChanged #

How the output of a rule has changed.

Constructors

ChangedNothing

Nothing has changed.

ChangedStore

The stored value has changed, but in a way that should be considered identical (used rarely).

ChangedRecomputeSame

I recomputed the value and it was the same.

ChangedRecomputeDiff

I recomputed the value and it was different.

Instances

Instances details
Eq RunChanged 
Instance details

Defined in Development.Shake.Internal.Core.Types

Show RunChanged 
Instance details

Defined in Development.Shake.Internal.Core.Types

NFData RunChanged 
Instance details

Defined in Development.Shake.Internal.Core.Types

Methods

rnf :: RunChanged -> () #

data RunResult value #

The result of BuiltinRun.

Constructors

RunResult 

Fields

Instances

Instances details
Functor RunResult 
Instance details

Defined in Development.Shake.Internal.Core.Types

Methods

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

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

NFData value => NFData (RunResult value) 
Instance details

Defined in Development.Shake.Internal.Core.Types

Methods

rnf :: RunResult value -> () #

Calling builtin rules

Wrappers around calling Shake rules. In general these should be specialised to a builtin rule.

apply :: (RuleResult key ~ value, ShakeValue key, Typeable value) => [key] -> Action [value] Source #

apply1 :: (RuleResult key ~ value, ShakeValue key, Typeable value) => key -> Action value Source #