@@ -200,6 +200,10 @@ use nested_filter::NestedFilter;
200
200
/// explicitly, you need to override each method. (And you also need
201
201
/// to monitor future changes to `Visitor` in case a new method with a
202
202
/// new default implementation gets introduced.)
203
+ ///
204
+ /// Every `walk_*` method uses deconstruction to access fields of structs and
205
+ /// enums. This will result in a compile error if a field is added, which makes
206
+ /// it more likely the appropriate visit call will be added for it.
203
207
pub trait Visitor < ' v > : Sized {
204
208
// This type should not be overridden, it exists for convenient usage as `Self::MaybeTyCtxt`.
205
209
type MaybeTyCtxt : HirTyCtxt < ' v > = <Self :: NestedFilter as NestedFilter < ' v > >:: MaybeTyCtxt ;
@@ -1201,7 +1205,6 @@ pub fn walk_trait_item<'v, V: Visitor<'v>>(
1201
1205
visitor : & mut V ,
1202
1206
trait_item : & ' v TraitItem < ' v > ,
1203
1207
) -> V :: Result {
1204
- // N.B., deliberately force a compilation error if/when new fields are added.
1205
1208
let TraitItem { ident, generics, ref defaultness, ref kind, span, owner_id : _ } = * trait_item;
1206
1209
let hir_id = trait_item. hir_id ( ) ;
1207
1210
try_visit ! ( visitor. visit_ident( ident) ) ;
@@ -1240,7 +1243,6 @@ pub fn walk_trait_item_ref<'v, V: Visitor<'v>>(
1240
1243
visitor : & mut V ,
1241
1244
trait_item_ref : & ' v TraitItemRef ,
1242
1245
) -> V :: Result {
1243
- // N.B., deliberately force a compilation error if/when new fields are added.
1244
1246
let TraitItemRef { id, ident, ref kind, span : _ } = * trait_item_ref;
1245
1247
try_visit ! ( visitor. visit_nested_trait_item( id) ) ;
1246
1248
try_visit ! ( visitor. visit_ident( ident) ) ;
@@ -1251,7 +1253,6 @@ pub fn walk_impl_item<'v, V: Visitor<'v>>(
1251
1253
visitor : & mut V ,
1252
1254
impl_item : & ' v ImplItem < ' v > ,
1253
1255
) -> V :: Result {
1254
- // N.B., deliberately force a compilation error if/when new fields are added.
1255
1256
let ImplItem {
1256
1257
owner_id : _,
1257
1258
ident,
@@ -1286,7 +1287,6 @@ pub fn walk_foreign_item_ref<'v, V: Visitor<'v>>(
1286
1287
visitor : & mut V ,
1287
1288
foreign_item_ref : & ' v ForeignItemRef ,
1288
1289
) -> V :: Result {
1289
- // N.B., deliberately force a compilation error if/when new fields are added.
1290
1290
let ForeignItemRef { id, ident, span : _ } = * foreign_item_ref;
1291
1291
try_visit ! ( visitor. visit_nested_foreign_item( id) ) ;
1292
1292
visitor. visit_ident ( ident)
@@ -1296,7 +1296,6 @@ pub fn walk_impl_item_ref<'v, V: Visitor<'v>>(
1296
1296
visitor : & mut V ,
1297
1297
impl_item_ref : & ' v ImplItemRef ,
1298
1298
) -> V :: Result {
1299
- // N.B., deliberately force a compilation error if/when new fields are added.
1300
1299
let ImplItemRef { id, ident, ref kind, span : _, trait_item_def_id : _ } = * impl_item_ref;
1301
1300
try_visit ! ( visitor. visit_nested_impl_item( id) ) ;
1302
1301
try_visit ! ( visitor. visit_ident( ident) ) ;
0 commit comments