X-Git-Url: https://git.lukelau.me/?p=lsp-test.git;a=blobdiff_plain;f=src%2FLanguage%2FLSP%2FTest%2FParsing.hs;h=247f969862f2ad25a42ad3dc10e6de4802509201;hp=b5221168dff1ba2bf6d2f55fecb96fa99c3b3935;hb=0132314e3f91ad3ba9e0405e53f5dca6f5d46ab1;hpb=7ce2b4cb189b6276eed979661852029d68191c8f diff --git a/src/Language/LSP/Test/Parsing.hs b/src/Language/LSP/Test/Parsing.hs index b522116..247f969 100644 --- a/src/Language/LSP/Test/Parsing.hs +++ b/src/Language/LSP/Test/Parsing.hs @@ -83,16 +83,21 @@ satisfyMaybeM pred = do skipTimeout <- overridingTimeout <$> get timeoutId <- getCurTimeoutId - unless skipTimeout $ do + mtid <- + if skipTimeout + then pure Nothing + else Just <$> do chan <- asks messageChan timeout <- asks (messageTimeout . config) - void $ liftIO $ forkIO $ do + liftIO $ forkIO $ do threadDelay (timeout * 1000000) writeChan chan (TimeoutMessage timeoutId) x <- Session await - unless skipTimeout (bumpTimeoutId timeoutId) + forM_ mtid $ \tid -> do + bumpTimeoutId timeoutId + liftIO $ killThread tid modify $ \s -> s { lastReceivedMessage = Just x }