diff --git a/crates/ide-assists/src/handlers/qualify_method_call.rs b/crates/ide-assists/src/handlers/qualify_method_call.rs index 71d3e0b212f8..61cb2f047927 100644 --- a/crates/ide-assists/src/handlers/qualify_method_call.rs +++ b/crates/ide-assists/src/handlers/qualify_method_call.rs @@ -69,17 +69,10 @@ fn item_for_path_search(db: &dyn HirDatabase, item: ItemInNs) -> Option match item_as_assoc(db, item) { Some(assoc_item) => match assoc_item.container(db) { AssocItemContainer::Trait(trait_) => ItemInNs::from(ModuleDef::from(trait_)), - AssocItemContainer::Impl(impl_) => { - let impled_trait = if matches!(assoc_item, AssocItem::Function(..)) { - impl_.trait_(db) - } else { - None - }; - match impled_trait { - None => ItemInNs::from(ModuleDef::from(impl_.self_ty(db).as_adt()?)), - Some(t) => ItemInNs::from(ModuleDef::from(t)), - } - } + AssocItemContainer::Impl(impl_) => match impl_.trait_(db) { + None => ItemInNs::from(ModuleDef::from(impl_.self_ty(db).as_adt()?)), + Some(trait_) => ItemInNs::from(ModuleDef::from(trait_)), + }, }, None => item, }, diff --git a/crates/ide/src/syntax_highlighting/highlight.rs b/crates/ide/src/syntax_highlighting/highlight.rs index 4c5bdfd967ca..121ddbc24b69 100644 --- a/crates/ide/src/syntax_highlighting/highlight.rs +++ b/crates/ide/src/syntax_highlighting/highlight.rs @@ -510,7 +510,11 @@ fn highlight_method_call( if func.is_async(sema.db) { h |= HlMod::Async; } - if func.as_assoc_item(sema.db).and_then(|it| it.containing_trait(sema.db)).is_some() { + if func + .as_assoc_item(sema.db) + .and_then(|it| it.containing_trait_or_trait_impl(sema.db)) + .is_some() + { h |= HlMod::Trait; } diff --git a/crates/ide/src/syntax_highlighting/test_data/highlight_unsafe.html b/crates/ide/src/syntax_highlighting/test_data/highlight_unsafe.html index 885aef16681d..0716bae7513b 100644 --- a/crates/ide/src/syntax_highlighting/test_data/highlight_unsafe.html +++ b/crates/ide/src/syntax_highlighting/test_data/highlight_unsafe.html @@ -121,6 +121,6 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd let Packed { a: ref _a } = packed; // unsafe auto ref of packed field - packed.a.calls_autoref(); + packed.a.calls_autoref(); } } \ No newline at end of file