projects
/
lsp-test.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Bubble up exceptions thrown on server listener thread
[lsp-test.git]
/
src
/
Language
/
Haskell
/
LSP
/
Test
/
Session.hs
diff --git
a/src/Language/Haskell/LSP/Test/Session.hs
b/src/Language/Haskell/LSP/Test/Session.hs
index a153cba988890e08b5fe6f54e40d3a8cdfcbb377..700d9ccc84c233314f9c581bfd6bf8f810c8c1d5 100644
(file)
--- a/
src/Language/Haskell/LSP/Test/Session.hs
+++ b/
src/Language/Haskell/LSP/Test/Session.hs
@@
-201,9
+201,12
@@
runSessionWithHandles serverIn serverOut serverHandler config caps rootDir sessi
messageChan <- newChan
initRsp <- newEmptyMVar
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
let context = SessionContext serverIn absRootDir messageChan reqMap initRsp config caps
initState = SessionState (IdInt 0) mempty mempty 0 False Nothing
- launchServerHandler = forkIO $ void $ serverHandler serverOut context
+ launchServerHandler = forkIO $ catch (serverHandler serverOut context)
+ (throwTo mainThreadId :: SessionException -> IO ())
(result, _) <- bracket launchServerHandler killThread $
const $ runSession context initState session
(result, _) <- bracket launchServerHandler killThread $
const $ runSession context initState session
@@
-332,3
+335,4
@@
logMsg t msg = do
| otherwise = Cyan
showPretty = B.unpack . encodePretty
| otherwise = Cyan
showPretty = B.unpack . encodePretty
+