1
1
use std:: path:: PathBuf ;
2
2
3
- use async_lsp:: lsp_types:: { DocumentSymbol , DocumentSymbolResponse , SymbolKind } ;
3
+ use async_lsp:: lsp_types:: { DocumentSymbol , DocumentSymbolResponse , Range , SymbolKind } ;
4
4
use async_lsp:: { ErrorCode , ResponseError } ;
5
5
use lsp_textdocument:: FullTextDocument ;
6
6
use zydeco_lang:: surface:: parse:: syntax:: Declaration ;
@@ -92,7 +92,6 @@ fn declaration_to_symbol(
92
92
}
93
93
}
94
94
95
- #[ allow( deprecated) ]
96
95
fn name_to_symbol (
97
96
name : & impl NameT , item_span : & Span , document : & FullTextDocument , kind : SymbolKind ,
98
97
children : Vec < DocumentSymbol > ,
@@ -103,48 +102,45 @@ fn name_to_symbol(
103
102
104
103
let item_range = span_to_range ( item_span, document) ;
105
104
106
- DocumentSymbol {
107
- name : name_str,
108
- detail : None ,
109
- kind,
110
- tags : None ,
111
- deprecated : None ,
112
- range : item_range,
113
- selection_range : name_range,
114
- children : Some ( children) ,
115
- }
105
+ document_symbol_new ( name_str, kind, item_range, name_range, Some ( children) )
116
106
}
117
107
118
- #[ allow( deprecated) ]
119
108
fn ctorv_to_symbol ( ctorv : & CtorV , document : & FullTextDocument ) -> DocumentSymbol {
120
109
let name_range = span_to_range ( ctorv. span ( ) , document) ;
121
110
122
- DocumentSymbol {
123
- name : ctorv. name ( ) . to_owned ( ) ,
124
- detail : None ,
125
- kind : SymbolKind :: CONSTRUCTOR ,
126
- tags : None ,
127
- deprecated : None ,
128
- // TODO: get span of entire constructor
129
- range : name_range,
130
- selection_range : name_range,
131
- children : None ,
132
- }
111
+ // TODO: get span of entire constructor
112
+ document_symbol_new (
113
+ ctorv. name ( ) . to_owned ( ) ,
114
+ SymbolKind :: CONSTRUCTOR ,
115
+ name_range,
116
+ name_range,
117
+ None ,
118
+ )
133
119
}
134
120
135
- #[ allow( deprecated) ]
136
121
fn dtorv_to_symbol ( dtorv : & DtorV , document : & FullTextDocument ) -> DocumentSymbol {
137
122
let name_range = span_to_range ( dtorv. span ( ) , document) ;
138
123
124
+ // TODO: get span of entire destructor
125
+ document_symbol_new ( dtorv. name ( ) . to_owned ( ) , SymbolKind :: METHOD , name_range, name_range, None )
126
+ }
127
+
128
+ /// Constructs a [`DocumentSymbol`]. Since `DocumentSymbol::deprecated` is marked as
129
+ /// `#[deprecated]`, we must put `#[allow(deprecated)]` on any function directly constructing a
130
+ /// `DocumentSymbol`. We define this function to minimize where this happens.
131
+ #[ allow( deprecated) ]
132
+ fn document_symbol_new (
133
+ name : String , kind : SymbolKind , range : Range , selection_range : Range ,
134
+ children : Option < Vec < DocumentSymbol > > ,
135
+ ) -> DocumentSymbol {
139
136
DocumentSymbol {
140
- name : dtorv . name ( ) . to_owned ( ) ,
137
+ name,
141
138
detail : None ,
142
- kind : SymbolKind :: METHOD ,
139
+ kind,
143
140
tags : None ,
144
141
deprecated : None ,
145
- // TODO: get span of entire constructor
146
- range : name_range,
147
- selection_range : name_range,
148
- children : None ,
142
+ range,
143
+ selection_range,
144
+ children,
149
145
}
150
146
}
0 commit comments