Merge pull request #89 from wz1000/lsp-equality
[lsp-test.git] / src / Language / LSP / Test / Parsing.hs
index 58785d9bf5979a7227db8d7c91d674399deda8ba..247f969862f2ad25a42ad3dc10e6de4802509201 100644 (file)
@@ -117,8 +117,10 @@ named s (Session x) = Session (Data.Conduit.Parser.named s x)
 message :: SServerMethod m -> Session (ServerMessage m)
 message m1 = named (T.pack $ "Request for: " <> show m1) $ satisfyMaybe $ \case
   FromServerMess m2 msg -> do
-    HRefl <- mEqServer m1 m2
-    pure msg
+    res <- mEqServer m1 m2
+    case res of
+      Right HRefl -> pure msg
+      Left f -> Nothing
   _ -> Nothing
 
 customRequest :: T.Text -> Session (ServerMessage (CustomMethod :: Method FromServer Request))
@@ -168,7 +170,7 @@ anyResponse = named "Any response" $ satisfy $ \case
 response :: SMethod (m :: Method FromClient Request) -> Session (ResponseMessage m)
 response m1 = named (T.pack $ "Response for: " <> show m1) $ satisfyMaybe $ \case
   FromServerRsp m2 msg -> do
-    HRefl <- mEqClient m1 m2
+    HRefl <- runEq mEqClient m1 m2
     pure msg
   _ -> Nothing
 
@@ -178,17 +180,10 @@ responseForId m lid = named (T.pack $ "Response for id: " ++ show lid) $ do
   satisfyMaybe $ \msg -> do
     case msg of
       FromServerMess _ _ -> Nothing
-      FromServerRsp m' rspMsg@(ResponseMessage _ lid' _) ->
-        case mEqClient m m' of
-          Just HRefl -> do
-            guard (lid' == Just lid)
+      FromServerRsp m' rspMsg@(ResponseMessage _ lid' _) -> do
+        HRefl <- runEq mEqClient m m'
+        guard (Just lid == lid')
         pure rspMsg
-          Nothing
-            | SCustomMethod tm <- m
-            , SCustomMethod tm' <- m'
-            , tm == tm'
-            , lid' == Just lid -> pure rspMsg
-          _ -> empty
 
 -- | Matches any type of message.
 anyMessage :: Session FromServerMessage