Skip to content

Commit 7478a89

Browse files
nvarnerLighghtEeloo
authored andcommitted
minimize #[allow(deprecated)]
1 parent 8e91fe7 commit 7478a89

File tree

1 file changed

+27
-31
lines changed

1 file changed

+27
-31
lines changed

editor/zls/src/document_symbols.rs

+27-31
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::path::PathBuf;
22

3-
use async_lsp::lsp_types::{DocumentSymbol, DocumentSymbolResponse, SymbolKind};
3+
use async_lsp::lsp_types::{DocumentSymbol, DocumentSymbolResponse, Range, SymbolKind};
44
use async_lsp::{ErrorCode, ResponseError};
55
use lsp_textdocument::FullTextDocument;
66
use zydeco_lang::surface::parse::syntax::Declaration;
@@ -92,7 +92,6 @@ fn declaration_to_symbol(
9292
}
9393
}
9494

95-
#[allow(deprecated)]
9695
fn name_to_symbol(
9796
name: &impl NameT, item_span: &Span, document: &FullTextDocument, kind: SymbolKind,
9897
children: Vec<DocumentSymbol>,
@@ -103,48 +102,45 @@ fn name_to_symbol(
103102

104103
let item_range = span_to_range(item_span, document);
105104

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))
116106
}
117107

118-
#[allow(deprecated)]
119108
fn ctorv_to_symbol(ctorv: &CtorV, document: &FullTextDocument) -> DocumentSymbol {
120109
let name_range = span_to_range(ctorv.span(), document);
121110

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+
)
133119
}
134120

135-
#[allow(deprecated)]
136121
fn dtorv_to_symbol(dtorv: &DtorV, document: &FullTextDocument) -> DocumentSymbol {
137122
let name_range = span_to_range(dtorv.span(), document);
138123

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 {
139136
DocumentSymbol {
140-
name: dtorv.name().to_owned(),
137+
name,
141138
detail: None,
142-
kind: SymbolKind::METHOD,
139+
kind,
143140
tags: None,
144141
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,
149145
}
150146
}

0 commit comments

Comments
 (0)