Skip to content

Commit a8179ce

Browse files
committed
handle the 0 delay case (for tests)
1 parent d9a1118 commit a8179ce

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

ghcide/src/Development/IDE/Core/Debouncer.hs

+5-3
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,16 @@ newAsyncDebouncer = Debouncer . asyncRegisterEvent <$> STM.newIO
3636
-- | Register an event that will fire after the given delay if no other event
3737
-- for the same key gets registered until then.
3838
asyncRegisterEvent :: (Eq k, Hashable k) => STM.Map k (TVar (Seconds, IO())) -> Seconds -> k -> IO () -> IO ()
39-
asyncRegisterEvent d delay k fire = join $ atomically $ do
39+
asyncRegisterEvent d delay k fire = join $ atomicallyNamed "debouncer - register" $ do
4040
prev <- STM.lookup k d
4141
case prev of
4242
Just v -> writeTVar v (delay, fire) >> return (pure ())
43-
Nothing -> do
43+
Nothing
44+
| delay == 0 -> return fire
45+
| otherwise -> do
4446
var <- newTVar (delay, fire)
4547
STM.insert var k d
46-
return $ void $ async $ do
48+
return $ void $ async $
4749
join $ atomicallyNamed "debouncer - sleep" $ do
4850
(s,act) <- readTVar var
4951
unsafeIOToSTM $ sleep s

0 commit comments

Comments
 (0)