| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Development.IDE.Graph.Internal.Types
Synopsis
- unwrapDynamic :: Typeable a => Dynamic -> a
- type TheRules = HashMap TypeRep Dynamic
- newtype Rules a = Rules (ReaderT SRules IO a)
- data SRules = SRules {
- rulesExtra :: !Dynamic
- rulesActions :: !(IORef [Action ()])
- rulesMap :: !(IORef TheRules)
- newtype Action a = Action {
- fromAction :: ReaderT SAction IO a
- data SAction = SAction {
- actionDatabase :: !Database
- actionDeps :: !(IORef ResultDeps)
- actionStack :: !Stack
- getDatabase :: Action Database
- waitForDatabaseRunningKeysAction :: Action ()
- data ShakeDatabase = ShakeDatabase !Int [Action ()] Database
- newtype Step = Step Int
- newtype Value = Value Dynamic
- data KeyDetails = KeyDetails {
- keyStatus :: !Status
- keyReverseDeps :: !KeySet
- onKeyReverseDeps :: (KeySet -> KeySet) -> KeyDetails -> KeyDetails
- data Database = Database {
- databaseExtra :: Dynamic
- databaseRules :: TheRules
- databaseStep :: !(TVar Step)
- databaseValues :: !(Map Key KeyDetails)
- waitForDatabaseRunningKeys :: Database -> IO ()
- getDatabaseValues :: Database -> IO [(Key, Status)]
- data Status
- = Clean !Result
- | Dirty (Maybe Result)
- | Running {
- runningStep :: !Step
- runningWait :: !(IO ())
- runningResult :: Result
- runningPrev :: !(Maybe Result)
- viewDirty :: Step -> Status -> Status
- getResult :: Status -> Maybe Result
- waitRunning :: Status -> IO ()
- data Result = Result {
- resultValue :: !Value
- resultBuilt :: !Step
- resultChanged :: !Step
- resultVisited :: !Step
- resultDeps :: !ResultDeps
- resultExecution :: !Seconds
- resultData :: !ByteString
- data ResultDeps
- = UnknownDeps
- | AlwaysRerunDeps !KeySet
- | ResultDeps ![KeySet]
- getResultDepsDefault :: KeySet -> ResultDeps -> KeySet
- mapResultDeps :: (KeySet -> KeySet) -> ResultDeps -> ResultDeps
- data RunMode
- data RunChanged
- data RunResult value = RunResult {
- runChanged :: RunChanged
- runStore :: ByteString
- runValue :: value
- runHook :: STM ()
- data GraphException = Exception e => GraphException {}
- fromGraphException :: Typeable b => SomeException -> Maybe b
- data Stack = Stack [Key] !KeySet
- newtype StackException = StackException Stack
- addStack :: Key -> Stack -> Either StackException Stack
- memberStack :: Key -> Stack -> Bool
- emptyStack :: Stack
Documentation
unwrapDynamic :: Typeable a => Dynamic -> 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
| SRules | |
Fields
| |
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 | |
Fields
| |
Instances
| MonadIO Action # | |
Defined in Development.IDE.Graph.Internal.Types | |
| MonadCatch Action # | |
Defined in Development.IDE.Graph.Internal.Types | |
| MonadMask Action # | |
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 # | |
Defined in Development.IDE.Graph.Internal.Types Methods throwM :: (HasCallStack, Exception e) => e -> Action a # | |
| Applicative Action # | |
| Functor Action # | |
| Monad Action # | |
| MonadFail Action # | |
Defined in Development.IDE.Graph.Internal.Types | |
| MonadUnliftIO Action # | |
Defined in Development.IDE.Graph.Internal.Types | |
Constructors
| SAction | |
Fields
| |
waitForDatabaseRunningKeysAction :: Action () #
waitForDatabaseRunningKeysAction waits for all keys in the database to finish running.
data ShakeDatabase #
Constructors
| ShakeDatabase !Int [Action ()] Database |
data KeyDetails #
Constructors
| KeyDetails | |
Fields
| |
onKeyReverseDeps :: (KeySet -> KeySet) -> KeyDetails -> KeyDetails #
Constructors
| Database | |
Fields
| |
waitForDatabaseRunningKeys :: Database -> IO () #
Constructors
| Clean !Result | |
| Dirty (Maybe Result) | |
| Running | |
Fields
| |
waitRunning :: Status -> IO () #
Constructors
| Result | |
Fields
| |
data ResultDeps #
Constructors
| UnknownDeps | |
| AlwaysRerunDeps !KeySet | |
| ResultDeps ![KeySet] |
Instances
| Monoid ResultDeps # | |
Defined in Development.IDE.Graph.Internal.Types Methods mempty :: ResultDeps # mappend :: ResultDeps -> ResultDeps -> ResultDeps # mconcat :: [ResultDeps] -> ResultDeps # | |
| Semigroup ResultDeps # | |
Defined in Development.IDE.Graph.Internal.Types Methods (<>) :: ResultDeps -> ResultDeps -> ResultDeps # sconcat :: NonEmpty ResultDeps -> ResultDeps # stimes :: Integral b => b -> ResultDeps -> ResultDeps # | |
| Show ResultDeps # | |
Defined in Development.IDE.Graph.Internal.Types Methods showsPrec :: Int -> ResultDeps -> ShowS # show :: ResultDeps -> String # showList :: [ResultDeps] -> ShowS # | |
| Eq ResultDeps # | |
Defined in Development.IDE.Graph.Internal.Types | |
getResultDepsDefault :: KeySet -> ResultDeps -> KeySet #
mapResultDeps :: (KeySet -> KeySet) -> ResultDeps -> ResultDeps #
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. |
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
The result of BuiltinRun.
Constructors
| RunResult | |
Fields
| |
data GraphException #
Constructors
| Exception e => GraphException | |
Instances
| Exception GraphException # | |
Defined in Development.IDE.Graph.Internal.Types Methods toException :: GraphException -> SomeException # fromException :: SomeException -> Maybe GraphException # displayException :: GraphException -> String # backtraceDesired :: GraphException -> Bool # | |
| Show GraphException # | |
Defined in Development.IDE.Graph.Internal.Types Methods showsPrec :: Int -> GraphException -> ShowS # show :: GraphException -> String # showList :: [GraphException] -> ShowS # | |
fromGraphException :: Typeable b => SomeException -> Maybe b #
newtype StackException #
Constructors
| StackException Stack |
Instances
| Exception StackException # | |
Defined in Development.IDE.Graph.Internal.Types Methods toException :: StackException -> SomeException # fromException :: SomeException -> Maybe StackException # displayException :: StackException -> String # backtraceDesired :: StackException -> Bool # | |
| Show StackException # | |
Defined in Development.IDE.Graph.Internal.Types Methods showsPrec :: Int -> StackException -> ShowS # show :: StackException -> String # showList :: [StackException] -> ShowS # | |
memberStack :: Key -> Stack -> Bool #
emptyStack :: Stack #