diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2025-01-15 09:46:48 +0100 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2025-01-15 09:47:45 +0100 |
| commit | 1ceea5b2758db804a061395278ba6edbeb29f6b3 (patch) | |
| tree | b473e0be03ab4366054f202725465cc136dc6083 | |
| parent | a12c80ded2c84b090db1d362c5a0a07fc3538b7c (diff) | |
| download | rust-1ceea5b2758db804a061395278ba6edbeb29f6b3.tar.gz rust-1ceea5b2758db804a061395278ba6edbeb29f6b3.zip | |
Early exit in search properly
| -rw-r--r-- | src/tools/rust-analyzer/crates/hir/src/semantics.rs | 2 | ||||
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide-db/src/search.rs | 11 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/tools/rust-analyzer/crates/hir/src/semantics.rs b/src/tools/rust-analyzer/crates/hir/src/semantics.rs index a1a596675ba..41ec7f3e7a4 100644 --- a/src/tools/rust-analyzer/crates/hir/src/semantics.rs +++ b/src/tools/rust-analyzer/crates/hir/src/semantics.rs @@ -1756,7 +1756,7 @@ impl<'db> SemanticsImpl<'db> { let file_id = self.lookup(&root_node).unwrap_or_else(|| { panic!( "\n\nFailed to lookup {:?} in this Semantics.\n\ - Make sure to use only query nodes, derived from this instance of Semantics.\n\ + Make sure to only query nodes derived from this instance of Semantics.\n\ root node: {:?}\n\ known nodes: {}\n\n", node, diff --git a/src/tools/rust-analyzer/crates/ide-db/src/search.rs b/src/tools/rust-analyzer/crates/ide-db/src/search.rs index 68199dd8711..a75aba137be 100644 --- a/src/tools/rust-analyzer/crates/ide-db/src/search.rs +++ b/src/tools/rust-analyzer/crates/ide-db/src/search.rs @@ -953,14 +953,19 @@ impl<'a> FindUsages<'a> { // Search for occurrences of the items name for offset in Self::match_indices(&text, finder, search_range) { - tree.token_at_offset(offset).for_each(|token| { - let Some(str_token) = ast::String::cast(token.clone()) else { return }; + let ret = tree.token_at_offset(offset).any(|token| { + let Some(str_token) = ast::String::cast(token.clone()) else { return false }; if let Some((range, Some(nameres))) = sema.check_for_format_args_template(token, offset) { - if self.found_format_args_ref(file_id, range, str_token, nameres, sink) {} + return self + .found_format_args_ref(file_id, range, str_token, nameres, sink); } + false }); + if ret { + return; + } for name in Self::find_nodes(sema, name, &tree, offset).filter_map(ast::NameLike::cast) |
