X-Git-Url: http://git.lukelau.me/?a=blobdiff_plain;f=src%2FLanguage%2FHaskell%2FLSP%2FTest%2FSession.hs;h=700d9ccc84c233314f9c581bfd6bf8f810c8c1d5;hb=12f6e7e7c1d2603712de134477a470bfa72ecf4b;hp=2df5ab3c4263e725cc240b22933480943071ac73;hpb=3054f9c1c5403a527cf0c82bfbf021174db4addd;p=lsp-test.git diff --git a/src/Language/Haskell/LSP/Test/Session.hs b/src/Language/Haskell/LSP/Test/Session.hs index 2df5ab3..700d9cc 100644 --- a/src/Language/Haskell/LSP/Test/Session.hs +++ b/src/Language/Haskell/LSP/Test/Session.hs @@ -92,7 +92,7 @@ data SessionConfig = SessionConfig -- | The configuration used in 'Language.Haskell.LSP.Test.runSession'. defaultConfig :: SessionConfig -defaultConfig = SessionConfig 60 False True True Nothing +defaultConfig = SessionConfig 60 False False True Nothing instance Default SessionConfig where def = defaultConfig @@ -201,13 +201,14 @@ runSessionWithHandles serverIn serverOut serverHandler config caps rootDir sessi messageChan <- newChan initRsp <- newEmptyMVar + mainThreadId <- myThreadId + let context = SessionContext serverIn absRootDir messageChan reqMap initRsp config caps initState = SessionState (IdInt 0) mempty mempty 0 False Nothing - - threadId <- forkIO $ void $ serverHandler serverOut context - (result, _) <- runSession context initState session - - killThread threadId + launchServerHandler = forkIO $ catch (serverHandler serverOut context) + (throwTo mainThreadId :: SessionException -> IO ()) + (result, _) <- bracket launchServerHandler killThread $ + const $ runSession context initState session return result @@ -334,3 +335,4 @@ logMsg t msg = do | otherwise = Cyan showPretty = B.unpack . encodePretty +