Skip to content

Commit a65ac5c

Browse files
committed
run refreshDeps in a single asyncWithCleanUp
1 parent 3107879 commit a65ac5c

File tree

1 file changed

+8
-8
lines changed
  • hls-graph/src/Development/IDE/Graph/Internal

1 file changed

+8
-8
lines changed

hls-graph/src/Development/IDE/Graph/Internal/Database.hs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -143,31 +143,31 @@ isDirty me = any (\(_,dep) -> resultBuilt me < resultChanged dep)
143143
-- * If no dirty dependencies and we have evaluated the key previously, then we refresh it in the current thread.
144144
-- This assumes that the implementation will be a lookup
145145
-- * Otherwise, we spawn a new thread to refresh the dirty deps (if any) and the key itself
146-
refreshDeps :: KeySet -> Database -> Stack -> Key -> Result -> [KeySet] -> AIO (IO Result)
146+
refreshDeps :: KeySet -> Database -> Stack -> Key -> Result -> [KeySet] -> AIO Result
147147
refreshDeps visited db stack key result = \case
148148
-- no more deps to refresh
149-
[] -> pure $ compute db stack key RunDependenciesSame (Just result)
149+
[] -> liftIO $ compute db stack key RunDependenciesSame (Just result)
150150
(dep:deps) -> do
151151
let newVisited = dep <> visited
152152
res <- builder db stack (toListKeySet (dep `differenceKeySet` visited))
153153
case res of
154154
Left res -> if isDirty result res
155155
-- restart the computation if any of the deps are dirty
156-
then asyncWithCleanUp $ liftIO $ compute db stack key RunDependenciesChanged (Just result)
156+
then liftIO $ compute db stack key RunDependenciesChanged (Just result)
157157
-- else kick the rest of the deps
158158
else refreshDeps newVisited db stack key result deps
159-
Right iores -> asyncWithCleanUp $ liftIO $ do
160-
res <- iores
159+
Right iores -> do
160+
res <- liftIO iores
161161
if isDirty result res
162-
then compute db stack key RunDependenciesChanged (Just result)
163-
else join $ runAIO $ refreshDeps newVisited db stack key result deps
162+
then liftIO $ compute db stack key RunDependenciesChanged (Just result)
163+
else refreshDeps newVisited db stack key result deps
164164

165165
-- | Refresh a key:
166166
refresh :: Database -> Stack -> Key -> Maybe Result -> AIO (IO Result)
167167
-- refresh _ st k _ | traceShow ("refresh", st, k) False = undefined
168168
refresh db stack key result = case (addStack key stack, result) of
169169
(Left e, _) -> throw e
170-
(Right stack, Just me@Result{resultDeps = ResultDeps deps}) -> refreshDeps mempty db stack key me (reverse deps)
170+
(Right stack, Just me@Result{resultDeps = ResultDeps deps}) -> asyncWithCleanUp $ refreshDeps mempty db stack key me (reverse deps)
171171
(Right stack, _) ->
172172
asyncWithCleanUp $ liftIO $ compute db stack key RunDependenciesChanged result
173173

0 commit comments

Comments
 (0)