1use serde::{Serialize, de::DeserializeOwned};
2
3pub trait Request {
4 type Params: DeserializeOwned + Serialize + Send + Sync + 'static;
5 type Result: DeserializeOwned + Serialize + Send + Sync + 'static;
6 const METHOD: &'static str;
7}
8
9#[macro_export]
10macro_rules! lsp_request {
11 ("initialize") => {
12 $crate::request::Initialize
13 };
14 ("shutdown") => {
15 $crate::request::Shutdown
16 };
17
18 ("window/showMessageRequest") => {
19 $crate::request::ShowMessageRequest
20 };
21
22 ("client/registerCapability") => {
23 $crate::request::RegisterCapability
24 };
25 ("client/unregisterCapability") => {
26 $crate::request::UnregisterCapability
27 };
28
29 ("workspace/symbol") => {
30 $crate::request::WorkspaceSymbolRequest
31 };
32 ("workspaceSymbol/resolve") => {
33 $crate::request::WorkspaceSymbolResolve
34 };
35 ("workspace/executeCommand") => {
36 $crate::request::ExecuteCommand
37 };
38
39 ("textDocument/willSaveWaitUntil") => {
40 $crate::request::WillSaveWaitUntil
41 };
42
43 ("textDocument/completion") => {
44 $crate::request::Completion
45 };
46 ("completionItem/resolve") => {
47 $crate::request::ResolveCompletionItem
48 };
49 ("textDocument/hover") => {
50 $crate::request::HoverRequest
51 };
52 ("textDocument/signatureHelp") => {
53 $crate::request::SignatureHelpRequest
54 };
55 ("textDocument/declaration") => {
56 $crate::request::GotoDeclaration
57 };
58 ("textDocument/definition") => {
59 $crate::request::GotoDefinition
60 };
61 ("textDocument/references") => {
62 $crate::request::References
63 };
64 ("textDocument/documentHighlight") => {
65 $crate::request::DocumentHighlightRequest
66 };
67 ("textDocument/documentSymbol") => {
68 $crate::request::DocumentSymbolRequest
69 };
70 ("textDocument/codeAction") => {
71 $crate::request::CodeActionRequest
72 };
73 ("textDocument/codeLens") => {
74 $crate::request::CodeLensRequest
75 };
76 ("codeLens/resolve") => {
77 $crate::request::CodeLensResolve
78 };
79 ("textDocument/documentLink") => {
80 $crate::request::DocumentLinkRequest
81 };
82 ("documentLink/resolve") => {
83 $crate::request::DocumentLinkResolve
84 };
85 ("workspace/applyEdit") => {
86 $crate::request::ApplyWorkspaceEdit
87 };
88 ("textDocument/rangeFormatting") => {
89 $crate::request::RangeFormatting
90 };
91 ("textDocument/onTypeFormatting") => {
92 $crate::request::OnTypeFormatting
93 };
94 ("textDocument/formatting") => {
95 $crate::request::Formatting
96 };
97 ("textDocument/rename") => {
98 $crate::request::Rename
99 };
100 ("textDocument/documentColor") => {
101 $crate::request::DocumentColor
102 };
103 ("textDocument/colorPresentation") => {
104 $crate::request::ColorPresentationRequest
105 };
106 ("textDocument/foldingRange") => {
107 $crate::request::FoldingRangeRequest
108 };
109 ("textDocument/prepareRename") => {
110 $crate::request::PrepareRenameRequest
111 };
112 ("textDocument/implementation") => {
113 $crate::request::GotoImplementation
114 };
115 ("textDocument/typeDefinition") => {
116 $crate::request::GotoTypeDefinition
117 };
118 ("textDocument/selectionRange") => {
119 $crate::request::SelectionRangeRequest
120 };
121 ("workspace/workspaceFolders") => {
122 $crate::request::WorkspaceFoldersRequest
123 };
124 ("workspace/configuration") => {
125 $crate::request::WorkspaceConfiguration
126 };
127 ("window/workDoneProgress/create") => {
128 $crate::request::WorkDoneProgressCreate
129 };
130 ("callHierarchy/incomingCalls") => {
131 $crate::request::CallHierarchyIncomingCalls
132 };
133 ("callHierarchy/outgoingCalls") => {
134 $crate::request::CallHierarchyOutgoingCalls
135 };
136 ("textDocument/moniker") => {
137 $crate::request::MonikerRequest
138 };
139 ("textDocument/linkedEditingRange") => {
140 $crate::request::LinkedEditingRange
141 };
142 ("textDocument/prepareCallHierarchy") => {
143 $crate::request::CallHierarchyPrepare
144 };
145 ("textDocument/prepareTypeHierarchy") => {
146 $crate::request::TypeHierarchyPrepare
147 };
148 ("textDocument/semanticTokens/full") => {
149 $crate::request::SemanticTokensFullRequest
150 };
151 ("textDocument/semanticTokens/full/delta") => {
152 $crate::request::SemanticTokensFullDeltaRequest
153 };
154 ("textDocument/semanticTokens/range") => {
155 $crate::request::SemanticTokensRangeRequest
156 };
157 ("textDocument/inlayHint") => {
158 $crate::request::InlayHintRequest
159 };
160 ("textDocument/inlineValue") => {
161 $crate::request::InlineValueRequest
162 };
163 ("textDocument/diagnostic") => {
164 $crate::request::DocumentDiagnosticRequest
165 };
166 ("workspace/diagnostic") => {
167 $crate::request::WorkspaceDiagnosticRequest
168 };
169 ("workspace/diagnostic/refresh") => {
170 $crate::request::WorkspaceDiagnosticRefresh
171 };
172 ("typeHierarchy/supertypes") => {
173 $crate::request::TypeHierarchySupertypes
174 };
175 ("typeHierarchy/subtypes") => {
176 $crate::request::TypeHierarchySubtypes
177 };
178 ("workspace/willCreateFiles") => {
179 $crate::request::WillCreateFiles
180 };
181 ("workspace/willRenameFiles") => {
182 $crate::request::WillRenameFiles
183 };
184 ("workspace/willDeleteFiles") => {
185 $crate::request::WillDeleteFiles
186 };
187 ("workspace/semanticTokens/refresh") => {
188 $crate::request::SemanticTokensRefresh
189 };
190 ("workspace/codeLens/refresh") => {
191 $crate::request::CodeLensRefresh
192 };
193 ("workspace/inlayHint/refresh") => {
194 $crate::request::InlayHintRefreshRequest
195 };
196 ("workspace/inlineValue/refresh") => {
197 $crate::request::InlineValueRefreshRequest
198 };
199 ("codeAction/resolve") => {
200 $crate::request::CodeActionResolveRequest
201 };
202 ("inlayHint/resolve") => {
203 $crate::request::InlayHintResolveRequest
204 };
205 ("window/showDocument") => {
206 $crate::request::ShowDocument
207 };
208}
209
210#[derive(Debug)]
216pub enum Initialize {}
217
218impl Request for Initialize {
219 type Params = crate::InitializeParams;
220 type Result = crate::InitializeResult;
221 const METHOD: &'static str = "initialize";
222}
223
224#[derive(Debug)]
228pub enum Shutdown {}
229
230impl Request for Shutdown {
231 type Params = ();
232 type Result = ();
233 const METHOD: &'static str = "shutdown";
234}
235
236#[derive(Debug)]
240pub enum ShowMessageRequest {}
241
242impl Request for ShowMessageRequest {
243 type Params = crate::ShowMessageRequestParams;
244 type Result = Option<crate::MessageActionItem>;
245 const METHOD: &'static str = "window/showMessageRequest";
246}
247
248#[derive(Debug)]
252pub enum RegisterCapability {}
253
254impl Request for RegisterCapability {
255 type Params = crate::RegistrationParams;
256 type Result = ();
257 const METHOD: &'static str = "client/registerCapability";
258}
259
260#[derive(Debug)]
263pub enum UnregisterCapability {}
264
265impl Request for UnregisterCapability {
266 type Params = crate::UnregistrationParams;
267 type Result = ();
268 const METHOD: &'static str = "client/unregisterCapability";
269}
270
271#[derive(Debug)]
283pub enum Completion {}
284
285impl Request for Completion {
286 type Params = crate::CompletionParams;
287 type Result = Option<crate::CompletionResponse>;
288 const METHOD: &'static str = "textDocument/completion";
289}
290
291#[derive(Debug)]
293pub enum ResolveCompletionItem {}
294
295impl Request for ResolveCompletionItem {
296 type Params = crate::CompletionItem;
297 type Result = crate::CompletionItem;
298 const METHOD: &'static str = "completionItem/resolve";
299}
300
301#[derive(Debug)]
304pub enum HoverRequest {}
305
306impl Request for HoverRequest {
307 type Params = crate::HoverParams;
308 type Result = Option<crate::Hover>;
309 const METHOD: &'static str = "textDocument/hover";
310}
311
312#[derive(Debug)]
315pub enum SignatureHelpRequest {}
316
317impl Request for SignatureHelpRequest {
318 type Params = crate::SignatureHelpParams;
319 type Result = Option<crate::SignatureHelp>;
320 const METHOD: &'static str = "textDocument/signatureHelp";
321}
322
323#[derive(Debug)]
324pub enum GotoDeclaration {}
325pub type GotoDeclarationParams = crate::GotoDefinitionParams;
326pub type GotoDeclarationResponse = crate::GotoDefinitionResponse;
327
328impl Request for GotoDeclaration {
331 type Params = GotoDeclarationParams;
332 type Result = Option<GotoDeclarationResponse>;
333 const METHOD: &'static str = "textDocument/declaration";
334}
335
336#[derive(Debug)]
339pub enum GotoDefinition {}
340
341impl Request for GotoDefinition {
342 type Params = crate::GotoDefinitionParams;
343 type Result = Option<crate::GotoDefinitionResponse>;
344 const METHOD: &'static str = "textDocument/definition";
345}
346
347#[derive(Debug)]
350pub enum References {}
351
352impl Request for References {
353 type Params = crate::ReferenceParams;
354 type Result = Option<Vec<crate::Location>>;
355 const METHOD: &'static str = "textDocument/references";
356}
357
358#[derive(Debug)]
362pub enum GotoTypeDefinition {}
363
364pub type GotoTypeDefinitionParams = crate::GotoDefinitionParams;
365pub type GotoTypeDefinitionResponse = crate::GotoDefinitionResponse;
366
367impl Request for GotoTypeDefinition {
368 type Params = GotoTypeDefinitionParams;
369 type Result = Option<GotoTypeDefinitionResponse>;
370 const METHOD: &'static str = "textDocument/typeDefinition";
371}
372
373#[derive(Debug)]
377pub enum GotoImplementation {}
378
379pub type GotoImplementationParams = GotoTypeDefinitionParams;
380pub type GotoImplementationResponse = crate::GotoDefinitionResponse;
381
382impl Request for GotoImplementation {
383 type Params = GotoImplementationParams;
384 type Result = Option<GotoImplementationResponse>;
385 const METHOD: &'static str = "textDocument/implementation";
386}
387
388#[derive(Debug)]
396pub enum DocumentHighlightRequest {}
397
398impl Request for DocumentHighlightRequest {
399 type Params = crate::DocumentHighlightParams;
400 type Result = Option<Vec<crate::DocumentHighlight>>;
401 const METHOD: &'static str = "textDocument/documentHighlight";
402}
403
404#[derive(Debug)]
407pub enum DocumentSymbolRequest {}
408
409impl Request for DocumentSymbolRequest {
410 type Params = crate::DocumentSymbolParams;
411 type Result = Option<crate::DocumentSymbolResponse>;
412 const METHOD: &'static str = "textDocument/documentSymbol";
413}
414
415#[derive(Debug)]
418pub enum WorkspaceSymbolRequest {}
419
420impl Request for WorkspaceSymbolRequest {
421 type Params = crate::WorkspaceSymbolParams;
422 type Result = Option<crate::WorkspaceSymbolResponse>;
423 const METHOD: &'static str = "workspace/symbol";
424}
425
426#[derive(Debug)]
429pub enum WorkspaceSymbolResolve {}
430
431impl Request for WorkspaceSymbolResolve {
432 type Params = crate::WorkspaceSymbol;
433 type Result = crate::WorkspaceSymbol;
434 const METHOD: &'static str = "workspaceSymbol/resolve";
435}
436
437#[derive(Debug)]
442pub enum ExecuteCommand {}
443
444impl Request for ExecuteCommand {
445 type Params = crate::ExecuteCommandParams;
446 type Result = Option<crate::Value>;
447 const METHOD: &'static str = "workspace/executeCommand";
448}
449
450#[derive(Debug)]
456pub enum WillSaveWaitUntil {}
457
458impl Request for WillSaveWaitUntil {
459 type Params = crate::WillSaveTextDocumentParams;
460 type Result = Option<Vec<crate::TextEdit>>;
461 const METHOD: &'static str = "textDocument/willSaveWaitUntil";
462}
463
464#[derive(Debug)]
467pub enum ApplyWorkspaceEdit {}
468
469impl Request for ApplyWorkspaceEdit {
470 type Params = crate::ApplyWorkspaceEditParams;
471 type Result = crate::ApplyWorkspaceEditResponse;
472 const METHOD: &'static str = "workspace/applyEdit";
473}
474
475#[derive(Debug)]
489pub enum WorkspaceConfiguration {}
490
491impl Request for WorkspaceConfiguration {
492 type Params = crate::ConfigurationParams;
493 type Result = Vec<crate::Value>;
494 const METHOD: &'static str = "workspace/configuration";
495}
496
497#[derive(Debug)]
501pub enum CodeActionRequest {}
502
503impl Request for CodeActionRequest {
504 type Params = crate::CodeActionParams;
505 type Result = Option<crate::CodeActionResponse>;
506 const METHOD: &'static str = "textDocument/codeAction";
507}
508
509#[derive(Debug)]
516pub enum CodeActionResolveRequest {}
517
518impl Request for CodeActionResolveRequest {
519 type Params = crate::CodeAction;
520 type Result = crate::CodeAction;
521 const METHOD: &'static str = "codeAction/resolve";
522}
523
524#[derive(Debug)]
526pub enum CodeLensRequest {}
527
528impl Request for CodeLensRequest {
529 type Params = crate::CodeLensParams;
530 type Result = Option<Vec<crate::CodeLens>>;
531 const METHOD: &'static str = "textDocument/codeLens";
532}
533
534#[derive(Debug)]
537pub enum CodeLensResolve {}
538
539impl Request for CodeLensResolve {
540 type Params = crate::CodeLens;
541 type Result = crate::CodeLens;
542 const METHOD: &'static str = "codeLens/resolve";
543}
544
545#[derive(Debug)]
547pub enum DocumentLinkRequest {}
548
549impl Request for DocumentLinkRequest {
550 type Params = crate::DocumentLinkParams;
551 type Result = Option<Vec<crate::DocumentLink>>;
552 const METHOD: &'static str = "textDocument/documentLink";
553}
554
555#[derive(Debug)]
558pub enum DocumentLinkResolve {}
559
560impl Request for DocumentLinkResolve {
561 type Params = crate::DocumentLink;
562 type Result = crate::DocumentLink;
563 const METHOD: &'static str = "documentLink/resolve";
564}
565
566#[derive(Debug)]
568pub enum Formatting {}
569
570impl Request for Formatting {
571 type Params = crate::DocumentFormattingParams;
572 type Result = Option<Vec<crate::TextEdit>>;
573 const METHOD: &'static str = "textDocument/formatting";
574}
575
576#[derive(Debug)]
578pub enum RangeFormatting {}
579
580impl Request for RangeFormatting {
581 type Params = crate::DocumentRangeFormattingParams;
582 type Result = Option<Vec<crate::TextEdit>>;
583 const METHOD: &'static str = "textDocument/rangeFormatting";
584}
585
586#[derive(Debug)]
589pub enum OnTypeFormatting {}
590
591impl Request for OnTypeFormatting {
592 type Params = crate::DocumentOnTypeFormattingParams;
593 type Result = Option<Vec<crate::TextEdit>>;
594 const METHOD: &'static str = "textDocument/onTypeFormatting";
595}
596
597#[derive(Debug)]
603pub enum LinkedEditingRange {}
604
605impl Request for LinkedEditingRange {
606 type Params = crate::LinkedEditingRangeParams;
607 type Result = Option<crate::LinkedEditingRanges>;
608 const METHOD: &'static str = "textDocument/linkedEditingRange";
609}
610
611#[derive(Debug)]
613pub enum Rename {}
614
615impl Request for Rename {
616 type Params = crate::RenameParams;
617 type Result = Option<crate::WorkspaceEdit>;
618 const METHOD: &'static str = "textDocument/rename";
619}
620
621#[derive(Debug)]
624pub enum DocumentColor {}
625
626impl Request for DocumentColor {
627 type Params = crate::DocumentColorParams;
628 type Result = Vec<crate::ColorInformation>;
629 const METHOD: &'static str = "textDocument/documentColor";
630}
631
632#[derive(Debug)]
635pub enum ColorPresentationRequest {}
636
637impl Request for ColorPresentationRequest {
638 type Params = crate::ColorPresentationParams;
639 type Result = Vec<crate::ColorPresentation>;
640 const METHOD: &'static str = "textDocument/colorPresentation";
641}
642
643#[derive(Debug)]
645pub enum FoldingRangeRequest {}
646
647impl Request for FoldingRangeRequest {
648 type Params = crate::FoldingRangeParams;
649 type Result = Option<Vec<crate::FoldingRange>>;
650 const METHOD: &'static str = "textDocument/foldingRange";
651}
652
653#[derive(Debug)]
656pub enum PrepareRenameRequest {}
657
658impl Request for PrepareRenameRequest {
659 type Params = crate::TextDocumentPositionParams;
660 type Result = Option<crate::PrepareRenameResponse>;
661 const METHOD: &'static str = "textDocument/prepareRename";
662}
663
664#[derive(Debug)]
665#[cfg(feature = "proposed")]
666pub enum InlineCompletionRequest {}
667
668#[cfg(feature = "proposed")]
669impl Request for InlineCompletionRequest {
670 type Params = crate::InlineCompletionParams;
671 type Result = Option<crate::InlineCompletionResponse>;
672 const METHOD: &'static str = "textDocument/inlineCompletion";
673}
674
675#[derive(Debug)]
679pub enum WorkspaceFoldersRequest {}
680
681impl Request for WorkspaceFoldersRequest {
682 type Params = ();
683 type Result = Option<Vec<crate::WorkspaceFolder>>;
684 const METHOD: &'static str = "workspace/workspaceFolders";
685}
686
687#[derive(Debug)]
690pub enum WorkDoneProgressCreate {}
691
692impl Request for WorkDoneProgressCreate {
693 type Params = crate::WorkDoneProgressCreateParams;
694 type Result = ();
695 const METHOD: &'static str = "window/workDoneProgress/create";
696}
697
698pub enum SelectionRangeRequest {}
708
709impl Request for SelectionRangeRequest {
710 type Params = crate::SelectionRangeParams;
711 type Result = Option<Vec<crate::SelectionRange>>;
712 const METHOD: &'static str = "textDocument/selectionRange";
713}
714
715pub enum CallHierarchyPrepare {}
716
717impl Request for CallHierarchyPrepare {
718 type Params = crate::CallHierarchyPrepareParams;
719 type Result = Option<Vec<crate::CallHierarchyItem>>;
720 const METHOD: &'static str = "textDocument/prepareCallHierarchy";
721}
722
723pub enum CallHierarchyIncomingCalls {}
724
725impl Request for CallHierarchyIncomingCalls {
726 type Params = crate::CallHierarchyIncomingCallsParams;
727 type Result = Option<Vec<crate::CallHierarchyIncomingCall>>;
728 const METHOD: &'static str = "callHierarchy/incomingCalls";
729}
730
731pub enum CallHierarchyOutgoingCalls {}
732
733impl Request for CallHierarchyOutgoingCalls {
734 type Params = crate::CallHierarchyOutgoingCallsParams;
735 type Result = Option<Vec<crate::CallHierarchyOutgoingCall>>;
736 const METHOD: &'static str = "callHierarchy/outgoingCalls";
737}
738
739pub enum SemanticTokensFullRequest {}
740
741impl Request for SemanticTokensFullRequest {
742 type Params = crate::SemanticTokensParams;
743 type Result = Option<crate::SemanticTokensResult>;
744 const METHOD: &'static str = "textDocument/semanticTokens/full";
745}
746
747pub enum SemanticTokensFullDeltaRequest {}
748
749impl Request for SemanticTokensFullDeltaRequest {
750 type Params = crate::SemanticTokensDeltaParams;
751 type Result = Option<crate::SemanticTokensFullDeltaResult>;
752 const METHOD: &'static str = "textDocument/semanticTokens/full/delta";
753}
754
755pub enum SemanticTokensRangeRequest {}
756
757impl Request for SemanticTokensRangeRequest {
758 type Params = crate::SemanticTokensRangeParams;
759 type Result = Option<crate::SemanticTokensRangeResult>;
760 const METHOD: &'static str = "textDocument/semanticTokens/range";
761}
762
763pub enum SemanticTokensRefresh {}
770
771impl Request for SemanticTokensRefresh {
772 type Params = ();
773 type Result = ();
774 const METHOD: &'static str = "workspace/semanticTokens/refresh";
775}
776
777pub enum CodeLensRefresh {}
784
785impl Request for CodeLensRefresh {
786 type Params = ();
787 type Result = ();
788 const METHOD: &'static str = "workspace/codeLens/refresh";
789}
790
791pub enum WillCreateFiles {}
798
799impl Request for WillCreateFiles {
800 type Params = crate::CreateFilesParams;
801 type Result = Option<crate::WorkspaceEdit>;
802 const METHOD: &'static str = "workspace/willCreateFiles";
803}
804
805pub enum WillRenameFiles {}
807
808impl Request for WillRenameFiles {
809 type Params = crate::RenameFilesParams;
810 type Result = Option<crate::WorkspaceEdit>;
811 const METHOD: &'static str = "workspace/willRenameFiles";
812}
813
814pub enum WillDeleteFiles {}
816
817impl Request for WillDeleteFiles {
818 type Params = crate::DeleteFilesParams;
819 type Result = Option<crate::WorkspaceEdit>;
820 const METHOD: &'static str = "workspace/willDeleteFiles";
821}
822
823pub enum ShowDocument {}
825
826impl Request for ShowDocument {
827 type Params = crate::ShowDocumentParams;
828 type Result = crate::ShowDocumentResult;
829 const METHOD: &'static str = "window/showDocument";
830}
831
832pub enum MonikerRequest {}
833
834impl Request for MonikerRequest {
835 type Params = crate::MonikerParams;
836 type Result = Option<Vec<crate::Moniker>>;
837 const METHOD: &'static str = "textDocument/moniker";
838}
839
840pub enum InlayHintRequest {}
843
844impl Request for InlayHintRequest {
845 type Params = crate::InlayHintParams;
846 type Result = Option<Vec<crate::InlayHint>>;
847 const METHOD: &'static str = "textDocument/inlayHint";
848}
849
850pub enum InlayHintResolveRequest {}
855
856impl Request for InlayHintResolveRequest {
857 type Params = crate::InlayHint;
858 type Result = crate::InlayHint;
859 const METHOD: &'static str = "inlayHint/resolve";
860}
861
862pub enum InlayHintRefreshRequest {}
869
870impl Request for InlayHintRefreshRequest {
871 type Params = ();
872 type Result = ();
873 const METHOD: &'static str = "workspace/inlayHint/refresh";
874}
875
876pub enum InlineValueRequest {}
879
880impl Request for InlineValueRequest {
881 type Params = crate::InlineValueParams;
882 type Result = Option<Vec<crate::InlineValue>>;
883 const METHOD: &'static str = "textDocument/inlineValue";
884}
885
886pub enum InlineValueRefreshRequest {}
893
894impl Request for InlineValueRefreshRequest {
895 type Params = ();
896 type Result = ();
897 const METHOD: &'static str = "workspace/inlineValue/refresh";
898}
899
900#[derive(Debug)]
904pub enum DocumentDiagnosticRequest {}
905
906impl Request for DocumentDiagnosticRequest {
907 type Params = crate::DocumentDiagnosticParams;
908 type Result = crate::DocumentDiagnosticReportResult;
909 const METHOD: &'static str = "textDocument/diagnostic";
910}
911
912#[derive(Debug)]
919pub enum WorkspaceDiagnosticRequest {}
920
921impl Request for WorkspaceDiagnosticRequest {
922 type Params = crate::WorkspaceDiagnosticParams;
923 const METHOD: &'static str = "workspace/diagnostic";
924 type Result = crate::WorkspaceDiagnosticReportResult;
925}
926
927#[derive(Debug)]
932pub enum WorkspaceDiagnosticRefresh {}
933
934impl Request for WorkspaceDiagnosticRefresh {
935 type Params = ();
936 type Result = ();
937 const METHOD: &'static str = "workspace/diagnostic/refresh";
938}
939
940pub enum TypeHierarchyPrepare {}
947
948impl Request for TypeHierarchyPrepare {
949 type Params = crate::TypeHierarchyPrepareParams;
950 type Result = Option<Vec<crate::TypeHierarchyItem>>;
951 const METHOD: &'static str = "textDocument/prepareTypeHierarchy";
952}
953
954pub enum TypeHierarchySupertypes {}
960
961impl Request for TypeHierarchySupertypes {
962 type Params = crate::TypeHierarchySupertypesParams;
963 type Result = Option<Vec<crate::TypeHierarchyItem>>;
964 const METHOD: &'static str = "typeHierarchy/supertypes";
965}
966
967pub enum TypeHierarchySubtypes {}
972
973impl Request for TypeHierarchySubtypes {
974 type Params = crate::TypeHierarchySubtypesParams;
975 type Result = Option<Vec<crate::TypeHierarchyItem>>;
976 const METHOD: &'static str = "typeHierarchy/subtypes";
977}
978
979#[cfg(test)]
980mod test {
981 use super::*;
982
983 fn fake_call<R>()
984 where
985 R: Request,
986 R::Params: serde::Serialize,
987 R::Result: serde::de::DeserializeOwned,
988 {
989 }
990
991 macro_rules! check_macro {
992 ($name:tt) => {
993 assert_eq!(<lsp_request!($name) as Request>::METHOD, $name);
995 fake_call::<lsp_request!($name)>();
997 };
998 }
999
1000 #[test]
1001 fn check_macro_definitions() {
1002 check_macro!("initialize");
1003 check_macro!("shutdown");
1004
1005 check_macro!("window/showDocument");
1006 check_macro!("window/showMessageRequest");
1007 check_macro!("window/workDoneProgress/create");
1008
1009 check_macro!("client/registerCapability");
1010 check_macro!("client/unregisterCapability");
1011
1012 check_macro!("textDocument/willSaveWaitUntil");
1013 check_macro!("textDocument/completion");
1014 check_macro!("textDocument/hover");
1015 check_macro!("textDocument/signatureHelp");
1016 check_macro!("textDocument/declaration");
1017 check_macro!("textDocument/definition");
1018 check_macro!("textDocument/references");
1019 check_macro!("textDocument/documentHighlight");
1020 check_macro!("textDocument/documentSymbol");
1021 check_macro!("textDocument/codeAction");
1022 check_macro!("textDocument/codeLens");
1023 check_macro!("textDocument/documentLink");
1024 check_macro!("textDocument/rangeFormatting");
1025 check_macro!("textDocument/onTypeFormatting");
1026 check_macro!("textDocument/formatting");
1027 check_macro!("textDocument/rename");
1028 check_macro!("textDocument/documentColor");
1029 check_macro!("textDocument/colorPresentation");
1030 check_macro!("textDocument/foldingRange");
1031 check_macro!("textDocument/prepareRename");
1032 check_macro!("textDocument/implementation");
1033 check_macro!("textDocument/selectionRange");
1034 check_macro!("textDocument/typeDefinition");
1035 check_macro!("textDocument/moniker");
1036 check_macro!("textDocument/linkedEditingRange");
1037 check_macro!("textDocument/prepareCallHierarchy");
1038 check_macro!("textDocument/prepareTypeHierarchy");
1039 check_macro!("textDocument/semanticTokens/full");
1040 check_macro!("textDocument/semanticTokens/full/delta");
1041 check_macro!("textDocument/semanticTokens/range");
1042 check_macro!("textDocument/inlayHint");
1043 check_macro!("textDocument/inlineValue");
1044 check_macro!("textDocument/diagnostic");
1045
1046 check_macro!("workspace/applyEdit");
1047 check_macro!("workspace/symbol");
1048 check_macro!("workspace/executeCommand");
1049 check_macro!("workspace/configuration");
1050 check_macro!("workspace/diagnostic");
1051 check_macro!("workspace/diagnostic/refresh");
1052 check_macro!("workspace/willCreateFiles");
1053 check_macro!("workspace/willRenameFiles");
1054 check_macro!("workspace/willDeleteFiles");
1055 check_macro!("workspace/workspaceFolders");
1056 check_macro!("workspace/semanticTokens/refresh");
1057 check_macro!("workspace/codeLens/refresh");
1058 check_macro!("workspace/inlayHint/refresh");
1059 check_macro!("workspace/inlineValue/refresh");
1060
1061 check_macro!("callHierarchy/incomingCalls");
1062 check_macro!("callHierarchy/outgoingCalls");
1063 check_macro!("codeAction/resolve");
1064 check_macro!("codeLens/resolve");
1065 check_macro!("completionItem/resolve");
1066 check_macro!("documentLink/resolve");
1067 check_macro!("inlayHint/resolve");
1068 check_macro!("typeHierarchy/subtypes");
1069 check_macro!("typeHierarchy/supertypes");
1070 check_macro!("workspaceSymbol/resolve");
1071 }
1072
1073 #[test]
1074 #[cfg(feature = "proposed")]
1075 fn check_proposed_macro_definitions() {}
1076}