Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/syntax_highlighting/highlight.rs')
-rw-r--r--crates/ide/src/syntax_highlighting/highlight.rs30
1 files changed, 11 insertions, 19 deletions
diff --git a/crates/ide/src/syntax_highlighting/highlight.rs b/crates/ide/src/syntax_highlighting/highlight.rs
index 7ac6775685..5fb87598f4 100644
--- a/crates/ide/src/syntax_highlighting/highlight.rs
+++ b/crates/ide/src/syntax_highlighting/highlight.rs
@@ -3,7 +3,6 @@
use hir::{AsAssocItem, HasVisibility, Semantics};
use ide_db::{
defs::{Definition, IdentClass, NameClass, NameRefClass},
- famous_defs::FamousDefs,
RootDatabase, SymbolKind,
};
use rustc_hash::FxHashMap;
@@ -49,7 +48,7 @@ pub(super) fn token(sema: &Semantics<RootDatabase>, token: SyntaxToken) -> Optio
pub(super) fn name_like(
sema: &Semantics<RootDatabase>,
- krate: Option<hir::Crate>,
+ krate: hir::Crate,
bindings_shadow_count: &mut FxHashMap<hir::Name, u32>,
syntactic_name_ref_highlighting: bool,
name_like: ast::NameLike,
@@ -193,7 +192,7 @@ fn keyword(
fn highlight_name_ref(
sema: &Semantics<RootDatabase>,
- krate: Option<hir::Crate>,
+ krate: hir::Crate,
bindings_shadow_count: &mut FxHashMap<hir::Name, u32>,
binding_hash: &mut Option<u64>,
syntactic_name_ref_highlighting: bool,
@@ -279,7 +278,7 @@ fn highlight_name(
sema: &Semantics<RootDatabase>,
bindings_shadow_count: &mut FxHashMap<hir::Name, u32>,
binding_hash: &mut Option<u64>,
- krate: Option<hir::Crate>,
+ krate: hir::Crate,
name: ast::Name,
) -> Highlight {
let name_kind = NameClass::classify(sema, &name);
@@ -323,11 +322,7 @@ fn calc_binding_hash(name: &hir::Name, shadow_count: u32) -> u64 {
hash((name, shadow_count))
}
-fn highlight_def(
- sema: &Semantics<RootDatabase>,
- krate: Option<hir::Crate>,
- def: Definition,
-) -> Highlight {
+fn highlight_def(sema: &Semantics<RootDatabase>, krate: hir::Crate, def: Definition) -> Highlight {
let db = sema.db;
let mut h = match def {
Definition::Macro(m) => Highlight::new(HlTag::Symbol(m.kind(sema.db).into())),
@@ -472,14 +467,12 @@ fn highlight_def(
Definition::ToolModule(_) => Highlight::new(HlTag::Symbol(SymbolKind::ToolModule)),
};
- let famous_defs = FamousDefs(sema, krate);
let def_crate = def.module(db).map(hir::Module::krate).or_else(|| match def {
Definition::Module(module) => Some(module.krate()),
_ => None,
});
- let is_from_other_crate = def_crate != krate;
- let is_from_builtin_crate =
- def_crate.map_or(false, |def_crate| famous_defs.builtin_crates().any(|it| def_crate == it));
+ let is_from_other_crate = def_crate != Some(krate);
+ let is_from_builtin_crate = def_crate.map_or(false, |def_crate| def_crate.is_builtin(db));
let is_builtin_type = matches!(def, Definition::BuiltinType(_));
let is_public = def.visibility(db) == Some(hir::Visibility::Public);
@@ -498,7 +491,7 @@ fn highlight_def(
fn highlight_method_call_by_name_ref(
sema: &Semantics<RootDatabase>,
- krate: Option<hir::Crate>,
+ krate: hir::Crate,
name_ref: &ast::NameRef,
) -> Option<Highlight> {
let mc = name_ref.syntax().parent().and_then(ast::MethodCallExpr::cast)?;
@@ -507,7 +500,7 @@ fn highlight_method_call_by_name_ref(
fn highlight_method_call(
sema: &Semantics<RootDatabase>,
- krate: Option<hir::Crate>,
+ krate: hir::Crate,
method_call: &ast::MethodCallExpr,
) -> Option<Highlight> {
let func = sema.resolve_method_call(method_call)?;
@@ -525,10 +518,9 @@ fn highlight_method_call(
h |= HlMod::Trait;
}
- let famous_defs = FamousDefs(sema, krate);
let def_crate = func.module(sema.db).krate();
- let is_from_other_crate = Some(def_crate) != krate;
- let is_from_builtin_crate = famous_defs.builtin_crates().any(|it| def_crate == it);
+ let is_from_other_crate = def_crate != krate;
+ let is_from_builtin_crate = def_crate.is_builtin(sema.db);
let is_public = func.visibility(sema.db) == hir::Visibility::Public;
if is_from_other_crate {
@@ -593,7 +585,7 @@ fn highlight_name_by_syntax(name: ast::Name) -> Highlight {
fn highlight_name_ref_by_syntax(
name: ast::NameRef,
sema: &Semantics<RootDatabase>,
- krate: Option<hir::Crate>,
+ krate: hir::Crate,
) -> Highlight {
let default = HlTag::UnresolvedReference;