use serde::{Serialize, de::DeserializeOwned};
pub trait Request {
type Params: DeserializeOwned + Serialize + Send + Sync + 'static;
type Result: DeserializeOwned + Serialize + Send + Sync + 'static;
const METHOD: &'static str;
}
#[macro_export]
macro_rules! lsp_request {
("initialize") => {
$crate::request::Initialize
};
("shutdown") => {
$crate::request::Shutdown
};
("window/showMessageRequest") => {
$crate::request::ShowMessageRequest
};
("client/registerCapability") => {
$crate::request::RegisterCapability
};
("client/unregisterCapability") => {
$crate::request::UnregisterCapability
};
("workspace/symbol") => {
$crate::request::WorkspaceSymbolRequest
};
("workspaceSymbol/resolve") => {
$crate::request::WorkspaceSymbolResolve
};
("workspace/executeCommand") => {
$crate::request::ExecuteCommand
};
("textDocument/willSaveWaitUntil") => {
$crate::request::WillSaveWaitUntil
};
("textDocument/completion") => {
$crate::request::Completion
};
("completionItem/resolve") => {
$crate::request::ResolveCompletionItem
};
("textDocument/hover") => {
$crate::request::HoverRequest
};
("textDocument/signatureHelp") => {
$crate::request::SignatureHelpRequest
};
("textDocument/declaration") => {
$crate::request::GotoDeclaration
};
("textDocument/definition") => {
$crate::request::GotoDefinition
};
("textDocument/references") => {
$crate::request::References
};
("textDocument/documentHighlight") => {
$crate::request::DocumentHighlightRequest
};
("textDocument/documentSymbol") => {
$crate::request::DocumentSymbolRequest
};
("textDocument/codeAction") => {
$crate::request::CodeActionRequest
};
("textDocument/codeLens") => {
$crate::request::CodeLensRequest
};
("codeLens/resolve") => {
$crate::request::CodeLensResolve
};
("textDocument/documentLink") => {
$crate::request::DocumentLinkRequest
};
("documentLink/resolve") => {
$crate::request::DocumentLinkResolve
};
("workspace/applyEdit") => {
$crate::request::ApplyWorkspaceEdit
};
("textDocument/rangeFormatting") => {
$crate::request::RangeFormatting
};
("textDocument/onTypeFormatting") => {
$crate::request::OnTypeFormatting
};
("textDocument/formatting") => {
$crate::request::Formatting
};
("textDocument/rename") => {
$crate::request::Rename
};
("textDocument/documentColor") => {
$crate::request::DocumentColor
};
("textDocument/colorPresentation") => {
$crate::request::ColorPresentationRequest
};
("textDocument/foldingRange") => {
$crate::request::FoldingRangeRequest
};
("textDocument/prepareRename") => {
$crate::request::PrepareRenameRequest
};
("textDocument/implementation") => {
$crate::request::GotoImplementation
};
("textDocument/typeDefinition") => {
$crate::request::GotoTypeDefinition
};
("textDocument/selectionRange") => {
$crate::request::SelectionRangeRequest
};
("workspace/workspaceFolders") => {
$crate::request::WorkspaceFoldersRequest
};
("workspace/configuration") => {
$crate::request::WorkspaceConfiguration
};
("window/workDoneProgress/create") => {
$crate::request::WorkDoneProgressCreate
};
("callHierarchy/incomingCalls") => {
$crate::request::CallHierarchyIncomingCalls
};
("callHierarchy/outgoingCalls") => {
$crate::request::CallHierarchyOutgoingCalls
};
("textDocument/moniker") => {
$crate::request::MonikerRequest
};
("textDocument/linkedEditingRange") => {
$crate::request::LinkedEditingRange
};
("textDocument/prepareCallHierarchy") => {
$crate::request::CallHierarchyPrepare
};
("textDocument/prepareTypeHierarchy") => {
$crate::request::TypeHierarchyPrepare
};
("textDocument/semanticTokens/full") => {
$crate::request::SemanticTokensFullRequest
};
("textDocument/semanticTokens/full/delta") => {
$crate::request::SemanticTokensFullDeltaRequest
};
("textDocument/semanticTokens/range") => {
$crate::request::SemanticTokensRangeRequest
};
("textDocument/inlayHint") => {
$crate::request::InlayHintRequest
};
("textDocument/inlineValue") => {
$crate::request::InlineValueRequest
};
("textDocument/diagnostic") => {
$crate::request::DocumentDiagnosticRequest
};
("workspace/diagnostic") => {
$crate::request::WorkspaceDiagnosticRequest
};
("workspace/diagnostic/refresh") => {
$crate::request::WorkspaceDiagnosticRefresh
};
("typeHierarchy/supertypes") => {
$crate::request::TypeHierarchySupertypes
};
("typeHierarchy/subtypes") => {
$crate::request::TypeHierarchySubtypes
};
("workspace/willCreateFiles") => {
$crate::request::WillCreateFiles
};
("workspace/willRenameFiles") => {
$crate::request::WillRenameFiles
};
("workspace/willDeleteFiles") => {
$crate::request::WillDeleteFiles
};
("workspace/semanticTokens/refresh") => {
$crate::request::SemanticTokensRefresh
};
("workspace/codeLens/refresh") => {
$crate::request::CodeLensRefresh
};
("workspace/inlayHint/refresh") => {
$crate::request::InlayHintRefreshRequest
};
("workspace/inlineValue/refresh") => {
$crate::request::InlineValueRefreshRequest
};
("codeAction/resolve") => {
$crate::request::CodeActionResolveRequest
};
("inlayHint/resolve") => {
$crate::request::InlayHintResolveRequest
};
("window/showDocument") => {
$crate::request::ShowDocument
};
}
#[derive(Debug)]
pub enum Initialize {}
impl Request for Initialize {
type Params = crate::InitializeParams;
type Result = crate::InitializeResult;
const METHOD: &'static str = "initialize";
}
#[derive(Debug)]
pub enum Shutdown {}
impl Request for Shutdown {
type Params = ();
type Result = ();
const METHOD: &'static str = "shutdown";
}
#[derive(Debug)]
pub enum ShowMessageRequest {}
impl Request for ShowMessageRequest {
type Params = crate::ShowMessageRequestParams;
type Result = Option<crate::MessageActionItem>;
const METHOD: &'static str = "window/showMessageRequest";
}
#[derive(Debug)]
pub enum RegisterCapability {}
impl Request for RegisterCapability {
type Params = crate::RegistrationParams;
type Result = ();
const METHOD: &'static str = "client/registerCapability";
}
#[derive(Debug)]
pub enum UnregisterCapability {}
impl Request for UnregisterCapability {
type Params = crate::UnregistrationParams;
type Result = ();
const METHOD: &'static str = "client/unregisterCapability";
}
#[derive(Debug)]
pub enum Completion {}
impl Request for Completion {
type Params = crate::CompletionParams;
type Result = Option<crate::CompletionResponse>;
const METHOD: &'static str = "textDocument/completion";
}
#[derive(Debug)]
pub enum ResolveCompletionItem {}
impl Request for ResolveCompletionItem {
type Params = crate::CompletionItem;
type Result = crate::CompletionItem;
const METHOD: &'static str = "completionItem/resolve";
}
#[derive(Debug)]
pub enum HoverRequest {}
impl Request for HoverRequest {
type Params = crate::HoverParams;
type Result = Option<crate::Hover>;
const METHOD: &'static str = "textDocument/hover";
}
#[derive(Debug)]
pub enum SignatureHelpRequest {}
impl Request for SignatureHelpRequest {
type Params = crate::SignatureHelpParams;
type Result = Option<crate::SignatureHelp>;
const METHOD: &'static str = "textDocument/signatureHelp";
}
#[derive(Debug)]
pub enum GotoDeclaration {}
pub type GotoDeclarationParams = crate::GotoDefinitionParams;
pub type GotoDeclarationResponse = crate::GotoDefinitionResponse;
impl Request for GotoDeclaration {
type Params = GotoDeclarationParams;
type Result = Option<GotoDeclarationResponse>;
const METHOD: &'static str = "textDocument/declaration";
}
#[derive(Debug)]
pub enum GotoDefinition {}
impl Request for GotoDefinition {
type Params = crate::GotoDefinitionParams;
type Result = Option<crate::GotoDefinitionResponse>;
const METHOD: &'static str = "textDocument/definition";
}
#[derive(Debug)]
pub enum References {}
impl Request for References {
type Params = crate::ReferenceParams;
type Result = Option<Vec<crate::Location>>;
const METHOD: &'static str = "textDocument/references";
}
#[derive(Debug)]
pub enum GotoTypeDefinition {}
pub type GotoTypeDefinitionParams = crate::GotoDefinitionParams;
pub type GotoTypeDefinitionResponse = crate::GotoDefinitionResponse;
impl Request for GotoTypeDefinition {
type Params = GotoTypeDefinitionParams;
type Result = Option<GotoTypeDefinitionResponse>;
const METHOD: &'static str = "textDocument/typeDefinition";
}
#[derive(Debug)]
pub enum GotoImplementation {}
pub type GotoImplementationParams = GotoTypeDefinitionParams;
pub type GotoImplementationResponse = crate::GotoDefinitionResponse;
impl Request for GotoImplementation {
type Params = GotoImplementationParams;
type Result = Option<GotoImplementationResponse>;
const METHOD: &'static str = "textDocument/implementation";
}
#[derive(Debug)]
pub enum DocumentHighlightRequest {}
impl Request for DocumentHighlightRequest {
type Params = crate::DocumentHighlightParams;
type Result = Option<Vec<crate::DocumentHighlight>>;
const METHOD: &'static str = "textDocument/documentHighlight";
}
#[derive(Debug)]
pub enum DocumentSymbolRequest {}
impl Request for DocumentSymbolRequest {
type Params = crate::DocumentSymbolParams;
type Result = Option<crate::DocumentSymbolResponse>;
const METHOD: &'static str = "textDocument/documentSymbol";
}
#[derive(Debug)]
pub enum WorkspaceSymbolRequest {}
impl Request for WorkspaceSymbolRequest {
type Params = crate::WorkspaceSymbolParams;
type Result = Option<crate::WorkspaceSymbolResponse>;
const METHOD: &'static str = "workspace/symbol";
}
#[derive(Debug)]
pub enum WorkspaceSymbolResolve {}
impl Request for WorkspaceSymbolResolve {
type Params = crate::WorkspaceSymbol;
type Result = crate::WorkspaceSymbol;
const METHOD: &'static str = "workspaceSymbol/resolve";
}
#[derive(Debug)]
pub enum ExecuteCommand {}
impl Request for ExecuteCommand {
type Params = crate::ExecuteCommandParams;
type Result = Option<crate::Value>;
const METHOD: &'static str = "workspace/executeCommand";
}
#[derive(Debug)]
pub enum WillSaveWaitUntil {}
impl Request for WillSaveWaitUntil {
type Params = crate::WillSaveTextDocumentParams;
type Result = Option<Vec<crate::TextEdit>>;
const METHOD: &'static str = "textDocument/willSaveWaitUntil";
}
#[derive(Debug)]
pub enum ApplyWorkspaceEdit {}
impl Request for ApplyWorkspaceEdit {
type Params = crate::ApplyWorkspaceEditParams;
type Result = crate::ApplyWorkspaceEditResponse;
const METHOD: &'static str = "workspace/applyEdit";
}
#[derive(Debug)]
pub enum WorkspaceConfiguration {}
impl Request for WorkspaceConfiguration {
type Params = crate::ConfigurationParams;
type Result = Vec<crate::Value>;
const METHOD: &'static str = "workspace/configuration";
}
#[derive(Debug)]
pub enum CodeActionRequest {}
impl Request for CodeActionRequest {
type Params = crate::CodeActionParams;
type Result = Option<crate::CodeActionResponse>;
const METHOD: &'static str = "textDocument/codeAction";
}
#[derive(Debug)]
pub enum CodeActionResolveRequest {}
impl Request for CodeActionResolveRequest {
type Params = crate::CodeAction;
type Result = crate::CodeAction;
const METHOD: &'static str = "codeAction/resolve";
}
#[derive(Debug)]
pub enum CodeLensRequest {}
impl Request for CodeLensRequest {
type Params = crate::CodeLensParams;
type Result = Option<Vec<crate::CodeLens>>;
const METHOD: &'static str = "textDocument/codeLens";
}
#[derive(Debug)]
pub enum CodeLensResolve {}
impl Request for CodeLensResolve {
type Params = crate::CodeLens;
type Result = crate::CodeLens;
const METHOD: &'static str = "codeLens/resolve";
}
#[derive(Debug)]
pub enum DocumentLinkRequest {}
impl Request for DocumentLinkRequest {
type Params = crate::DocumentLinkParams;
type Result = Option<Vec<crate::DocumentLink>>;
const METHOD: &'static str = "textDocument/documentLink";
}
#[derive(Debug)]
pub enum DocumentLinkResolve {}
impl Request for DocumentLinkResolve {
type Params = crate::DocumentLink;
type Result = crate::DocumentLink;
const METHOD: &'static str = "documentLink/resolve";
}
#[derive(Debug)]
pub enum Formatting {}
impl Request for Formatting {
type Params = crate::DocumentFormattingParams;
type Result = Option<Vec<crate::TextEdit>>;
const METHOD: &'static str = "textDocument/formatting";
}
#[derive(Debug)]
pub enum RangeFormatting {}
impl Request for RangeFormatting {
type Params = crate::DocumentRangeFormattingParams;
type Result = Option<Vec<crate::TextEdit>>;
const METHOD: &'static str = "textDocument/rangeFormatting";
}
#[derive(Debug)]
pub enum OnTypeFormatting {}
impl Request for OnTypeFormatting {
type Params = crate::DocumentOnTypeFormattingParams;
type Result = Option<Vec<crate::TextEdit>>;
const METHOD: &'static str = "textDocument/onTypeFormatting";
}
#[derive(Debug)]
pub enum LinkedEditingRange {}
impl Request for LinkedEditingRange {
type Params = crate::LinkedEditingRangeParams;
type Result = Option<crate::LinkedEditingRanges>;
const METHOD: &'static str = "textDocument/linkedEditingRange";
}
#[derive(Debug)]
pub enum Rename {}
impl Request for Rename {
type Params = crate::RenameParams;
type Result = Option<crate::WorkspaceEdit>;
const METHOD: &'static str = "textDocument/rename";
}
#[derive(Debug)]
pub enum DocumentColor {}
impl Request for DocumentColor {
type Params = crate::DocumentColorParams;
type Result = Vec<crate::ColorInformation>;
const METHOD: &'static str = "textDocument/documentColor";
}
#[derive(Debug)]
pub enum ColorPresentationRequest {}
impl Request for ColorPresentationRequest {
type Params = crate::ColorPresentationParams;
type Result = Vec<crate::ColorPresentation>;
const METHOD: &'static str = "textDocument/colorPresentation";
}
#[derive(Debug)]
pub enum FoldingRangeRequest {}
impl Request for FoldingRangeRequest {
type Params = crate::FoldingRangeParams;
type Result = Option<Vec<crate::FoldingRange>>;
const METHOD: &'static str = "textDocument/foldingRange";
}
#[derive(Debug)]
pub enum PrepareRenameRequest {}
impl Request for PrepareRenameRequest {
type Params = crate::TextDocumentPositionParams;
type Result = Option<crate::PrepareRenameResponse>;
const METHOD: &'static str = "textDocument/prepareRename";
}
#[derive(Debug)]
pub enum InlineCompletionRequest {}
impl Request for InlineCompletionRequest {
type Params = crate::InlineCompletionParams;
type Result = Option<crate::InlineCompletionResponse>;
const METHOD: &'static str = "textDocument/inlineCompletion";
}
#[derive(Debug)]
pub enum WorkspaceFoldersRequest {}
impl Request for WorkspaceFoldersRequest {
type Params = ();
type Result = Option<Vec<crate::WorkspaceFolder>>;
const METHOD: &'static str = "workspace/workspaceFolders";
}
#[derive(Debug)]
pub enum WorkDoneProgressCreate {}
impl Request for WorkDoneProgressCreate {
type Params = crate::WorkDoneProgressCreateParams;
type Result = ();
const METHOD: &'static str = "window/workDoneProgress/create";
}
pub enum SelectionRangeRequest {}
impl Request for SelectionRangeRequest {
type Params = crate::SelectionRangeParams;
type Result = Option<Vec<crate::SelectionRange>>;
const METHOD: &'static str = "textDocument/selectionRange";
}
pub enum CallHierarchyPrepare {}
impl Request for CallHierarchyPrepare {
type Params = crate::CallHierarchyPrepareParams;
type Result = Option<Vec<crate::CallHierarchyItem>>;
const METHOD: &'static str = "textDocument/prepareCallHierarchy";
}
pub enum CallHierarchyIncomingCalls {}
impl Request for CallHierarchyIncomingCalls {
type Params = crate::CallHierarchyIncomingCallsParams;
type Result = Option<Vec<crate::CallHierarchyIncomingCall>>;
const METHOD: &'static str = "callHierarchy/incomingCalls";
}
pub enum CallHierarchyOutgoingCalls {}
impl Request for CallHierarchyOutgoingCalls {
type Params = crate::CallHierarchyOutgoingCallsParams;
type Result = Option<Vec<crate::CallHierarchyOutgoingCall>>;
const METHOD: &'static str = "callHierarchy/outgoingCalls";
}
pub enum SemanticTokensFullRequest {}
impl Request for SemanticTokensFullRequest {
type Params = crate::SemanticTokensParams;
type Result = Option<crate::SemanticTokensResult>;
const METHOD: &'static str = "textDocument/semanticTokens/full";
}
pub enum SemanticTokensFullDeltaRequest {}
impl Request for SemanticTokensFullDeltaRequest {
type Params = crate::SemanticTokensDeltaParams;
type Result = Option<crate::SemanticTokensFullDeltaResult>;
const METHOD: &'static str = "textDocument/semanticTokens/full/delta";
}
pub enum SemanticTokensRangeRequest {}
impl Request for SemanticTokensRangeRequest {
type Params = crate::SemanticTokensRangeParams;
type Result = Option<crate::SemanticTokensRangeResult>;
const METHOD: &'static str = "textDocument/semanticTokens/range";
}
pub enum SemanticTokensRefresh {}
impl Request for SemanticTokensRefresh {
type Params = ();
type Result = ();
const METHOD: &'static str = "workspace/semanticTokens/refresh";
}
pub enum CodeLensRefresh {}
impl Request for CodeLensRefresh {
type Params = ();
type Result = ();
const METHOD: &'static str = "workspace/codeLens/refresh";
}
pub enum WillCreateFiles {}
impl Request for WillCreateFiles {
type Params = crate::CreateFilesParams;
type Result = Option<crate::WorkspaceEdit>;
const METHOD: &'static str = "workspace/willCreateFiles";
}
pub enum WillRenameFiles {}
impl Request for WillRenameFiles {
type Params = crate::RenameFilesParams;
type Result = Option<crate::WorkspaceEdit>;
const METHOD: &'static str = "workspace/willRenameFiles";
}
pub enum WillDeleteFiles {}
impl Request for WillDeleteFiles {
type Params = crate::DeleteFilesParams;
type Result = Option<crate::WorkspaceEdit>;
const METHOD: &'static str = "workspace/willDeleteFiles";
}
pub enum ShowDocument {}
impl Request for ShowDocument {
type Params = crate::ShowDocumentParams;
type Result = crate::ShowDocumentResult;
const METHOD: &'static str = "window/showDocument";
}
pub enum MonikerRequest {}
impl Request for MonikerRequest {
type Params = crate::MonikerParams;
type Result = Option<Vec<crate::Moniker>>;
const METHOD: &'static str = "textDocument/moniker";
}
pub enum InlayHintRequest {}
impl Request for InlayHintRequest {
type Params = crate::InlayHintParams;
type Result = Option<Vec<crate::InlayHint>>;
const METHOD: &'static str = "textDocument/inlayHint";
}
pub enum InlayHintResolveRequest {}
impl Request for InlayHintResolveRequest {
type Params = crate::InlayHint;
type Result = crate::InlayHint;
const METHOD: &'static str = "inlayHint/resolve";
}
pub enum InlayHintRefreshRequest {}
impl Request for InlayHintRefreshRequest {
type Params = ();
type Result = ();
const METHOD: &'static str = "workspace/inlayHint/refresh";
}
pub enum InlineValueRequest {}
impl Request for InlineValueRequest {
type Params = crate::InlineValueParams;
type Result = Option<Vec<crate::InlineValue>>;
const METHOD: &'static str = "textDocument/inlineValue";
}
pub enum InlineValueRefreshRequest {}
impl Request for InlineValueRefreshRequest {
type Params = ();
type Result = ();
const METHOD: &'static str = "workspace/inlineValue/refresh";
}
#[derive(Debug)]
pub enum DocumentDiagnosticRequest {}
impl Request for DocumentDiagnosticRequest {
type Params = crate::DocumentDiagnosticParams;
type Result = crate::DocumentDiagnosticReportResult;
const METHOD: &'static str = "textDocument/diagnostic";
}
#[derive(Debug)]
pub enum WorkspaceDiagnosticRequest {}
impl Request for WorkspaceDiagnosticRequest {
type Params = crate::WorkspaceDiagnosticParams;
const METHOD: &'static str = "workspace/diagnostic";
type Result = crate::WorkspaceDiagnosticReportResult;
}
#[derive(Debug)]
pub enum WorkspaceDiagnosticRefresh {}
impl Request for WorkspaceDiagnosticRefresh {
type Params = ();
type Result = ();
const METHOD: &'static str = "workspace/diagnostic/refresh";
}
pub enum TypeHierarchyPrepare {}
impl Request for TypeHierarchyPrepare {
type Params = crate::TypeHierarchyPrepareParams;
type Result = Option<Vec<crate::TypeHierarchyItem>>;
const METHOD: &'static str = "textDocument/prepareTypeHierarchy";
}
pub enum TypeHierarchySupertypes {}
impl Request for TypeHierarchySupertypes {
type Params = crate::TypeHierarchySupertypesParams;
type Result = Option<Vec<crate::TypeHierarchyItem>>;
const METHOD: &'static str = "typeHierarchy/supertypes";
}
pub enum TypeHierarchySubtypes {}
impl Request for TypeHierarchySubtypes {
type Params = crate::TypeHierarchySubtypesParams;
type Result = Option<Vec<crate::TypeHierarchyItem>>;
const METHOD: &'static str = "typeHierarchy/subtypes";
}
#[cfg(test)]
mod test {
use super::*;
fn fake_call<R>()
where
R: Request,
R::Params: serde::Serialize,
R::Result: serde::de::DeserializeOwned,
{
}
macro_rules! check_macro {
($name:tt) => {
assert_eq!(<lsp_request!($name) as Request>::METHOD, $name);
fake_call::<lsp_request!($name)>();
};
}
#[test]
fn check_macro_definitions() {
check_macro!("initialize");
check_macro!("shutdown");
check_macro!("window/showDocument");
check_macro!("window/showMessageRequest");
check_macro!("window/workDoneProgress/create");
check_macro!("client/registerCapability");
check_macro!("client/unregisterCapability");
check_macro!("textDocument/willSaveWaitUntil");
check_macro!("textDocument/completion");
check_macro!("textDocument/hover");
check_macro!("textDocument/signatureHelp");
check_macro!("textDocument/declaration");
check_macro!("textDocument/definition");
check_macro!("textDocument/references");
check_macro!("textDocument/documentHighlight");
check_macro!("textDocument/documentSymbol");
check_macro!("textDocument/codeAction");
check_macro!("textDocument/codeLens");
check_macro!("textDocument/documentLink");
check_macro!("textDocument/rangeFormatting");
check_macro!("textDocument/onTypeFormatting");
check_macro!("textDocument/formatting");
check_macro!("textDocument/rename");
check_macro!("textDocument/documentColor");
check_macro!("textDocument/colorPresentation");
check_macro!("textDocument/foldingRange");
check_macro!("textDocument/prepareRename");
check_macro!("textDocument/implementation");
check_macro!("textDocument/selectionRange");
check_macro!("textDocument/typeDefinition");
check_macro!("textDocument/moniker");
check_macro!("textDocument/linkedEditingRange");
check_macro!("textDocument/prepareCallHierarchy");
check_macro!("textDocument/prepareTypeHierarchy");
check_macro!("textDocument/semanticTokens/full");
check_macro!("textDocument/semanticTokens/full/delta");
check_macro!("textDocument/semanticTokens/range");
check_macro!("textDocument/inlayHint");
check_macro!("textDocument/inlineValue");
check_macro!("textDocument/diagnostic");
check_macro!("workspace/applyEdit");
check_macro!("workspace/symbol");
check_macro!("workspace/executeCommand");
check_macro!("workspace/configuration");
check_macro!("workspace/diagnostic");
check_macro!("workspace/diagnostic/refresh");
check_macro!("workspace/willCreateFiles");
check_macro!("workspace/willRenameFiles");
check_macro!("workspace/willDeleteFiles");
check_macro!("workspace/workspaceFolders");
check_macro!("workspace/semanticTokens/refresh");
check_macro!("workspace/codeLens/refresh");
check_macro!("workspace/inlayHint/refresh");
check_macro!("workspace/inlineValue/refresh");
check_macro!("callHierarchy/incomingCalls");
check_macro!("callHierarchy/outgoingCalls");
check_macro!("codeAction/resolve");
check_macro!("codeLens/resolve");
check_macro!("completionItem/resolve");
check_macro!("documentLink/resolve");
check_macro!("inlayHint/resolve");
check_macro!("typeHierarchy/subtypes");
check_macro!("typeHierarchy/supertypes");
check_macro!("workspaceSymbol/resolve");
}
}