@@ -500,23 +500,25 @@ fn trait_applicable_items(
500
500
let related_traits = inherent_traits. chain ( env_traits) . collect :: < FxHashSet < _ > > ( ) ;
501
501
502
502
let mut required_assoc_items = FxHashSet :: default ( ) ;
503
- let trait_candidates = items_locator:: items_with_name (
503
+ let trait_candidates: FxHashSet < _ > = items_locator:: items_with_name (
504
504
sema,
505
505
current_crate,
506
506
trait_candidate. assoc_item_name . clone ( ) ,
507
507
AssocSearchMode :: AssocItemsOnly ,
508
508
)
509
509
. filter_map ( |input| item_as_assoc ( db, input) )
510
510
. filter_map ( |assoc| {
511
+ if !trait_assoc_item && matches ! ( assoc, AssocItem :: Const ( _) | AssocItem :: TypeAlias ( _) ) {
512
+ return None ;
513
+ }
514
+
511
515
let assoc_item_trait = assoc. containing_trait ( db) ?;
512
516
if related_traits. contains ( & assoc_item_trait) {
513
- None
514
- } else {
515
- required_assoc_items. insert ( assoc) ;
516
- Some ( assoc_item_trait. into ( ) )
517
+ return None ;
517
518
}
519
+ required_assoc_items. insert ( assoc) ;
520
+ Some ( assoc_item_trait. into ( ) )
518
521
} )
519
- . take ( DEFAULT_QUERY_SEARCH_LIMIT . inner ( ) )
520
522
. collect ( ) ;
521
523
522
524
let mut located_imports = FxHashSet :: default ( ) ;
@@ -531,11 +533,6 @@ fn trait_applicable_items(
531
533
None ,
532
534
|assoc| {
533
535
if required_assoc_items. contains ( & assoc) {
534
- if let AssocItem :: Function ( f) = assoc {
535
- if f. self_param ( db) . is_some ( ) {
536
- return None ;
537
- }
538
- }
539
536
let located_trait = assoc. containing_trait ( db) ?;
540
537
let trait_item = ItemInNs :: from ( ModuleDef :: from ( located_trait) ) ;
541
538
let import_path = trait_import_paths
0 commit comments