Merge branch 'master' of https://github.com/Bubba/lsp-test
authorLuke Lau <luke_lau@icloud.com>
Mon, 12 Nov 2018 17:42:34 +0000 (17:42 +0000)
committerLuke Lau <luke_lau@icloud.com>
Mon, 12 Nov 2018 17:46:26 +0000 (17:46 +0000)
1  2 
src/Language/Haskell/LSP/Test/Session.hs

index f0d410afed37c295a9ebdac061471056f1bb882b,28d4eddec1591fbbe190fc825abc5c0c1453a0f5..dc3c6ff870cccbb488b490b896b6d7bdab9f58f1
@@@ -31,9 -31,11 +32,12 @@@ import Control.Concurrent hiding (yield
  import Control.Exception
  import Control.Lens hiding (List)
  import Control.Monad
 +import Control.Monad.Fail
  import Control.Monad.IO.Class
  import Control.Monad.Except
+ #if __GLASGOW_HASKELL__ >= 806
+ import qualified Control.Monad.Fail as Fail
+ #endif
  import Control.Monad.Trans.Reader (ReaderT, runReaderT)
  import qualified Control.Monad.Trans.Reader as Reader (ask)
  import Control.Monad.Trans.State (StateT, runStateT)
@@@ -71,18 -73,12 +75,20 @@@ import System.I
  
  type Session = ParserStateReader FromServerMessage SessionState SessionContext IO
  
++#if __GLASGOW_HASKELL__ >= 806
 +instance MonadFail Session where
 +  fail s = do
 +    lastMsg <- fromJust . lastReceivedMessage <$> get
 +    liftIO $ throw (UnexpectedMessage s lastMsg)
++#endif
 +
  -- | Stuff you can configure for a 'Session'.
  data SessionConfig = SessionConfig
    { messageTimeout :: Int  -- ^ Maximum time to wait for a message in seconds, defaults to 60.
    , logStdErr      :: Bool -- ^ Redirect the server's stderr to this stdout, defaults to False.
-   , logMessages    :: Bool -- ^ Trace the messages sent and received to stdout, defaults to True.
+   , logMessages    :: Bool -- ^ Trace the messages sent and received to stdout, defaults to False.
    , logColor       :: Bool -- ^ Add ANSI color to the logged messages, defaults to True.
 +  , lspConfig      :: Maybe Value -- ^ The initial LSP config as JSON value, defaults to Nothing.
    }
  
  -- | The configuration used in 'Language.Haskell.LSP.Test.runSession'.