@@ -1124,7 +1124,9 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
11241124 ) ;
11251125 }
11261126 }
1127- visit:: walk_item ( self , item)
1127+ self . with_tilde_const ( Some ( TildeConstReason :: Enum { span : item. span } ) , |this| {
1128+ visit:: walk_item ( this, item)
1129+ } ) ;
11281130 }
11291131 ItemKind :: Trait ( box Trait {
11301132 constness,
@@ -1175,26 +1177,32 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
11751177 }
11761178 visit:: walk_item ( self , item)
11771179 }
1178- ItemKind :: Struct ( ident, generics, vdata) => match vdata {
1179- VariantData :: Struct { fields, .. } => {
1180- self . visit_attrs_vis_ident ( & item. attrs , & item. vis , ident) ;
1181- self . visit_generics ( generics) ;
1182- walk_list ! ( self , visit_field_def, fields) ;
1183- }
1184- _ => visit:: walk_item ( self , item) ,
1185- } ,
1180+ ItemKind :: Struct ( ident, generics, vdata) => {
1181+ self . with_tilde_const ( Some ( TildeConstReason :: Struct { span : item. span } ) , |this| {
1182+ match vdata {
1183+ VariantData :: Struct { fields, .. } => {
1184+ this. visit_attrs_vis_ident ( & item. attrs , & item. vis , ident) ;
1185+ this. visit_generics ( generics) ;
1186+ walk_list ! ( this, visit_field_def, fields) ;
1187+ }
1188+ _ => visit:: walk_item ( this, item) ,
1189+ }
1190+ } )
1191+ }
11861192 ItemKind :: Union ( ident, generics, vdata) => {
11871193 if vdata. fields ( ) . is_empty ( ) {
11881194 self . dcx ( ) . emit_err ( errors:: FieldlessUnion { span : item. span } ) ;
11891195 }
1190- match vdata {
1191- VariantData :: Struct { fields, .. } => {
1192- self . visit_attrs_vis_ident ( & item. attrs , & item. vis , ident) ;
1193- self . visit_generics ( generics) ;
1194- walk_list ! ( self , visit_field_def, fields) ;
1196+ self . with_tilde_const ( Some ( TildeConstReason :: Union { span : item. span } ) , |this| {
1197+ match vdata {
1198+ VariantData :: Struct { fields, .. } => {
1199+ this. visit_attrs_vis_ident ( & item. attrs , & item. vis , ident) ;
1200+ this. visit_generics ( generics) ;
1201+ walk_list ! ( this, visit_field_def, fields) ;
1202+ }
1203+ _ => visit:: walk_item ( this, item) ,
11951204 }
1196- _ => visit:: walk_item ( self , item) ,
1197- }
1205+ } ) ;
11981206 }
11991207 ItemKind :: Const ( box ConstItem { defaultness, expr, .. } ) => {
12001208 self . check_defaultness ( item. span , * defaultness) ;
@@ -1623,6 +1631,13 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
16231631 _ => self . with_in_trait_impl ( None , |this| visit:: walk_assoc_item ( this, item, ctxt) ) ,
16241632 }
16251633 }
1634+
1635+ fn visit_anon_const ( & mut self , anon_const : & ' a AnonConst ) {
1636+ self . with_tilde_const (
1637+ Some ( TildeConstReason :: AnonConst { span : anon_const. value . span } ) ,
1638+ |this| visit:: walk_anon_const ( this, anon_const) ,
1639+ )
1640+ }
16261641}
16271642
16281643/// When encountering an equality constraint in a `where` clause, emit an error. If the code seems
0 commit comments