1 {-# LANGUAGE RankNTypes #-}
2 module Language.Haskell.LSP.Test.Messages where
5 import Language.Haskell.LSP.Messages
6 import Language.Haskell.LSP.Types hiding (error)
8 isServerResponse :: FromServerMessage -> Bool
9 isServerResponse (RspInitialize _) = True
10 isServerResponse (RspShutdown _) = True
11 isServerResponse (RspHover _) = True
12 isServerResponse (RspCompletion _) = True
13 isServerResponse (RspCompletionItemResolve _) = True
14 isServerResponse (RspSignatureHelp _) = True
15 isServerResponse (RspDefinition _) = True
16 isServerResponse (RspFindReferences _) = True
17 isServerResponse (RspDocumentHighlights _) = True
18 isServerResponse (RspDocumentSymbols _) = True
19 isServerResponse (RspWorkspaceSymbols _) = True
20 isServerResponse (RspCodeAction _) = True
21 isServerResponse (RspCodeLens _) = True
22 isServerResponse (RspCodeLensResolve _) = True
23 isServerResponse (RspDocumentFormatting _) = True
24 isServerResponse (RspDocumentRangeFormatting _) = True
25 isServerResponse (RspDocumentOnTypeFormatting _) = True
26 isServerResponse (RspRename _) = True
27 isServerResponse (RspExecuteCommand _) = True
28 isServerResponse (RspError _) = True
29 isServerResponse (RspDocumentLink _) = True
30 isServerResponse (RspDocumentLinkResolve _) = True
31 isServerResponse (RspWillSaveWaitUntil _) = True
32 isServerResponse _ = False
34 isServerRequest :: FromServerMessage -> Bool
35 isServerRequest (ReqRegisterCapability _) = True
36 isServerRequest (ReqApplyWorkspaceEdit _) = True
37 isServerRequest (ReqShowMessage _) = True
38 isServerRequest (ReqUnregisterCapability _) = True
39 isServerRequest _ = False
41 isServerNotification :: FromServerMessage -> Bool
42 isServerNotification (NotPublishDiagnostics _) = True
43 isServerNotification (NotLogMessage _) = True
44 isServerNotification (NotShowMessage _) = True
45 isServerNotification (NotTelemetry _) = True
46 isServerNotification (NotCancelRequestFromServer _) = True
47 isServerNotification _ = False
51 (forall b c . RequestMessage ServerMethod b c -> a)
52 -> (forall d . ResponseMessage d -> a)
53 -> (forall e . NotificationMessage ServerMethod e -> a)
56 handleServerMessage request response notification msg = case msg of
57 (ReqRegisterCapability m) -> request m
58 (ReqApplyWorkspaceEdit m) -> request m
59 (ReqShowMessage m) -> request m
60 (ReqUnregisterCapability m) -> request m
61 (RspInitialize m) -> response m
62 (RspShutdown m) -> response m
63 (RspHover m) -> response m
64 (RspCompletion m) -> response m
65 (RspCompletionItemResolve m) -> response m
66 (RspSignatureHelp m) -> response m
67 (RspDefinition m) -> response m
68 (RspFindReferences m) -> response m
69 (RspDocumentHighlights m) -> response m
70 (RspDocumentSymbols m) -> response m
71 (RspWorkspaceSymbols m) -> response m
72 (RspCodeAction m) -> response m
73 (RspCodeLens m) -> response m
74 (RspCodeLensResolve m) -> response m
75 (RspDocumentFormatting m) -> response m
76 (RspDocumentRangeFormatting m) -> response m
77 (RspDocumentOnTypeFormatting m) -> response m
78 (RspRename m) -> response m
79 (RspExecuteCommand m) -> response m
80 (RspError m) -> response m
81 (RspDocumentLink m) -> response m
82 (RspDocumentLinkResolve m) -> response m
83 (RspWillSaveWaitUntil m) -> response m
84 (NotPublishDiagnostics m) -> notification m
85 (NotLogMessage m) -> notification m
86 (NotShowMessage m) -> notification m
87 (NotTelemetry m) -> notification m
88 (NotCancelRequestFromServer m) -> notification m
92 (forall b c . (ToJSON b, ToJSON c) => RequestMessage ClientMethod b c -> a)
93 -> (forall d . ToJSON d => ResponseMessage d -> a)
94 -> (forall e . ToJSON e => NotificationMessage ClientMethod e -> a)
97 handleClientMessage request response notification msg = case msg of
98 (ReqInitialize m) -> request m
99 (ReqShutdown m) -> request m
100 (ReqHover m) -> request m
101 (ReqCompletion m) -> request m
102 (ReqCompletionItemResolve m) -> request m
103 (ReqSignatureHelp m) -> request m
104 (ReqDefinition m) -> request m
105 (ReqFindReferences m) -> request m
106 (ReqDocumentHighlights m) -> request m
107 (ReqDocumentSymbols m) -> request m
108 (ReqWorkspaceSymbols m) -> request m
109 (ReqCodeAction m) -> request m
110 (ReqCodeLens m) -> request m
111 (ReqCodeLensResolve m) -> request m
112 (ReqDocumentFormatting m) -> request m
113 (ReqDocumentRangeFormatting m) -> request m
114 (ReqDocumentOnTypeFormatting m) -> request m
115 (ReqRename m) -> request m
116 (ReqExecuteCommand m) -> request m
117 (ReqDocumentLink m) -> request m
118 (ReqDocumentLinkResolve m) -> request m
119 (ReqWillSaveWaitUntil m) -> request m
120 (RspApplyWorkspaceEdit m) -> response m
121 (RspFromClient m) -> response m
122 (NotInitialized m) -> notification m
123 (NotExit m) -> notification m
124 (NotCancelRequestFromClient m) -> notification m
125 (NotDidChangeConfiguration m) -> notification m
126 (NotDidOpenTextDocument m) -> notification m
127 (NotDidChangeTextDocument m) -> notification m
128 (NotDidCloseTextDocument m) -> notification m
129 (NotWillSaveTextDocument m) -> notification m
130 (NotDidSaveTextDocument m) -> notification m
131 (NotDidChangeWatchedFiles m) -> notification m
132 (UnknownFromClientMessage m) -> error $ "Unknown message sent from client: " ++ show m