use crate::{ DynamicRegistrationClientCapabilities, LSPAny, PartialResultParams, Range, StaticRegistrationOptions, SymbolKind, SymbolTag, TextDocumentPositionParams, TextDocumentRegistrationOptions, Url, WorkDoneProgressOptions, WorkDoneProgressParams, }; use serde::{Deserialize, Serialize}; pub type TypeHierarchyClientCapabilities = DynamicRegistrationClientCapabilities; #[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)] pub struct TypeHierarchyOptions { #[serde(flatten)] pub work_done_progress_options: WorkDoneProgressOptions, } #[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)] pub struct TypeHierarchyRegistrationOptions { #[serde(flatten)] pub text_document_registration_options: TextDocumentRegistrationOptions, #[serde(flatten)] pub type_hierarchy_options: TypeHierarchyOptions, #[serde(flatten)] pub static_registration_options: StaticRegistrationOptions, } #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] pub struct TypeHierarchyPrepareParams { #[serde(flatten)] pub text_document_position_params: TextDocumentPositionParams, #[serde(flatten)] pub work_done_progress_params: WorkDoneProgressParams, } #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] pub struct TypeHierarchySupertypesParams { pub item: TypeHierarchyItem, #[serde(flatten)] pub work_done_progress_params: WorkDoneProgressParams, #[serde(flatten)] pub partial_result_params: PartialResultParams, } #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] pub struct TypeHierarchySubtypesParams { pub item: TypeHierarchyItem, #[serde(flatten)] pub work_done_progress_params: WorkDoneProgressParams, #[serde(flatten)] pub partial_result_params: PartialResultParams, } #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct TypeHierarchyItem { /// The name of this item. pub name: String, /// The kind of this item. pub kind: SymbolKind, /// Tags for this item. #[serde(skip_serializing_if = "Option::is_none")] pub tags: Option, /// More detail for this item, e.g. the signature of a function. #[serde(skip_serializing_if = "Option::is_none")] pub detail: Option, /// The resource identifier of this item. pub uri: Url, /// The range enclosing this symbol not including leading/trailing whitespace /// but everything else, e.g. comments and code. pub range: Range, /// The range that should be selected and revealed when this symbol is being /// picked, e.g. the name of a function. Must be contained by the /// [`range`](#TypeHierarchyItem.range). pub selection_range: Range, /// A data entry field that is preserved between a type hierarchy prepare and /// supertypes or subtypes requests. It could also be used to identify the /// type hierarchy in the server, helping improve the performance on /// resolving supertypes and subtypes. #[serde(skip_serializing_if = "Option::is_none")] pub data: Option, }