@@ -487,7 +487,8 @@ pub enum FullDefKind<Body> {
487
487
#[ derive_group( Serializers ) ]
488
488
#[ derive( Clone , Debug , JsonSchema ) ]
489
489
pub struct ImplAssocItem < Body > {
490
- pub name : Symbol ,
490
+ /// This is `None` for RPTITs.
491
+ pub name : Option < Symbol > ,
491
492
/// The definition of the item from the trait declaration. This is `AssocTy`, `AssocFn` or
492
493
/// `AssocConst`.
493
494
pub decl_def : Arc < FullDef < Body > > ,
@@ -583,11 +584,11 @@ impl<Body> FullDef<Body> {
583
584
. collect ( ) ,
584
585
FullDefKind :: InherentImpl { items, .. } | FullDefKind :: Trait { items, .. } => items
585
586
. iter ( )
586
- . map ( |( item, _) | ( item. name . clone ( ) , item. def_id . clone ( ) ) )
587
+ . filter_map ( |( item, _) | Some ( ( item. name . clone ( ) ? , item. def_id . clone ( ) ) ) )
587
588
. collect ( ) ,
588
589
FullDefKind :: TraitImpl { items, .. } => items
589
590
. iter ( )
590
- . map ( |item| ( item. name . clone ( ) , item. def ( ) . def_id . clone ( ) ) )
591
+ . filter_map ( |item| Some ( ( item. name . clone ( ) ? , item. def ( ) . def_id . clone ( ) ) ) )
591
592
. collect ( ) ,
592
593
_ => vec ! [ ] ,
593
594
} ;
@@ -598,7 +599,7 @@ impl<Body> FullDef<Body> {
598
599
children. extend (
599
600
tcx. associated_items ( impl_def_id)
600
601
. in_definition_order ( )
601
- . map ( |assoc| ( assoc. name , assoc. def_id ) . sinto ( s) ) ,
602
+ . filter_map ( |assoc| Some ( ( assoc. opt_name ( ) ? , assoc. def_id ) . sinto ( s) ) ) ,
602
603
) ;
603
604
}
604
605
}
@@ -617,11 +618,17 @@ impl<Body> ImplAssocItem<Body> {
617
618
}
618
619
619
620
/// The kind of item this is.
620
- pub fn assoc_kind ( & self ) -> AssocKind {
621
+ pub fn assoc_kind ( & self ) -> & AssocKind {
621
622
match self . def ( ) . kind ( ) {
622
- FullDefKind :: AssocTy { .. } => AssocKind :: Type ,
623
- FullDefKind :: AssocFn { .. } => AssocKind :: Fn ,
624
- FullDefKind :: AssocConst { .. } => AssocKind :: Const ,
623
+ FullDefKind :: AssocTy {
624
+ associated_item, ..
625
+ }
626
+ | FullDefKind :: AssocFn {
627
+ associated_item, ..
628
+ }
629
+ | FullDefKind :: AssocConst {
630
+ associated_item, ..
631
+ } => & associated_item. kind ,
625
632
_ => unreachable ! ( ) ,
626
633
}
627
634
}
@@ -827,21 +834,23 @@ where
827
834
vec ! [ ]
828
835
} ;
829
836
match decl_assoc. kind {
830
- ty:: AssocKind :: Type => {
837
+ ty:: AssocKind :: Type { .. } => {
831
838
let ty = tcx
832
839
. type_of ( decl_def_id)
833
840
. instantiate ( tcx, trait_ref. args )
834
841
. sinto ( s) ;
835
842
ImplAssocItemValue :: DefaultedTy { ty }
836
843
}
837
- ty:: AssocKind :: Fn => ImplAssocItemValue :: DefaultedFn { } ,
838
- ty:: AssocKind :: Const => ImplAssocItemValue :: DefaultedConst { } ,
844
+ ty:: AssocKind :: Fn { .. } => ImplAssocItemValue :: DefaultedFn { } ,
845
+ ty:: AssocKind :: Const { .. } => {
846
+ ImplAssocItemValue :: DefaultedConst { }
847
+ }
839
848
}
840
849
}
841
850
} ;
842
851
843
852
ImplAssocItem {
844
- name : decl_assoc. name . sinto ( s) ,
853
+ name : decl_assoc. opt_name ( ) . sinto ( s) ,
845
854
value,
846
855
required_impl_exprs,
847
856
decl_def,
0 commit comments