Skip to content

Commit 95a42f0

Browse files
committed
recover AlwaysRerunDeps
1 parent 69d1dad commit 95a42f0

File tree

4 files changed

+14
-10
lines changed

4 files changed

+14
-10
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ shakeGetBuildEdges :: ShakeDatabase -> IO Int
7878
shakeGetBuildEdges (ShakeDatabase _ _ db) = do
7979
keys <- getDatabaseValues db
8080
let ress = mapMaybe (getResult . snd) keys
81-
return $ sum $ map (lengthKeySet . fold . getResultDepsDefault mempty . resultDeps) ress
81+
return $ sum $ map (lengthKeySet . getResultDepsDefault mempty . resultDeps) ress
8282

8383
-- | Returns an approximation of the database keys,
8484
-- annotated with how long ago (in # builds) they were visited

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ compute db@Database{..} stack key mode result = do
187187
actualDeps = if runChanged /= ChangedNothing then deps else previousDeps
188188
previousDeps= maybe UnknownDeps resultDeps result
189189
let res = Result runValue built' changed built actualDeps execution runStore
190-
case fold $ getResultDepsDefault mempty actualDeps of
190+
case getResultDepsDefault mempty actualDeps of
191191
deps | not (nullKeySet deps)
192192
&& runChanged /= ChangedNothing
193193
-> do
@@ -197,7 +197,7 @@ compute db@Database{..} stack key mode result = do
197197
-- on the next build.
198198
void $
199199
updateReverseDeps key db
200-
(fold $ getResultDepsDefault mempty previousDeps)
200+
(getResultDepsDefault mempty previousDeps)
201201
deps
202202
_ -> pure ()
203203
atomicallyNamed "compute" $ SMap.focus (updateStatus $ Clean res) key databaseValues

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ toReport :: Database -> IO ([ProfileEntry], KeyMap Int)
109109
toReport db = do
110110
status <- prepareForDependencyOrder db
111111
let order = dependencyOrder show
112-
$ map (second (toListKeySet . fold . getResultDepsDefault (singletonKeySet $ newKey "alwaysRerun") . resultDeps))
112+
$ map (second (toListKeySet . getResultDepsDefault (singletonKeySet $ newKey "alwaysRerun") . resultDeps))
113113
$ toListKeyMap status
114114
ids = fromListKeyMap $ zip order [0..]
115115

@@ -122,7 +122,7 @@ toReport db = do
122122
,prfBuilt = fromStep resultBuilt
123123
,prfVisited = fromStep resultVisited
124124
,prfChanged = fromStep resultChanged
125-
,prfDepends = map pure $ elemsKeyMap $ restrictKeysKeyMap ids $ fold $ getResultDepsDefault (singletonKeySet $ newKey "alwaysRerun") resultDeps
125+
,prfDepends = map pure $ elemsKeyMap $ restrictKeysKeyMap ids $ getResultDepsDefault (singletonKeySet $ newKey "alwaysRerun") resultDeps
126126
,prfExecution = resultExecution
127127
}
128128
where fromStep i = fromJust $ Map.lookup i steps

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import Data.Aeson (FromJSON, ToJSON)
1212
import Data.Bifunctor (second)
1313
import qualified Data.ByteString as BS
1414
import Data.Dynamic
15+
import Data.Foldable (fold)
1516
import qualified Data.HashMap.Strict as Map
1617
import Data.IORef
1718
import Data.List (intercalate)
@@ -144,17 +145,20 @@ data Result = Result {
144145
resultData :: !BS.ByteString
145146
}
146147

147-
data ResultDeps = UnknownDeps | AlwaysRerunDeps ![KeySet] | ResultDeps ![KeySet]
148+
-- some invariant to maintain:
149+
-- the ResultDeps need to be stored in reverse order,
150+
-- so that we can append to it efficiently
151+
data ResultDeps = UnknownDeps | AlwaysRerunDeps !KeySet | ResultDeps ![KeySet]
148152
deriving (Eq, Show)
149153

150-
getResultDepsDefault :: KeySet -> ResultDeps -> [KeySet]
151-
getResultDepsDefault _ (ResultDeps ids) = ids
154+
getResultDepsDefault :: KeySet -> ResultDeps -> KeySet
155+
getResultDepsDefault _ (ResultDeps ids) = fold ids
152156
getResultDepsDefault _ (AlwaysRerunDeps ids) = ids
153-
getResultDepsDefault def UnknownDeps = [def]
157+
getResultDepsDefault def UnknownDeps = def
154158

155159
mapResultDeps :: (KeySet -> KeySet) -> ResultDeps -> ResultDeps
156160
mapResultDeps f (ResultDeps ids) = ResultDeps $ fmap f ids
157-
mapResultDeps f (AlwaysRerunDeps ids) = AlwaysRerunDeps $ fmap f ids
161+
mapResultDeps f (AlwaysRerunDeps ids) = AlwaysRerunDeps $ f ids
158162
mapResultDeps _ UnknownDeps = UnknownDeps
159163

160164
instance Semigroup ResultDeps where

0 commit comments

Comments
 (0)