1use super::*;
2
3use serde::{de::DeserializeOwned, Serialize};
4
5pub trait Request {
6 type Params: DeserializeOwned + Serialize + Send + Sync + 'static;
7 type Result: DeserializeOwned + Serialize + Send + Sync + 'static;
8 const METHOD: &'static str;
9}
10
11#[macro_export]
12macro_rules! lsp_request {
13 ("initialize") => {
14 $crate::request::Initialize
15 };
16 ("shutdown") => {
17 $crate::request::Shutdown
18 };
19
20 ("window/showMessageRequest") => {
21 $crate::request::ShowMessageRequest
22 };
23
24 ("client/registerCapability") => {
25 $crate::request::RegisterCapability
26 };
27 ("client/unregisterCapability") => {
28 $crate::request::UnregisterCapability
29 };
30
31 ("workspace/symbol") => {
32 $crate::request::WorkspaceSymbolRequest
33 };
34 ("workspaceSymbol/resolve") => {
35 $crate::request::WorkspaceSymbolResolve
36 };
37 ("workspace/executeCommand") => {
38 $crate::request::ExecuteCommand
39 };
40
41 ("textDocument/willSaveWaitUntil") => {
42 $crate::request::WillSaveWaitUntil
43 };
44
45 ("textDocument/completion") => {
46 $crate::request::Completion
47 };
48 ("completionItem/resolve") => {
49 $crate::request::ResolveCompletionItem
50 };
51 ("textDocument/hover") => {
52 $crate::request::HoverRequest
53 };
54 ("textDocument/signatureHelp") => {
55 $crate::request::SignatureHelpRequest
56 };
57 ("textDocument/declaration") => {
58 $crate::request::GotoDeclaration
59 };
60 ("textDocument/definition") => {
61 $crate::request::GotoDefinition
62 };
63 ("textDocument/references") => {
64 $crate::request::References
65 };
66 ("textDocument/documentHighlight") => {
67 $crate::request::DocumentHighlightRequest
68 };
69 ("textDocument/documentSymbol") => {
70 $crate::request::DocumentSymbolRequest
71 };
72 ("textDocument/codeAction") => {
73 $crate::request::CodeActionRequest
74 };
75 ("textDocument/codeLens") => {
76 $crate::request::CodeLensRequest
77 };
78 ("codeLens/resolve") => {
79 $crate::request::CodeLensResolve
80 };
81 ("textDocument/documentLink") => {
82 $crate::request::DocumentLinkRequest
83 };
84 ("documentLink/resolve") => {
85 $crate::request::DocumentLinkResolve
86 };
87 ("workspace/applyEdit") => {
88 $crate::request::ApplyWorkspaceEdit
89 };
90 ("textDocument/rangeFormatting") => {
91 $crate::request::RangeFormatting
92 };
93 ("textDocument/onTypeFormatting") => {
94 $crate::request::OnTypeFormatting
95 };
96 ("textDocument/formatting") => {
97 $crate::request::Formatting
98 };
99 ("textDocument/rename") => {
100 $crate::request::Rename
101 };
102 ("textDocument/documentColor") => {
103 $crate::request::DocumentColor
104 };
105 ("textDocument/colorPresentation") => {
106 $crate::request::ColorPresentationRequest
107 };
108 ("textDocument/foldingRange") => {
109 $crate::request::FoldingRangeRequest
110 };
111 ("textDocument/prepareRename") => {
112 $crate::request::PrepareRenameRequest
113 };
114 ("textDocument/implementation") => {
115 $crate::request::GotoImplementation
116 };
117 ("textDocument/typeDefinition") => {
118 $crate::request::GotoTypeDefinition
119 };
120 ("textDocument/selectionRange") => {
121 $crate::request::SelectionRangeRequest
122 };
123 ("workspace/workspaceFolders") => {
124 $crate::request::WorkspaceFoldersRequest
125 };
126 ("workspace/configuration") => {
127 $crate::request::WorkspaceConfiguration
128 };
129 ("window/workDoneProgress/create") => {
130 $crate::request::WorkDoneProgressCreate
131 };
132 ("callHierarchy/incomingCalls") => {
133 $crate::request::CallHierarchyIncomingCalls
134 };
135 ("callHierarchy/outgoingCalls") => {
136 $crate::request::CallHierarchyOutgoingCalls
137 };
138 ("textDocument/moniker") => {
139 $crate::request::MonikerRequest
140 };
141 ("textDocument/linkedEditingRange") => {
142 $crate::request::LinkedEditingRange
143 };
144 ("textDocument/prepareCallHierarchy") => {
145 $crate::request::CallHierarchyPrepare
146 };
147 ("textDocument/prepareTypeHierarchy") => {
148 $crate::request::TypeHierarchyPrepare
149 };
150 ("textDocument/semanticTokens/full") => {
151 $crate::request::SemanticTokensFullRequest
152 };
153 ("textDocument/semanticTokens/full/delta") => {
154 $crate::request::SemanticTokensFullDeltaRequest
155 };
156 ("textDocument/semanticTokens/range") => {
157 $crate::request::SemanticTokensRangeRequest
158 };
159 ("textDocument/inlayHint") => {
160 $crate::request::InlayHintRequest
161 };
162 ("textDocument/inlineValue") => {
163 $crate::request::InlineValueRequest
164 };
165 ("textDocument/inlineCompletion") => {
166 $crate::request::InlineCompletionRequest
167 };
168 ("textDocument/diagnostic") => {
169 $crate::request::DocumentDiagnosticRequest
170 };
171 ("workspace/diagnostic") => {
172 $crate::request::WorkspaceDiagnosticRequest
173 };
174 ("workspace/diagnostic/refresh") => {
175 $crate::request::WorkspaceDiagnosticRefresh
176 };
177 ("typeHierarchy/supertypes") => {
178 $crate::request::TypeHierarchySupertypes
179 };
180 ("typeHierarchy/subtypes") => {
181 $crate::request::TypeHierarchySubtypes
182 };
183 ("workspace/willCreateFiles") => {
184 $crate::request::WillCreateFiles
185 };
186 ("workspace/willRenameFiles") => {
187 $crate::request::WillRenameFiles
188 };
189 ("workspace/willDeleteFiles") => {
190 $crate::request::WillDeleteFiles
191 };
192 ("workspace/semanticTokens/refresh") => {
193 $crate::request::SemanticTokensRefresh
194 };
195 ("workspace/codeLens/refresh") => {
196 $crate::request::CodeLensRefresh
197 };
198 ("workspace/inlayHint/refresh") => {
199 $crate::request::InlayHintRefreshRequest
200 };
201 ("workspace/inlineValue/refresh") => {
202 $crate::request::InlineValueRefreshRequest
203 };
204 ("codeAction/resolve") => {
205 $crate::request::CodeActionResolveRequest
206 };
207 ("inlayHint/resolve") => {
208 $crate::request::InlayHintResolveRequest
209 };
210 ("window/showDocument") => {
211 $crate::request::ShowDocument
212 };
213}
214
215#[derive(Debug)]
221pub enum Initialize {}
222
223impl Request for Initialize {
224 type Params = InitializeParams;
225 type Result = InitializeResult;
226 const METHOD: &'static str = "initialize";
227}
228
229#[derive(Debug)]
233pub enum Shutdown {}
234
235impl Request for Shutdown {
236 type Params = ();
237 type Result = ();
238 const METHOD: &'static str = "shutdown";
239}
240
241#[derive(Debug)]
245pub enum ShowMessageRequest {}
246
247impl Request for ShowMessageRequest {
248 type Params = ShowMessageRequestParams;
249 type Result = Option<MessageActionItem>;
250 const METHOD: &'static str = "window/showMessageRequest";
251}
252
253#[derive(Debug)]
257pub enum RegisterCapability {}
258
259impl Request for RegisterCapability {
260 type Params = RegistrationParams;
261 type Result = ();
262 const METHOD: &'static str = "client/registerCapability";
263}
264
265#[derive(Debug)]
268pub enum UnregisterCapability {}
269
270impl Request for UnregisterCapability {
271 type Params = UnregistrationParams;
272 type Result = ();
273 const METHOD: &'static str = "client/unregisterCapability";
274}
275
276#[derive(Debug)]
287pub enum Completion {}
288
289impl Request for Completion {
290 type Params = CompletionParams;
291 type Result = Option<CompletionResponse>;
292 const METHOD: &'static str = "textDocument/completion";
293}
294
295#[derive(Debug)]
297pub enum ResolveCompletionItem {}
298
299impl Request for ResolveCompletionItem {
300 type Params = CompletionItem;
301 type Result = CompletionItem;
302 const METHOD: &'static str = "completionItem/resolve";
303}
304
305#[derive(Debug)]
308pub enum HoverRequest {}
309
310impl Request for HoverRequest {
311 type Params = HoverParams;
312 type Result = Option<Hover>;
313 const METHOD: &'static str = "textDocument/hover";
314}
315
316#[derive(Debug)]
319pub enum SignatureHelpRequest {}
320
321impl Request for SignatureHelpRequest {
322 type Params = SignatureHelpParams;
323 type Result = Option<SignatureHelp>;
324 const METHOD: &'static str = "textDocument/signatureHelp";
325}
326
327#[derive(Debug)]
328pub enum GotoDeclaration {}
329pub type GotoDeclarationParams = GotoDefinitionParams;
330pub type GotoDeclarationResponse = GotoDefinitionResponse;
331
332impl Request for GotoDeclaration {
335 type Params = GotoDeclarationParams;
336 type Result = Option<GotoDeclarationResponse>;
337 const METHOD: &'static str = "textDocument/declaration";
338}
339
340#[derive(Debug)]
343pub enum GotoDefinition {}
344
345impl Request for GotoDefinition {
346 type Params = GotoDefinitionParams;
347 type Result = Option<GotoDefinitionResponse>;
348 const METHOD: &'static str = "textDocument/definition";
349}
350
351#[derive(Debug)]
354pub enum References {}
355
356impl Request for References {
357 type Params = ReferenceParams;
358 type Result = Option<Vec<Location>>;
359 const METHOD: &'static str = "textDocument/references";
360}
361
362#[derive(Debug)]
366pub enum GotoTypeDefinition {}
367
368pub type GotoTypeDefinitionParams = GotoDefinitionParams;
369pub type GotoTypeDefinitionResponse = GotoDefinitionResponse;
370
371impl Request for GotoTypeDefinition {
372 type Params = GotoTypeDefinitionParams;
373 type Result = Option<GotoTypeDefinitionResponse>;
374 const METHOD: &'static str = "textDocument/typeDefinition";
375}
376
377#[derive(Debug)]
381pub enum GotoImplementation {}
382
383pub type GotoImplementationParams = GotoTypeDefinitionParams;
384pub type GotoImplementationResponse = GotoDefinitionResponse;
385
386impl Request for GotoImplementation {
387 type Params = GotoImplementationParams;
388 type Result = Option<GotoImplementationResponse>;
389 const METHOD: &'static str = "textDocument/implementation";
390}
391
392#[derive(Debug)]
400pub enum DocumentHighlightRequest {}
401
402impl Request for DocumentHighlightRequest {
403 type Params = DocumentHighlightParams;
404 type Result = Option<Vec<DocumentHighlight>>;
405 const METHOD: &'static str = "textDocument/documentHighlight";
406}
407
408#[derive(Debug)]
411pub enum DocumentSymbolRequest {}
412
413impl Request for DocumentSymbolRequest {
414 type Params = DocumentSymbolParams;
415 type Result = Option<DocumentSymbolResponse>;
416 const METHOD: &'static str = "textDocument/documentSymbol";
417}
418
419#[derive(Debug)]
422pub enum WorkspaceSymbolRequest {}
423
424impl Request for WorkspaceSymbolRequest {
425 type Params = WorkspaceSymbolParams;
426 type Result = Option<WorkspaceSymbolResponse>;
427 const METHOD: &'static str = "workspace/symbol";
428}
429
430#[derive(Debug)]
433pub enum WorkspaceSymbolResolve {}
434
435impl Request for WorkspaceSymbolResolve {
436 type Params = WorkspaceSymbol;
437 type Result = WorkspaceSymbol;
438 const METHOD: &'static str = "workspaceSymbol/resolve";
439}
440
441#[derive(Debug)]
445pub enum ExecuteCommand {}
446
447impl Request for ExecuteCommand {
448 type Params = ExecuteCommandParams;
449 type Result = Option<Value>;
450 const METHOD: &'static str = "workspace/executeCommand";
451}
452
453#[derive(Debug)]
459pub enum WillSaveWaitUntil {}
460
461impl Request for WillSaveWaitUntil {
462 type Params = WillSaveTextDocumentParams;
463 type Result = Option<Vec<TextEdit>>;
464 const METHOD: &'static str = "textDocument/willSaveWaitUntil";
465}
466
467#[derive(Debug)]
470pub enum ApplyWorkspaceEdit {}
471
472impl Request for ApplyWorkspaceEdit {
473 type Params = ApplyWorkspaceEditParams;
474 type Result = ApplyWorkspaceEditResponse;
475 const METHOD: &'static str = "workspace/applyEdit";
476}
477
478#[derive(Debug)]
492pub enum WorkspaceConfiguration {}
493
494impl Request for WorkspaceConfiguration {
495 type Params = ConfigurationParams;
496 type Result = Vec<Value>;
497 const METHOD: &'static str = "workspace/configuration";
498}
499
500#[derive(Debug)]
504pub enum CodeActionRequest {}
505
506impl Request for CodeActionRequest {
507 type Params = CodeActionParams;
508 type Result = Option<CodeActionResponse>;
509 const METHOD: &'static str = "textDocument/codeAction";
510}
511
512#[derive(Debug)]
518pub enum CodeActionResolveRequest {}
519
520impl Request for CodeActionResolveRequest {
521 type Params = CodeAction;
522 type Result = CodeAction;
523 const METHOD: &'static str = "codeAction/resolve";
524}
525
526#[derive(Debug)]
528pub enum CodeLensRequest {}
529
530impl Request for CodeLensRequest {
531 type Params = CodeLensParams;
532 type Result = Option<Vec<CodeLens>>;
533 const METHOD: &'static str = "textDocument/codeLens";
534}
535
536#[derive(Debug)]
539pub enum CodeLensResolve {}
540
541impl Request for CodeLensResolve {
542 type Params = CodeLens;
543 type Result = CodeLens;
544 const METHOD: &'static str = "codeLens/resolve";
545}
546
547#[derive(Debug)]
549pub enum DocumentLinkRequest {}
550
551impl Request for DocumentLinkRequest {
552 type Params = DocumentLinkParams;
553 type Result = Option<Vec<DocumentLink>>;
554 const METHOD: &'static str = "textDocument/documentLink";
555}
556
557#[derive(Debug)]
560pub enum DocumentLinkResolve {}
561
562impl Request for DocumentLinkResolve {
563 type Params = DocumentLink;
564 type Result = DocumentLink;
565 const METHOD: &'static str = "documentLink/resolve";
566}
567
568#[derive(Debug)]
570pub enum Formatting {}
571
572impl Request for Formatting {
573 type Params = DocumentFormattingParams;
574 type Result = Option<Vec<TextEdit>>;
575 const METHOD: &'static str = "textDocument/formatting";
576}
577
578#[derive(Debug)]
580pub enum RangeFormatting {}
581
582impl Request for RangeFormatting {
583 type Params = DocumentRangeFormattingParams;
584 type Result = Option<Vec<TextEdit>>;
585 const METHOD: &'static str = "textDocument/rangeFormatting";
586}
587
588#[derive(Debug)]
591pub enum OnTypeFormatting {}
592
593impl Request for OnTypeFormatting {
594 type Params = DocumentOnTypeFormattingParams;
595 type Result = Option<Vec<TextEdit>>;
596 const METHOD: &'static str = "textDocument/onTypeFormatting";
597}
598
599#[derive(Debug)]
605pub enum LinkedEditingRange {}
606
607impl Request for LinkedEditingRange {
608 type Params = LinkedEditingRangeParams;
609 type Result = Option<LinkedEditingRanges>;
610 const METHOD: &'static str = "textDocument/linkedEditingRange";
611}
612
613#[derive(Debug)]
615pub enum Rename {}
616
617impl Request for Rename {
618 type Params = RenameParams;
619 type Result = Option<WorkspaceEdit>;
620 const METHOD: &'static str = "textDocument/rename";
621}
622
623#[derive(Debug)]
626pub enum DocumentColor {}
627
628impl Request for DocumentColor {
629 type Params = DocumentColorParams;
630 type Result = Vec<ColorInformation>;
631 const METHOD: &'static str = "textDocument/documentColor";
632}
633
634#[derive(Debug)]
637pub enum ColorPresentationRequest {}
638
639impl Request for ColorPresentationRequest {
640 type Params = ColorPresentationParams;
641 type Result = Vec<ColorPresentation>;
642 const METHOD: &'static str = "textDocument/colorPresentation";
643}
644
645#[derive(Debug)]
647pub enum FoldingRangeRequest {}
648
649impl Request for FoldingRangeRequest {
650 type Params = FoldingRangeParams;
651 type Result = Option<Vec<FoldingRange>>;
652 const METHOD: &'static str = "textDocument/foldingRange";
653}
654
655#[derive(Debug)]
658pub enum PrepareRenameRequest {}
659
660impl Request for PrepareRenameRequest {
661 type Params = TextDocumentPositionParams;
662 type Result = Option<PrepareRenameResponse>;
663 const METHOD: &'static str = "textDocument/prepareRename";
664}
665
666#[derive(Debug)]
667#[cfg(feature = "proposed")]
668pub enum InlineCompletionRequest {}
669
670#[cfg(feature = "proposed")]
671impl Request for InlineCompletionRequest {
672 type Params = InlineCompletionParams;
673 type Result = Option<InlineCompletionResponse>;
674 const METHOD: &'static str = "textDocument/inlineCompletion";
675}
676
677#[derive(Debug)]
678#[cfg(not(feature = "proposed"))]
679pub enum InlineCompletionRequest {}
680
681#[cfg(not(feature = "proposed"))]
682impl Request for InlineCompletionRequest {
683 type Params = ();
684 type Result = ();
685 const METHOD: &'static str = "textDocument/inlineCompletion";
686}
687
688#[derive(Debug)]
692pub enum WorkspaceFoldersRequest {}
693
694impl Request for WorkspaceFoldersRequest {
695 type Params = ();
696 type Result = Option<Vec<WorkspaceFolder>>;
697 const METHOD: &'static str = "workspace/workspaceFolders";
698}
699
700#[derive(Debug)]
703pub enum WorkDoneProgressCreate {}
704
705impl Request for WorkDoneProgressCreate {
706 type Params = WorkDoneProgressCreateParams;
707 type Result = ();
708 const METHOD: &'static str = "window/workDoneProgress/create";
709}
710
711pub enum SelectionRangeRequest {}
721
722impl Request for SelectionRangeRequest {
723 type Params = SelectionRangeParams;
724 type Result = Option<Vec<SelectionRange>>;
725 const METHOD: &'static str = "textDocument/selectionRange";
726}
727
728pub enum CallHierarchyPrepare {}
729
730impl Request for CallHierarchyPrepare {
731 type Params = CallHierarchyPrepareParams;
732 type Result = Option<Vec<CallHierarchyItem>>;
733 const METHOD: &'static str = "textDocument/prepareCallHierarchy";
734}
735
736pub enum CallHierarchyIncomingCalls {}
737
738impl Request for CallHierarchyIncomingCalls {
739 type Params = CallHierarchyIncomingCallsParams;
740 type Result = Option<Vec<CallHierarchyIncomingCall>>;
741 const METHOD: &'static str = "callHierarchy/incomingCalls";
742}
743
744pub enum CallHierarchyOutgoingCalls {}
745
746impl Request for CallHierarchyOutgoingCalls {
747 type Params = CallHierarchyOutgoingCallsParams;
748 type Result = Option<Vec<CallHierarchyOutgoingCall>>;
749 const METHOD: &'static str = "callHierarchy/outgoingCalls";
750}
751
752pub enum SemanticTokensFullRequest {}
753
754impl Request for SemanticTokensFullRequest {
755 type Params = SemanticTokensParams;
756 type Result = Option<SemanticTokensResult>;
757 const METHOD: &'static str = "textDocument/semanticTokens/full";
758}
759
760pub enum SemanticTokensFullDeltaRequest {}
761
762impl Request for SemanticTokensFullDeltaRequest {
763 type Params = SemanticTokensDeltaParams;
764 type Result = Option<SemanticTokensFullDeltaResult>;
765 const METHOD: &'static str = "textDocument/semanticTokens/full/delta";
766}
767
768pub enum SemanticTokensRangeRequest {}
769
770impl Request for SemanticTokensRangeRequest {
771 type Params = SemanticTokensRangeParams;
772 type Result = Option<SemanticTokensRangeResult>;
773 const METHOD: &'static str = "textDocument/semanticTokens/range";
774}
775
776pub enum SemanticTokensRefresh {}
782
783impl Request for SemanticTokensRefresh {
784 type Params = ();
785 type Result = ();
786 const METHOD: &'static str = "workspace/semanticTokens/refresh";
787}
788
789pub enum CodeLensRefresh {}
795
796impl Request for CodeLensRefresh {
797 type Params = ();
798 type Result = ();
799 const METHOD: &'static str = "workspace/codeLens/refresh";
800}
801
802pub enum WillCreateFiles {}
804
805impl Request for WillCreateFiles {
806 type Params = CreateFilesParams;
807 type Result = Option<WorkspaceEdit>;
808 const METHOD: &'static str = "workspace/willCreateFiles";
809}
810
811pub enum WillRenameFiles {}
813
814impl Request for WillRenameFiles {
815 type Params = RenameFilesParams;
816 type Result = Option<WorkspaceEdit>;
817 const METHOD: &'static str = "workspace/willRenameFiles";
818}
819
820pub enum WillDeleteFiles {}
822
823impl Request for WillDeleteFiles {
824 type Params = DeleteFilesParams;
825 type Result = Option<WorkspaceEdit>;
826 const METHOD: &'static str = "workspace/willDeleteFiles";
827}
828
829pub enum ShowDocument {}
831
832impl Request for ShowDocument {
833 type Params = ShowDocumentParams;
834 type Result = ShowDocumentResult;
835 const METHOD: &'static str = "window/showDocument";
836}
837
838pub enum MonikerRequest {}
839
840impl Request for MonikerRequest {
841 type Params = MonikerParams;
842 type Result = Option<Vec<Moniker>>;
843 const METHOD: &'static str = "textDocument/moniker";
844}
845
846pub enum InlayHintRequest {}
849
850impl Request for InlayHintRequest {
851 type Params = InlayHintParams;
852 type Result = Option<Vec<InlayHint>>;
853 const METHOD: &'static str = "textDocument/inlayHint";
854}
855
856pub enum InlayHintResolveRequest {}
861
862impl Request for InlayHintResolveRequest {
863 type Params = InlayHint;
864 type Result = InlayHint;
865 const METHOD: &'static str = "inlayHint/resolve";
866}
867
868pub enum InlayHintRefreshRequest {}
875
876impl Request for InlayHintRefreshRequest {
877 type Params = ();
878 type Result = ();
879 const METHOD: &'static str = "workspace/inlayHint/refresh";
880}
881
882pub enum InlineValueRequest {}
885
886impl Request for InlineValueRequest {
887 type Params = InlineValueParams;
888 type Result = Option<Vec<InlineValue>>;
889 const METHOD: &'static str = "textDocument/inlineValue";
890}
891
892pub enum InlineValueRefreshRequest {}
899
900impl Request for InlineValueRefreshRequest {
901 type Params = ();
902 type Result = ();
903 const METHOD: &'static str = "workspace/inlineValue/refresh";
904}
905
906#[derive(Debug)]
910pub enum DocumentDiagnosticRequest {}
911
912impl Request for DocumentDiagnosticRequest {
913 type Params = DocumentDiagnosticParams;
914 type Result = DocumentDiagnosticReportResult;
915 const METHOD: &'static str = "textDocument/diagnostic";
916}
917
918#[derive(Debug)]
925pub enum WorkspaceDiagnosticRequest {}
926
927impl Request for WorkspaceDiagnosticRequest {
928 type Params = WorkspaceDiagnosticParams;
929 const METHOD: &'static str = "workspace/diagnostic";
930 type Result = WorkspaceDiagnosticReportResult;
931}
932
933#[derive(Debug)]
938pub enum WorkspaceDiagnosticRefresh {}
939
940impl Request for WorkspaceDiagnosticRefresh {
941 type Params = ();
942 type Result = ();
943 const METHOD: &'static str = "workspace/diagnostic/refresh";
944}
945
946pub enum TypeHierarchyPrepare {}
953
954impl Request for TypeHierarchyPrepare {
955 type Params = TypeHierarchyPrepareParams;
956 type Result = Option<Vec<TypeHierarchyItem>>;
957 const METHOD: &'static str = "textDocument/prepareTypeHierarchy";
958}
959
960pub enum TypeHierarchySupertypes {}
966
967impl Request for TypeHierarchySupertypes {
968 type Params = TypeHierarchySupertypesParams;
969 type Result = Option<Vec<TypeHierarchyItem>>;
970 const METHOD: &'static str = "typeHierarchy/supertypes";
971}
972
973pub enum TypeHierarchySubtypes {}
978
979impl Request for TypeHierarchySubtypes {
980 type Params = TypeHierarchySubtypesParams;
981 type Result = Option<Vec<TypeHierarchyItem>>;
982 const METHOD: &'static str = "typeHierarchy/subtypes";
983}
984
985#[cfg(test)]
986mod test {
987 use super::*;
988
989 fn fake_call<R>()
990 where
991 R: Request,
992 R::Params: serde::Serialize,
993 R::Result: serde::de::DeserializeOwned,
994 {
995 }
996
997 macro_rules! check_macro {
998 ($name:tt) => {
999 assert_eq!(<lsp_request!($name) as Request>::METHOD, $name);
1001 fake_call::<lsp_request!($name)>();
1003 };
1004 }
1005
1006 #[test]
1007 fn check_macro_definitions() {
1008 check_macro!("initialize");
1009 check_macro!("shutdown");
1010
1011 check_macro!("window/showDocument");
1012 check_macro!("window/showMessageRequest");
1013 check_macro!("window/workDoneProgress/create");
1014
1015 check_macro!("client/registerCapability");
1016 check_macro!("client/unregisterCapability");
1017
1018 check_macro!("textDocument/willSaveWaitUntil");
1019 check_macro!("textDocument/completion");
1020 check_macro!("textDocument/hover");
1021 check_macro!("textDocument/signatureHelp");
1022 check_macro!("textDocument/declaration");
1023 check_macro!("textDocument/definition");
1024 check_macro!("textDocument/references");
1025 check_macro!("textDocument/documentHighlight");
1026 check_macro!("textDocument/documentSymbol");
1027 check_macro!("textDocument/codeAction");
1028 check_macro!("textDocument/codeLens");
1029 check_macro!("textDocument/documentLink");
1030 check_macro!("textDocument/rangeFormatting");
1031 check_macro!("textDocument/onTypeFormatting");
1032 check_macro!("textDocument/formatting");
1033 check_macro!("textDocument/rename");
1034 check_macro!("textDocument/documentColor");
1035 check_macro!("textDocument/colorPresentation");
1036 check_macro!("textDocument/foldingRange");
1037 check_macro!("textDocument/prepareRename");
1038 check_macro!("textDocument/implementation");
1039 check_macro!("textDocument/selectionRange");
1040 check_macro!("textDocument/typeDefinition");
1041 check_macro!("textDocument/moniker");
1042 check_macro!("textDocument/linkedEditingRange");
1043 check_macro!("textDocument/prepareCallHierarchy");
1044 check_macro!("textDocument/prepareTypeHierarchy");
1045 check_macro!("textDocument/semanticTokens/full");
1046 check_macro!("textDocument/semanticTokens/full/delta");
1047 check_macro!("textDocument/semanticTokens/range");
1048 check_macro!("textDocument/inlayHint");
1049 check_macro!("textDocument/inlineValue");
1050 check_macro!("textDocument/diagnostic");
1051
1052 check_macro!("workspace/applyEdit");
1053 check_macro!("workspace/symbol");
1054 check_macro!("workspace/executeCommand");
1055 check_macro!("workspace/configuration");
1056 check_macro!("workspace/diagnostic");
1057 check_macro!("workspace/diagnostic/refresh");
1058 check_macro!("workspace/willCreateFiles");
1059 check_macro!("workspace/willRenameFiles");
1060 check_macro!("workspace/willDeleteFiles");
1061 check_macro!("workspace/workspaceFolders");
1062 check_macro!("workspace/semanticTokens/refresh");
1063 check_macro!("workspace/codeLens/refresh");
1064 check_macro!("workspace/inlayHint/refresh");
1065 check_macro!("workspace/inlineValue/refresh");
1066
1067 check_macro!("callHierarchy/incomingCalls");
1068 check_macro!("callHierarchy/outgoingCalls");
1069 check_macro!("codeAction/resolve");
1070 check_macro!("codeLens/resolve");
1071 check_macro!("completionItem/resolve");
1072 check_macro!("documentLink/resolve");
1073 check_macro!("inlayHint/resolve");
1074 check_macro!("typeHierarchy/subtypes");
1075 check_macro!("typeHierarchy/supertypes");
1076 check_macro!("workspaceSymbol/resolve");
1077 }
1078
1079 #[test]
1080 #[cfg(feature = "proposed")]
1081 fn check_proposed_macro_definitions() {}
1082}