Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/references.rs')
-rw-r--r--crates/ide/src/references.rs25
1 files changed, 14 insertions, 11 deletions
diff --git a/crates/ide/src/references.rs b/crates/ide/src/references.rs
index e6900888fc..6d73425fcb 100644
--- a/crates/ide/src/references.rs
+++ b/crates/ide/src/references.rs
@@ -305,28 +305,31 @@ fn handle_control_flow_keywords(
sema: &Semantics<'_, RootDatabase>,
FilePosition { file_id, offset }: FilePosition,
) -> Option<ReferenceSearchResult> {
- let file = sema.parse(file_id);
+ let file = sema.parse_guess_edition(file_id);
let token = file.syntax().token_at_offset(offset).find(|t| t.kind().is_keyword())?;
- let refs = match token.kind() {
- T![fn] | T![return] | T![try] => highlight_related::highlight_exit_points(sema, token)?,
- T![async] => highlight_related::highlight_yield_points(sema, token)?,
+ let references = match token.kind() {
+ T![fn] | T![return] | T![try] => highlight_related::highlight_exit_points(sema, token),
+ T![async] => highlight_related::highlight_yield_points(sema, token),
T![loop] | T![while] | T![break] | T![continue] => {
- highlight_related::highlight_break_points(sema, token)?
+ highlight_related::highlight_break_points(sema, token)
}
T![for] if token.parent().and_then(ast::ForExpr::cast).is_some() => {
- highlight_related::highlight_break_points(sema, token)?
+ highlight_related::highlight_break_points(sema, token)
}
_ => return None,
}
.into_iter()
- .map(|HighlightedRange { range, category }| (range, category))
+ .map(|(file_id, ranges)| {
+ let ranges = ranges
+ .into_iter()
+ .map(|HighlightedRange { range, category }| (range, category))
+ .collect();
+ (file_id.into(), ranges)
+ })
.collect();
- Some(ReferenceSearchResult {
- declaration: None,
- references: IntMap::from_iter([(file_id, refs)]),
- })
+ Some(ReferenceSearchResult { declaration: None, references })
}
#[cfg(test)]