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.rs | 30 |
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; |