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