10944: internal: Prefer resolution of inert attributes r=Veykril a=Veykril

Fixes https://github.com/rust-analyzer/rust-analyzer/issues/10942
bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
This commit is contained in:
bors[bot] 2021-12-05 15:28:28 +00:00 committed by GitHub
commit 7d6fcbc0be
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -335,17 +335,16 @@ impl SourceAnalyzer {
} }
} }
} else if is_path_of_attr { } else if is_path_of_attr {
let res = resolve_hir_path_as_macro(db, &self.resolver, &hir_path); let name_ref = path.as_single_name_ref();
return match res { let builtin =
Some(_) => res.map(PathResolution::Macro), name_ref.as_ref().map(ast::NameRef::text).as_deref().and_then(BuiltinAttr::by_name);
None => path.as_single_name_ref().and_then(|name_ref| { if let builtin @ Some(_) = builtin {
if let builtin @ Some(_) = BuiltinAttr::by_name(&name_ref.text()) { return builtin.map(PathResolution::BuiltinAttr);
builtin.map(PathResolution::BuiltinAttr) }
} else if let tool @ Some(_) = ToolModule::by_name(&name_ref.text()) { return match resolve_hir_path_as_macro(db, &self.resolver, &hir_path) {
tool.map(PathResolution::ToolModule) res @ Some(m) if m.is_attr() => res.map(PathResolution::Macro),
} else { _ => name_ref.and_then(|name_ref| {
None ToolModule::by_name(&name_ref.text()).map(PathResolution::ToolModule)
}
}), }),
}; };
} }