Skip to content

Commit d75277b

Browse files
committed
Refactor application of library semantic token modifier
1 parent eca4b76 commit d75277b

File tree

1 file changed

+15
-62
lines changed

1 file changed

+15
-62
lines changed

crates/ide/src/syntax_highlighting/highlight.rs

Lines changed: 15 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -283,35 +283,11 @@ pub(super) fn element(
283283
}
284284
}
285285
fn highlight_def(db: &RootDatabase, krate: Option<hir::Crate>, def: Definition) -> Highlight {
286-
match def {
287-
Definition::Macro(m) => {
288-
let mut h = Highlight::new(HlTag::Symbol(SymbolKind::Macro));
289-
290-
if m.module(db).map(hir::Module::krate) != krate {
291-
h |= HlMod::Library;
292-
}
293-
294-
h
295-
}
296-
Definition::Field(field) => {
297-
let mut h = Highlight::new(HlTag::Symbol(SymbolKind::Field));
298-
299-
if Some(field.parent_def(db).module(db).krate()) != krate {
300-
h |= HlMod::Library;
301-
}
302-
303-
h
304-
}
286+
let mut h = match def {
287+
Definition::Macro(_) => Highlight::new(HlTag::Symbol(SymbolKind::Macro)),
288+
Definition::Field(_) => Highlight::new(HlTag::Symbol(SymbolKind::Field)),
305289
Definition::ModuleDef(def) => match def {
306-
hir::ModuleDef::Module(module) => {
307-
let mut h = Highlight::new(HlTag::Symbol(SymbolKind::Module));
308-
309-
if Some(module.krate()) != krate {
310-
h |= HlMod::Library;
311-
}
312-
313-
h
314-
}
290+
hir::ModuleDef::Module(_) => Highlight::new(HlTag::Symbol(SymbolKind::Module)),
315291
hir::ModuleDef::Function(func) => {
316292
let mut h = Highlight::new(HlTag::Symbol(SymbolKind::Function));
317293
if let Some(item) = func.as_assoc_item(db) {
@@ -343,9 +319,6 @@ fn highlight_def(db: &RootDatabase, krate: Option<hir::Crate>, def: Definition)
343319
if func.is_async(db) {
344320
h |= HlMod::Async;
345321
}
346-
if Some(func.module(db).krate()) != krate {
347-
h |= HlMod::Library;
348-
}
349322

350323
h
351324
}
@@ -355,23 +328,10 @@ fn highlight_def(db: &RootDatabase, krate: Option<hir::Crate>, def: Definition)
355328
hir::Adt::Enum(_) => HlTag::Symbol(SymbolKind::Enum),
356329
hir::Adt::Union(_) => HlTag::Symbol(SymbolKind::Union),
357330
};
358-
let mut h = Highlight::new(h);
359-
360-
if Some(adt.module(db).krate()) != krate {
361-
h |= HlMod::Library;
362-
}
363331

364-
h
365-
}
366-
hir::ModuleDef::Variant(variant) => {
367-
let mut h = Highlight::new(HlTag::Symbol(SymbolKind::Variant));
368-
369-
if Some(variant.module(db).krate()) != krate {
370-
h |= HlMod::Library;
371-
}
372-
373-
h
332+
Highlight::new(h)
374333
}
334+
hir::ModuleDef::Variant(_) => Highlight::new(HlTag::Symbol(SymbolKind::Variant)),
375335
hir::ModuleDef::Const(konst) => {
376336
let mut h = Highlight::new(HlTag::Symbol(SymbolKind::Const));
377337

@@ -389,10 +349,6 @@ fn highlight_def(db: &RootDatabase, krate: Option<hir::Crate>, def: Definition)
389349
}
390350
}
391351

392-
if Some(konst.module(db).krate()) != krate {
393-
h |= HlMod::Library;
394-
}
395-
396352
h
397353
}
398354
hir::ModuleDef::Trait(trait_) => {
@@ -402,10 +358,6 @@ fn highlight_def(db: &RootDatabase, krate: Option<hir::Crate>, def: Definition)
402358
h |= HlMod::Unsafe;
403359
}
404360

405-
if Some(trait_.module(db).krate()) != krate {
406-
h |= HlMod::Library;
407-
}
408-
409361
h
410362
}
411363
hir::ModuleDef::TypeAlias(type_) => {
@@ -425,10 +377,6 @@ fn highlight_def(db: &RootDatabase, krate: Option<hir::Crate>, def: Definition)
425377
}
426378
}
427379

428-
if Some(type_.module(db).krate()) != krate {
429-
h |= HlMod::Library;
430-
}
431-
432380
h
433381
}
434382
hir::ModuleDef::BuiltinType(_) => Highlight::new(HlTag::BuiltinType),
@@ -440,10 +388,6 @@ fn highlight_def(db: &RootDatabase, krate: Option<hir::Crate>, def: Definition)
440388
h |= HlMod::Unsafe;
441389
}
442390

443-
if Some(s.module(db).krate()) != krate {
444-
h |= HlMod::Library;
445-
}
446-
447391
h
448392
}
449393
},
@@ -476,7 +420,16 @@ fn highlight_def(db: &RootDatabase, krate: Option<hir::Crate>, def: Definition)
476420
h
477421
}
478422
Definition::Label(_) => Highlight::new(HlTag::Symbol(SymbolKind::Label)),
423+
};
424+
425+
let is_from_other_crate = def.module(db).map(hir::Module::krate) != krate;
426+
let is_builtin_type = matches!(def, Definition::ModuleDef(hir::ModuleDef::BuiltinType(_)));
427+
428+
if is_from_other_crate && !is_builtin_type {
429+
h |= HlMod::Library;
479430
}
431+
432+
h
480433
}
481434

482435
fn highlight_func_by_name_ref(

0 commit comments

Comments
 (0)