@@ -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