File tree 1 file changed +9
-6
lines changed
1 file changed +9
-6
lines changed Original file line number Diff line number Diff line change @@ -168,12 +168,15 @@ normalizeStep q binds = do
168
168
res <- Monad. liftIO $ MS. tryPopR q
169
169
case res of
170
170
Just id' -> do
171
- (bound, _) <- MVar. readMVar binds
172
- unless (id' `elemVarSet` bound) $ do
173
- -- immediately mark this work as being done
174
- MVar. modifyMVar_ binds (pure . first (`extendVarSet` id'))
175
- pair <- normalize' id' q
176
- MVar. modifyMVar_ binds (pure . second (pair: ))
171
+ (bound, pairs) <- MVar. takeMVar binds
172
+ if not (id' `elemVarSet` bound)
173
+ then do
174
+ -- mark that we are attempting to normalize id'
175
+ MVar. putMVar binds (bound `extendVarSet` id', pairs)
176
+ pair <- normalize' id' q
177
+ MVar. modifyMVar_ binds (pure . second (pair: ))
178
+ else
179
+ MVar. putMVar binds (bound, pairs)
177
180
normalizeStep q binds
178
181
Nothing -> pure ()
179
182
You can’t perform that action at this time.
0 commit comments