5492: Use symbol tags r=matklad a=kjeremy

Currently the only spec'd tag is "deprecated".

Co-authored-by: kjeremy <kjeremy@gmail.com>
This commit is contained in:
bors[bot] 2020-07-22 19:43:06 +00:00 committed by GitHub
commit 56ff9ef026
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 4 deletions

4
Cargo.lock generated
View File

@ -619,9 +619,9 @@ dependencies = [
[[package]]
name = "lsp-types"
version = "0.77.0"
version = "0.78.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "897c6c8930fbf12b67deffc83729287bb379dd5e5a4bd0ae2d81eff8d6503db6"
checksum = "d2e6cf68e3492cfa2035f0382c1da1b6ab045db0320feca505b86b4f13d66c27"
dependencies = [
"base64",
"bitflags",

View File

@ -20,7 +20,7 @@ env_logger = { version = "0.7.1", default-features = false }
itertools = "0.9.0"
jod-thread = "0.1.0"
log = "0.4.8"
lsp-types = { version = "0.77.0", features = ["proposed"] }
lsp-types = { version = "0.78.0", features = ["proposed"] }
parking_lot = "0.11.0"
pico-args = "0.3.1"
rand = { version = "0.7.3", features = ["small_rng"] }

View File

@ -15,7 +15,7 @@
DocumentHighlight, DocumentSymbol, FoldingRange, FoldingRangeParams, HoverContents, Location,
Position, PrepareRenameResponse, Range, RenameParams, SemanticTokensParams,
SemanticTokensRangeParams, SemanticTokensRangeResult, SemanticTokensResult, SymbolInformation,
TextDocumentIdentifier, Url, WorkspaceEdit,
SymbolTag, TextDocumentIdentifier, Url, WorkspaceEdit,
};
use ra_ide::{
FileId, FilePosition, FileRange, HoverAction, HoverGotoTypeData, NavigationTarget, Query,
@ -253,10 +253,17 @@ pub(crate) fn handle_document_symbol(
let mut parents: Vec<(DocumentSymbol, Option<usize>)> = Vec::new();
for symbol in snap.analysis.file_structure(file_id)? {
let mut tags = Vec::new();
if symbol.deprecated {
tags.push(SymbolTag::Deprecated)
};
#[allow(deprecated)]
let doc_symbol = DocumentSymbol {
name: symbol.label,
detail: symbol.detail,
kind: to_proto::symbol_kind(symbol.kind),
tags: Some(tags),
deprecated: Some(symbol.deprecated),
range: to_proto::range(&line_index, symbol.node_range),
selection_range: to_proto::range(&line_index, symbol.navigation_range),
@ -296,9 +303,19 @@ fn flatten_document_symbol(
url: &Url,
res: &mut Vec<SymbolInformation>,
) {
let mut tags = Vec::new();
#[allow(deprecated)]
match symbol.deprecated {
Some(true) => tags.push(SymbolTag::Deprecated),
_ => {}
}
#[allow(deprecated)]
res.push(SymbolInformation {
name: symbol.name.clone(),
kind: symbol.kind,
tags: Some(tags),
deprecated: symbol.deprecated,
location: Location::new(url.clone(), symbol.range),
container_name,
@ -342,9 +359,12 @@ fn exec_query(snap: &GlobalStateSnapshot, query: Query) -> Result<Vec<SymbolInfo
let mut res = Vec::new();
for nav in snap.analysis.symbol_search(query)? {
let container_name = nav.container_name.as_ref().map(|v| v.to_string());
#[allow(deprecated)]
let info = SymbolInformation {
name: nav.name.to_string(),
kind: to_proto::symbol_kind(nav.kind),
tags: None,
location: to_proto::location_from_nav(snap, nav)?,
container_name,
deprecated: None,