Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/rust-analyzer/src/cli/scip.rs65
1 files changed, 31 insertions, 34 deletions
diff --git a/crates/rust-analyzer/src/cli/scip.rs b/crates/rust-analyzer/src/cli/scip.rs
index ee7b698975..fe75872105 100644
--- a/crates/rust-analyzer/src/cli/scip.rs
+++ b/crates/rust-analyzer/src/cli/scip.rs
@@ -139,45 +139,42 @@ impl flags::Scip {
let mut occurrences = Vec::new();
let mut symbols = Vec::new();
- tokens.into_iter().for_each(|(text_range, id)| {
+ for (text_range, id) in tokens.into_iter() {
let token = si.tokens.get(id).unwrap();
- let (symbol, enclosing_symbol, is_inherent_impl) =
- if let Some(TokenSymbols { symbol, enclosing_symbol, is_inherent_impl }) =
- symbol_generator.token_symbols(id, token)
- {
- (symbol, enclosing_symbol, is_inherent_impl)
- } else {
- ("".to_owned(), None, false)
- };
+ let Some(TokenSymbols { symbol, enclosing_symbol, is_inherent_impl }) =
+ symbol_generator.token_symbols(id, token)
+ else {
+ // token did not have a moniker, so there is no reasonable occurrence to emit
+ // see ide::moniker::def_to_moniker
+ continue;
+ };
- if !symbol.is_empty() {
- let is_defined_in_this_document = match token.definition {
- Some(def) => def.file_id == file_id,
- _ => false,
- };
- if is_defined_in_this_document {
- if token_ids_emitted.insert(id) {
- // token_ids_emitted does deduplication. This checks that this results
- // in unique emitted symbols, as otherwise references are ambiguous.
- let should_emit = record_error_if_symbol_already_used(
+ let is_defined_in_this_document = match token.definition {
+ Some(def) => def.file_id == file_id,
+ _ => false,
+ };
+ if is_defined_in_this_document {
+ if token_ids_emitted.insert(id) {
+ // token_ids_emitted does deduplication. This checks that this results
+ // in unique emitted symbols, as otherwise references are ambiguous.
+ let should_emit = record_error_if_symbol_already_used(
+ symbol.clone(),
+ is_inherent_impl,
+ relative_path.as_str(),
+ &line_index,
+ text_range,
+ );
+ if should_emit {
+ symbols.push(compute_symbol_info(
symbol.clone(),
- is_inherent_impl,
- relative_path.as_str(),
- &line_index,
- text_range,
- );
- if should_emit {
- symbols.push(compute_symbol_info(
- symbol.clone(),
- enclosing_symbol,
- token,
- ));
- }
+ enclosing_symbol,
+ token,
+ ));
}
- } else {
- token_ids_referenced.insert(id);
}
+ } else {
+ token_ids_referenced.insert(id);
}
// If the range of the def and the range of the token are the same, this must be the definition.
@@ -202,7 +199,7 @@ impl flags::Scip {
special_fields: Default::default(),
enclosing_range: Vec::new(),
});
- });
+ }
if occurrences.is_empty() {
continue;