Skip to content

Commit

Permalink
fix: Don't emit empty scip occurrence for builtins
Browse files Browse the repository at this point in the history
  • Loading branch information
darichey committed Feb 6, 2025
1 parent d18dd4d commit e8955a8
Showing 1 changed file with 31 additions and 34 deletions.
65 changes: 31 additions & 34 deletions src/tools/rust-analyzer/crates/rust-analyzer/src/cli/scip.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -202,7 +199,7 @@ impl flags::Scip {
special_fields: Default::default(),
enclosing_range: Vec::new(),
});
});
}

if occurrences.is_empty() {
continue;
Expand Down

0 comments on commit e8955a8

Please sign in to comment.