hls-graph-2.9.0.0: Haskell Language Server internal graph API
Safe HaskellNone
LanguageGHC2021

Development.IDE.Graph.Internal.Types

Synopsis

Documentation

newtype Rules a #

A computation that defines all the rules that form part of the computation graph.

Rules has access to IO through MonadIO. Use of IO is at your own risk: if you write Rules that throw exceptions, then you need to make sure to handle them yourself when you run the resulting Rules.

Constructors

Rules (ReaderT SRules IO a) 

Instances

Instances details
MonadIO Rules # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

liftIO :: IO a -> Rules a #

Applicative Rules # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

pure :: a -> Rules a #

(<*>) :: Rules (a -> b) -> Rules a -> Rules b #

liftA2 :: (a -> b -> c) -> Rules a -> Rules b -> Rules c #

(*>) :: Rules a -> Rules b -> Rules b #

(<*) :: Rules a -> Rules b -> Rules a #

Functor Rules # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

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

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

Monad Rules # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

(>>=) :: Rules a -> (a -> Rules b) -> Rules b #

(>>) :: Rules a -> Rules b -> Rules b #

return :: a -> Rules a #

Monoid a => Monoid (Rules a) # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

mempty :: Rules a #

mappend :: Rules a -> Rules a -> Rules a #

mconcat :: [Rules a] -> Rules a #

Semigroup a => Semigroup (Rules a) # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

(<>) :: Rules a -> Rules a -> Rules a #

sconcat :: NonEmpty (Rules a) -> Rules a #

stimes :: Integral b => b -> Rules a -> Rules a #

data SRules #

Constructors

SRules 

newtype Action a #

An action representing something that can be run as part of a Rule.

Actions can be pure functions but also have access to IO via MonadIO and 'MonadUnliftIO. It should be assumed that actions throw exceptions, these can be caught with actionCatch. In particular, it is permissible to use the MonadFail instance, which will lead to an IOException.

Constructors

Action 

Instances

Instances details
MonadIO Action # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

liftIO :: IO a -> Action a #

MonadCatch Action # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

catch :: (HasCallStack, Exception e) => Action a -> (e -> Action a) -> Action a #

MonadMask Action # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

mask :: HasCallStack => ((forall a. Action a -> Action a) -> Action b) -> Action b #

uninterruptibleMask :: HasCallStack => ((forall a. Action a -> Action a) -> Action b) -> Action b #

generalBracket :: HasCallStack => Action a -> (a -> ExitCase b -> Action c) -> (a -> Action b) -> Action (b, c) #

MonadThrow Action # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

throwM :: (HasCallStack, Exception e) => e -> Action a #

Applicative Action # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

pure :: a -> Action a #

(<*>) :: Action (a -> b) -> Action a -> Action b #

liftA2 :: (a -> b -> c) -> Action a -> Action b -> Action c #

(*>) :: Action a -> Action b -> Action b #

(<*) :: Action a -> Action b -> Action a #

Functor Action # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

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

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

Monad Action # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

(>>=) :: Action a -> (a -> Action b) -> Action b #

(>>) :: Action a -> Action b -> Action b #

return :: a -> Action a #

MonadFail Action # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

fail :: String -> Action a #

MonadUnliftIO Action # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

withRunInIO :: ((forall a. Action a -> IO a) -> IO b) -> Action b #

waitForDatabaseRunningKeysAction :: Action () #

waitForDatabaseRunningKeysAction waits for all keys in the database to finish running.

newtype Step #

Constructors

Step Int 

Instances

Instances details
Show Step # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

showsPrec :: Int -> Step -> ShowS #

show :: Step -> String #

showList :: [Step] -> ShowS #

Eq Step # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

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

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

Ord Step # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

compare :: Step -> Step -> Ordering #

(<) :: Step -> Step -> Bool #

(<=) :: Step -> Step -> Bool #

(>) :: Step -> Step -> Bool #

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

max :: Step -> Step -> Step #

min :: Step -> Step -> Step #

Hashable Step # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

hashWithSalt :: Int -> Step -> Int #

hash :: Step -> Int #

newtype Value #

Constructors

Value Dynamic 

data KeyDetails #

Constructors

KeyDetails 

data Result #

Constructors

Result 

Fields

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

Defined in Development.IDE.Graph.Internal.Types

Methods

rnf :: RunMode -> () #

Show RunMode # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Eq RunMode # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

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

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

data RunChanged #

How the output of a rule has changed.

Constructors

ChangedNothing

Nothing has changed.

ChangedRecomputeSame

I recomputed the value and it was the same.

ChangedRecomputeDiff

I recomputed the value and it was different.

Instances

Instances details
FromJSON RunChanged # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

ToJSON RunChanged # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

NFData RunChanged # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

rnf :: RunChanged -> () #

Generic RunChanged # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Associated Types

type Rep RunChanged 
Instance details

Defined in Development.IDE.Graph.Internal.Types

type Rep RunChanged = D1 ('MetaData "RunChanged" "Development.IDE.Graph.Internal.Types" "hls-graph-2.9.0.0-BTFwvtRNXWYHYsIjrHY3mj" 'False) (C1 ('MetaCons "ChangedNothing" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ChangedRecomputeSame" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ChangedRecomputeDiff" 'PrefixI 'False) (U1 :: Type -> Type)))
Show RunChanged # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Eq RunChanged # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

type Rep RunChanged # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

type Rep RunChanged = D1 ('MetaData "RunChanged" "Development.IDE.Graph.Internal.Types" "hls-graph-2.9.0.0-BTFwvtRNXWYHYsIjrHY3mj" 'False) (C1 ('MetaCons "ChangedNothing" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ChangedRecomputeSame" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ChangedRecomputeDiff" 'PrefixI 'False) (U1 :: Type -> Type)))

data RunResult value #

The result of BuiltinRun.

Constructors

RunResult 

Fields

Instances

Instances details
Functor RunResult # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

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

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

data GraphException #

Constructors

Exception e => GraphException 

Fields

data Stack #

Constructors

Stack [Key] !KeySet 

Instances

Instances details
Show Stack # 
Instance details

Defined in Development.IDE.Graph.Internal.Types

Methods

showsPrec :: Int -> Stack -> ShowS #

show :: Stack -> String #

showList :: [Stack] -> ShowS #