lsp_types/
call_hierarchy.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use url::Url;
4
5use crate::{
6 DynamicRegistrationClientCapabilities, PartialResultParams, Range, SymbolKind, SymbolTag,
7 TextDocumentPositionParams, WorkDoneProgressOptions, WorkDoneProgressParams,
8};
9
10pub type CallHierarchyClientCapabilities = DynamicRegistrationClientCapabilities;
11
12#[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize, Copy)]
13#[serde(rename_all = "camelCase")]
14pub struct CallHierarchyOptions {
15 #[serde(flatten)]
16 pub work_done_progress_options: WorkDoneProgressOptions,
17}
18
19#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize, Copy)]
20#[serde(untagged)]
21pub enum CallHierarchyServerCapability {
22 Simple(bool),
23 Options(CallHierarchyOptions),
24}
25
26impl From<CallHierarchyOptions> for CallHierarchyServerCapability {
27 fn from(from: CallHierarchyOptions) -> Self {
28 Self::Options(from)
29 }
30}
31
32impl From<bool> for CallHierarchyServerCapability {
33 fn from(from: bool) -> Self {
34 Self::Simple(from)
35 }
36}
37
38#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
39#[serde(rename_all = "camelCase")]
40pub struct CallHierarchyPrepareParams {
41 #[serde(flatten)]
42 pub text_document_position_params: TextDocumentPositionParams,
43
44 #[serde(flatten)]
45 pub work_done_progress_params: WorkDoneProgressParams,
46}
47
48#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
49#[serde(rename_all = "camelCase")]
50pub struct CallHierarchyItem {
51 pub name: String,
53
54 pub kind: SymbolKind,
56
57 #[serde(skip_serializing_if = "Option::is_none")]
59 pub tags: Option<Vec<SymbolTag>>,
60
61 #[serde(skip_serializing_if = "Option::is_none")]
63 pub detail: Option<String>,
64
65 pub uri: Url,
67
68 pub range: Range,
70
71 pub selection_range: Range,
74
75 #[serde(skip_serializing_if = "Option::is_none")]
77 pub data: Option<Value>,
78}
79
80#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
81#[serde(rename_all = "camelCase")]
82pub struct CallHierarchyIncomingCallsParams {
83 pub item: CallHierarchyItem,
84
85 #[serde(flatten)]
86 pub work_done_progress_params: WorkDoneProgressParams,
87
88 #[serde(flatten)]
89 pub partial_result_params: PartialResultParams,
90}
91
92#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
94#[serde(rename_all = "camelCase")]
95pub struct CallHierarchyIncomingCall {
96 pub from: CallHierarchyItem,
98
99 pub from_ranges: Vec<Range>,
102}
103
104#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
105#[serde(rename_all = "camelCase")]
106pub struct CallHierarchyOutgoingCallsParams {
107 pub item: CallHierarchyItem,
108
109 #[serde(flatten)]
110 pub work_done_progress_params: WorkDoneProgressParams,
111
112 #[serde(flatten)]
113 pub partial_result_params: PartialResultParams,
114}
115
116#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
118#[serde(rename_all = "camelCase")]
119pub struct CallHierarchyOutgoingCall {
120 pub to: CallHierarchyItem,
122
123 pub from_ranges: Vec<Range>,
127}