@@ -505,18 +505,16 @@ impl<'a, 'tcx> LinkCollector<'a, 'tcx> {
505
505
module_id : DefId ,
506
506
) -> Result < ( Res , Option < DefId > ) , UnresolvedPath < ' path > > {
507
507
if let Some ( res) = self . resolve_path ( path_str, ns, item_id, module_id) {
508
- match res {
509
- // FIXME(#76467): make this fallthrough to lookup the associated
510
- // item a separate function.
511
- Res :: Def ( DefKind :: AssocFn | DefKind :: AssocConst , _) => assert_eq ! ( ns, ValueNS ) ,
512
- Res :: Def ( DefKind :: AssocTy , _) => assert_eq ! ( ns, TypeNS ) ,
513
- Res :: Def ( DefKind :: Variant , def_id) => {
514
- let enum_def_id = self . cx . tcx . parent ( def_id) . expect ( "variant has no parent" ) ;
515
- return Ok ( ( Res :: Def ( DefKind :: Enum , enum_def_id) , Some ( def_id) ) ) ;
508
+ return Ok ( match res {
509
+ Res :: Def (
510
+ DefKind :: AssocFn | DefKind :: AssocConst | DefKind :: AssocTy | DefKind :: Variant ,
511
+ def_id,
512
+ ) => {
513
+ let parent_def_id = self . cx . tcx . parent ( def_id) . unwrap ( ) ;
514
+ ( Res :: from_def_id ( self . cx . tcx , parent_def_id) , Some ( def_id) )
516
515
}
517
- // Not a trait item; just return what we found.
518
- _ => return Ok ( ( res, None ) ) ,
519
- }
516
+ _ => ( ( res, None ) ) ,
517
+ } ) ;
520
518
} else if ns == MacroNS {
521
519
return Err ( UnresolvedPath {
522
520
item_id,
0 commit comments