Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-db/src/search.rs')
-rw-r--r--crates/ide-db/src/search.rs83
1 files changed, 39 insertions, 44 deletions
diff --git a/crates/ide-db/src/search.rs b/crates/ide-db/src/search.rs
index 9cf0bcf919..4dd64229d2 100644
--- a/crates/ide-db/src/search.rs
+++ b/crates/ide-db/src/search.rs
@@ -295,10 +295,10 @@ impl Definition {
}
// def is crate root
- if let &Definition::Module(module) = self {
- if module.is_crate_root() {
- return SearchScope::reverse_dependencies(db, module.krate());
- }
+ if let &Definition::Module(module) = self
+ && module.is_crate_root()
+ {
+ return SearchScope::reverse_dependencies(db, module.krate());
}
let module = match self.module(db) {
@@ -683,51 +683,47 @@ impl<'a> FindUsages<'a> {
}
} else if let Some(alias) =
usage.ancestors().find_map(ast::TypeAlias::cast)
+ && let Some(name) = alias.name()
+ && seen
+ .insert(InFileWrapper::new(file_id, name.syntax().text_range()))
{
- if let Some(name) = alias.name() {
- if seen.insert(InFileWrapper::new(
- file_id,
- name.syntax().text_range(),
- )) {
- if let Some(def) = is_alias(&alias) {
- cov_mark::hit!(container_type_alias);
- insert_type_alias(
- sema.db,
- &mut to_process,
- name.text().as_str(),
- def.into(),
- );
- } else {
- cov_mark::hit!(same_name_different_def_type_alias);
- }
- }
+ if let Some(def) = is_alias(&alias) {
+ cov_mark::hit!(container_type_alias);
+ insert_type_alias(
+ sema.db,
+ &mut to_process,
+ name.text().as_str(),
+ def.into(),
+ );
+ } else {
+ cov_mark::hit!(same_name_different_def_type_alias);
}
}
// We need to account for `Self`. It can only refer to our type inside an impl.
let impl_ = 'impl_: {
for ancestor in usage.ancestors() {
- if let Some(parent) = ancestor.parent() {
- if let Some(parent) = ast::Impl::cast(parent) {
- // Only if the GENERIC_PARAM_LIST is directly under impl, otherwise it may be in the self ty.
- if matches!(
- ancestor.kind(),
- SyntaxKind::ASSOC_ITEM_LIST
- | SyntaxKind::WHERE_CLAUSE
- | SyntaxKind::GENERIC_PARAM_LIST
- ) {
- break;
- }
- if parent
- .trait_()
- .is_some_and(|trait_| *trait_.syntax() == ancestor)
- {
- break;
- }
-
- // Otherwise, found an impl where its self ty may be our type.
- break 'impl_ Some(parent);
+ if let Some(parent) = ancestor.parent()
+ && let Some(parent) = ast::Impl::cast(parent)
+ {
+ // Only if the GENERIC_PARAM_LIST is directly under impl, otherwise it may be in the self ty.
+ if matches!(
+ ancestor.kind(),
+ SyntaxKind::ASSOC_ITEM_LIST
+ | SyntaxKind::WHERE_CLAUSE
+ | SyntaxKind::GENERIC_PARAM_LIST
+ ) {
+ break;
+ }
+ if parent
+ .trait_()
+ .is_some_and(|trait_| *trait_.syntax() == ancestor)
+ {
+ break;
}
+
+ // Otherwise, found an impl where its self ty may be our type.
+ break 'impl_ Some(parent);
}
}
None
@@ -1356,11 +1352,10 @@ impl ReferenceCategory {
if matches!(expr.op_kind()?, ast::BinaryOp::Assignment { .. }) {
// If the variable or field ends on the LHS's end then it's a Write
// (covers fields and locals). FIXME: This is not terribly accurate.
- if let Some(lhs) = expr.lhs() {
- if lhs.syntax().text_range().end() == r.syntax().text_range().end() {
+ if let Some(lhs) = expr.lhs()
+ && lhs.syntax().text_range().end() == r.syntax().text_range().end() {
return Some(ReferenceCategory::WRITE)
}
- }
}
Some(ReferenceCategory::READ)
},