aboutsummaryrefslogtreecommitdiff
path: root/crates/ide/src/syntax_highlighting.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ide/src/syntax_highlighting.rs')
-rw-r--r--crates/ide/src/syntax_highlighting.rs40
1 files changed, 15 insertions, 25 deletions
diff --git a/crates/ide/src/syntax_highlighting.rs b/crates/ide/src/syntax_highlighting.rs
index db8aaed48..dd8cfe42d 100644
--- a/crates/ide/src/syntax_highlighting.rs
+++ b/crates/ide/src/syntax_highlighting.rs
@@ -484,9 +484,9 @@ fn highlight_element(
484 match name_kind { 484 match name_kind {
485 Some(NameClass::ExternCrate(_)) => HighlightTag::Module.into(), 485 Some(NameClass::ExternCrate(_)) => HighlightTag::Module.into(),
486 Some(NameClass::Definition(def)) => { 486 Some(NameClass::Definition(def)) => {
487 highlight_def(sema, db, def, None) | HighlightModifier::Definition 487 highlight_def(db, def) | HighlightModifier::Definition
488 } 488 }
489 Some(NameClass::ConstReference(def)) => highlight_def(sema, db, def, None), 489 Some(NameClass::ConstReference(def)) => highlight_def(db, def),
490 Some(NameClass::FieldShorthand { field, .. }) => { 490 Some(NameClass::FieldShorthand { field, .. }) => {
491 let mut h = HighlightTag::Field.into(); 491 let mut h = HighlightTag::Field.into();
492 if let Definition::Field(field) = field { 492 if let Definition::Field(field) = field {
@@ -520,7 +520,7 @@ fn highlight_element(
520 } 520 }
521 }; 521 };
522 522
523 let mut h = highlight_def(sema, db, def, Some(name_ref.clone())); 523 let mut h = highlight_def(db, def);
524 524
525 if let Some(parent) = name_ref.syntax().parent() { 525 if let Some(parent) = name_ref.syntax().parent() {
526 if matches!(parent.kind(), FIELD_EXPR | RECORD_PAT_FIELD) { 526 if matches!(parent.kind(), FIELD_EXPR | RECORD_PAT_FIELD) {
@@ -736,34 +736,24 @@ fn highlight_method_call(
736 Some(h) 736 Some(h)
737} 737}
738 738
739fn highlight_def( 739fn highlight_def(db: &RootDatabase, def: Definition) -> Highlight {
740 sema: &Semantics<RootDatabase>,
741 db: &RootDatabase,
742 def: Definition,
743 name_ref: Option<ast::NameRef>,
744) -> Highlight {
745 match def { 740 match def {
746 Definition::Macro(_) => HighlightTag::Macro, 741 Definition::Macro(_) => HighlightTag::Macro,
747 Definition::Field(_) => HighlightTag::Field, 742 Definition::Field(_) => HighlightTag::Field,
748 Definition::ModuleDef(def) => match def { 743 Definition::ModuleDef(def) => match def {
749 hir::ModuleDef::Module(_) => HighlightTag::Module, 744 hir::ModuleDef::Module(_) => HighlightTag::Module,
750 hir::ModuleDef::Function(func) => { 745 hir::ModuleDef::Function(func) => {
751 return name_ref 746 let mut h = HighlightTag::Function.into();
752 .and_then(|name_ref| highlight_func_by_name_ref(sema, &name_ref)) 747 if func.is_unsafe(db) {
753 .unwrap_or_else(|| { 748 h |= HighlightModifier::Unsafe;
754 let mut h = HighlightTag::Function.into(); 749 }
755 if func.is_unsafe(db) { 750 if let Some(self_param) = func.self_param(db) {
756 h |= HighlightModifier::Unsafe; 751 match self_param.access(db) {
757 } 752 hir::Access::Exclusive => h |= HighlightModifier::Mutable,
758 753 hir::Access::Shared | hir::Access::Owned => (),
759 match func.self_param(db) { 754 }
760 None => h, 755 }
761 Some(self_param) => match self_param.access(db) { 756 return h;
762 hir::Access::Exclusive => h | HighlightModifier::Mutable,
763 hir::Access::Shared | hir::Access::Owned => h,
764 },
765 }
766 });
767 } 757 }
768 hir::ModuleDef::Adt(hir::Adt::Struct(_)) => HighlightTag::Struct, 758 hir::ModuleDef::Adt(hir::Adt::Struct(_)) => HighlightTag::Struct,
769 hir::ModuleDef::Adt(hir::Adt::Enum(_)) => HighlightTag::Enum, 759 hir::ModuleDef::Adt(hir::Adt::Enum(_)) => HighlightTag::Enum,