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