Skip to content

Commit 353829f

Browse files
committed
highlight: trait path
1 parent 9ea8d58 commit 353829f

File tree

3 files changed

+10
-13
lines changed

3 files changed

+10
-13
lines changed

crates/ide-assists/src/handlers/qualify_method_call.rs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,10 @@ fn item_for_path_search(db: &dyn HirDatabase, item: ItemInNs) -> Option<ItemInNs
6969
ItemInNs::Types(_) | ItemInNs::Values(_) => match item_as_assoc(db, item) {
7070
Some(assoc_item) => match assoc_item.container(db) {
7171
AssocItemContainer::Trait(trait_) => ItemInNs::from(ModuleDef::from(trait_)),
72-
AssocItemContainer::Impl(impl_) => {
73-
let impled_trait = if matches!(assoc_item, AssocItem::Function(..)) {
74-
impl_.trait_(db)
75-
} else {
76-
None
77-
};
78-
match impled_trait {
79-
None => ItemInNs::from(ModuleDef::from(impl_.self_ty(db).as_adt()?)),
80-
Some(t) => ItemInNs::from(ModuleDef::from(t)),
81-
}
82-
}
72+
AssocItemContainer::Impl(impl_) => match impl_.trait_(db) {
73+
None => ItemInNs::from(ModuleDef::from(impl_.self_ty(db).as_adt()?)),
74+
Some(trait_) => ItemInNs::from(ModuleDef::from(trait_)),
75+
},
8376
},
8477
None => item,
8578
},

crates/ide/src/syntax_highlighting/highlight.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,11 @@ fn highlight_method_call(
510510
if func.is_async(sema.db) {
511511
h |= HlMod::Async;
512512
}
513-
if func.as_assoc_item(sema.db).and_then(|it| it.containing_trait(sema.db)).is_some() {
513+
if func
514+
.as_assoc_item(sema.db)
515+
.and_then(|it| it.containing_trait_or_trait_impl(sema.db))
516+
.is_some()
517+
{
514518
h |= HlMod::Trait;
515519
}
516520

crates/ide/src/syntax_highlighting/test_data/highlight_unsafe.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,6 @@
121121
<span class="keyword">let</span> <span class="struct">Packed</span> <span class="brace">{</span> <span class="field">a</span><span class="colon">:</span> <span class="keyword unsafe">ref</span> <span class="variable declaration reference">_a</span> <span class="brace">}</span> <span class="operator">=</span> <span class="variable">packed</span><span class="semicolon">;</span>
122122

123123
<span class="comment">// unsafe auto ref of packed field</span>
124-
<span class="variable">packed</span><span class="operator">.</span><span class="field">a</span><span class="operator">.</span><span class="function associated reference unsafe">calls_autoref</span><span class="parenthesis">(</span><span class="parenthesis">)</span><span class="semicolon">;</span>
124+
<span class="variable">packed</span><span class="operator">.</span><span class="field">a</span><span class="operator">.</span><span class="function associated reference trait unsafe">calls_autoref</span><span class="parenthesis">(</span><span class="parenthesis">)</span><span class="semicolon">;</span>
125125
<span class="brace">}</span>
126126
<span class="brace">}</span></code></pre>

0 commit comments

Comments
 (0)