Skip to content

Commit ad1b9de

Browse files
committed
Use OverloadedRecordDot in Driver module
1 parent cb56bd8 commit ad1b9de

File tree

1 file changed

+40
-37
lines changed

1 file changed

+40
-37
lines changed

src/Driver.hs

Lines changed: 40 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
{-# LANGUAGE FlexibleContexts #-}
2+
{-# LANGUAGE NamedFieldPuns #-}
3+
{-# LANGUAGE OverloadedRecordDot #-}
24
{-# LANGUAGE OverloadedStrings #-}
35
{-# LANGUAGE RankNTypes #-}
46
{-# LANGUAGE ScopedTypeVariables #-}
57
{-# LANGUAGE TupleSections #-}
68
{-# LANGUAGE TypeApplications #-}
79
{-# LANGUAGE TypeFamilies #-}
10+
{-# LANGUAGE NoFieldSelectors #-}
811

912
module Driver where
1013

@@ -92,11 +95,11 @@ runTask sourceDirectories files prettyError task = do
9295
-------------------------------------------------------------------------------
9396
-- Incremental execution
9497
data State err = State
95-
{ _startedVar :: !(IORef (DHashMap Query MemoEntry))
96-
, _hashesVar :: !(IORef (DHashMap Query (Const Int)))
97-
, _reverseDependenciesVar :: !(IORef (ReverseDependencies Query))
98-
, _tracesVar :: !(IORef (Traces Query (Const Int)))
99-
, _errorsVar :: !(IORef (DHashMap Query (Const [err])))
98+
{ startedVar :: !(IORef (DHashMap Query MemoEntry))
99+
, hashesVar :: !(IORef (DHashMap Query (Const Int)))
100+
, reverseDependenciesVar :: !(IORef (ReverseDependencies Query))
101+
, tracesVar :: !(IORef (Traces Query (Const Int)))
102+
, errorsVar :: !(IORef (DHashMap Query (Const [err])))
100103
}
101104

102105
initialState :: IO (State err)
@@ -106,19 +109,19 @@ initialState = do
106109
reverseDependenciesVar <- newIORef mempty
107110
tracesVar <- newIORef mempty
108111
errorsVar <- newIORef mempty
109-
return
112+
pure
110113
State
111-
{ _startedVar = startedVar
112-
, _hashesVar = hashesVar
113-
, _reverseDependenciesVar = reverseDependenciesVar
114-
, _tracesVar = tracesVar
115-
, _errorsVar = errorsVar
114+
{ startedVar
115+
, hashesVar
116+
, reverseDependenciesVar
117+
, tracesVar
118+
, errorsVar
116119
}
117120

118121
encodeState :: Persist err => State (err, doc) -> IO ByteString
119122
encodeState state = do
120-
traces <- readIORef $ _tracesVar state
121-
errors <- readIORef $ _errorsVar state
123+
traces <- readIORef state.tracesVar
124+
errors <- readIORef state.errorsVar
122125
pure $
123126
Persist.encode (traces, DHashMap.map (\(Const errDocs) -> Const $ fst <$> errDocs) errors)
124127

@@ -127,8 +130,8 @@ decodeState bs = do
127130
s <- initialState
128131
case Persist.decode bs of
129132
Right (traces, errors) -> do
130-
void $ atomicWriteIORef (_tracesVar s) traces
131-
void $ atomicWriteIORef (_errorsVar s) errors
133+
void $ atomicWriteIORef s.tracesVar traces
134+
void $ atomicWriteIORef s.errorsVar errors
132135
Left _ ->
133136
pure ()
134137
pure s
@@ -149,19 +152,19 @@ runIncrementalTask
149152
runIncrementalTask state changedFiles sourceDirectories files prettyError prune task =
150153
handleEx $ do
151154
do
152-
reverseDependencies <- readIORef $ _reverseDependenciesVar state
153-
started <- readIORef $ _startedVar state
154-
hashes <- readIORef $ _hashesVar state
155+
reverseDependencies <- readIORef state.reverseDependenciesVar
156+
started <- readIORef state.startedVar
157+
hashes <- readIORef state.hashesVar
155158

156159
case DHashMap.lookup Query.InputFiles started of
157160
Just (Done inputFiles) -> do
158161
-- TODO find a nicer way to do this
159162
builtinFile <- Paths.getDataFileName "builtin/Builtin.vix"
160163
if inputFiles /= HashSet.insert builtinFile (HashSet.fromMap $ void files)
161164
then do
162-
atomicWriteIORef (_reverseDependenciesVar state) mempty
163-
atomicWriteIORef (_startedVar state) mempty
164-
atomicWriteIORef (_hashesVar state) mempty
165+
atomicWriteIORef state.reverseDependenciesVar mempty
166+
atomicWriteIORef state.startedVar mempty
167+
atomicWriteIORef state.hashesVar mempty
165168
else do
166169
changedFiles' <- flip filterM (toList changedFiles) $ \file ->
167170
pure $ case (HashMap.lookup file files, DHashMap.lookup (Query.FileRope file) started, DHashMap.lookup (Query.FileText file) started) of
@@ -187,15 +190,15 @@ runIncrementalTask state changedFiles sourceDirectories files prettyError prune
187190
-- Text.hPutStrLn stderr $ "Hashes " <> show (DHashMap.size hashes) <> " -> " <> show (DHashMap.size hashes')
188191
-- Text.hPutStrLn stderr $ "ReverseDependencies " <> show (Map.size reverseDependencies) <> " -> " <> show (Map.size reverseDependencies')
189192

190-
atomicWriteIORef (_startedVar state) started'
191-
atomicWriteIORef (_hashesVar state) hashes'
192-
atomicWriteIORef (_reverseDependenciesVar state) reverseDependencies'
193+
atomicWriteIORef state.startedVar started'
194+
atomicWriteIORef state.hashesVar hashes'
195+
atomicWriteIORef state.reverseDependenciesVar reverseDependencies'
193196

194197
-- printVar <- newMVar 0
195198
_ -> do
196-
atomicWriteIORef (_reverseDependenciesVar state) mempty
197-
atomicWriteIORef (_startedVar state) mempty
198-
atomicWriteIORef (_hashesVar state) mempty
199+
atomicWriteIORef state.reverseDependenciesVar mempty
200+
atomicWriteIORef state.startedVar mempty
201+
atomicWriteIORef state.hashesVar mempty
199202

200203
threadDepsVar <- newIORef mempty
201204
let readSourceFile_ file
@@ -219,24 +222,24 @@ runIncrementalTask state changedFiles sourceDirectories files prettyError prune
219222
writeErrors :: Writer TaskKind Query a -> [Error] -> Task Query ()
220223
writeErrors (Writer key) errs = do
221224
errs' <- mapM (prettyError <=< Error.Hydrated.fromError) errs
222-
atomicModifyIORef' (_errorsVar state) $
225+
atomicModifyIORef' state.errorsVar $
223226
(,()) . if null errs' then DHashMap.delete key else DHashMap.insert key (Const errs')
224227

225228
rules :: Rules Query
226229
rules =
227-
memoiseWithCycleDetection (_startedVar state) threadDepsVar
228-
$ trackReverseDependencies (_reverseDependenciesVar state)
230+
memoiseWithCycleDetection state.startedVar threadDepsVar
231+
$ trackReverseDependencies state.reverseDependenciesVar
229232
$ verifyTraces
230-
(_tracesVar state)
233+
state.tracesVar
231234
( \query value -> do
232-
hashed <- readIORef $ _hashesVar state
235+
hashed <- readIORef state.hashesVar
233236
case DHashMap.lookup query hashed of
234237
Just h ->
235238
pure h
236239
Nothing -> do
237240
let h =
238241
Const $ has' @Hashable @Identity query $ hash $ Identity value
239-
atomicModifyIORef' (_hashesVar state) $
242+
atomicModifyIORef' state.hashesVar $
240243
(,()) . DHashMap.insert query h
241244
pure h
242245
)
@@ -245,14 +248,14 @@ runIncrementalTask state changedFiles sourceDirectories files prettyError prune
245248
$ Rules.rules sourceDirectories (HashSet.fromMap $ void files) readSourceFile_
246249
-- result <- Rock.runMemoisedTask (_startedVar state) rules task
247250
result <- Rock.runTask rules task
248-
started <- readIORef $ _startedVar state
251+
started <- readIORef state.startedVar
249252
errorsMap <- case prune of
250253
Don'tPrune ->
251-
readIORef $ _errorsVar state
254+
readIORef state.errorsVar
252255
Prune -> do
253-
atomicModifyIORef' (_tracesVar state) $
256+
atomicModifyIORef' state.tracesVar $
254257
(,()) . DHashMap.intersectionWithKey (\_ _ t -> t) started
255-
atomicModifyIORef' (_errorsVar state) $ \errors -> do
258+
atomicModifyIORef' state.errorsVar $ \errors -> do
256259
let errors' = DHashMap.intersectionWithKey (\_ _ e -> e) started errors
257260
(errors', errors')
258261
let errors = do

0 commit comments

Comments
 (0)