@@ -325,6 +325,9 @@ pub trait Visitor<'v>: Sized {
325325 fn visit_pat ( & mut self , p : & ' v Pat < ' v > ) {
326326 walk_pat ( self , p)
327327 }
328+ fn visit_pat_field ( & mut self , f : & ' v PatField < ' v > ) {
329+ walk_pat_field ( self , f)
330+ }
328331 fn visit_array_length ( & mut self , len : & ' v ArrayLen ) {
329332 walk_array_len ( self , len)
330333 }
@@ -337,6 +340,9 @@ pub trait Visitor<'v>: Sized {
337340 fn visit_let_expr ( & mut self , lex : & ' v Let < ' v > ) {
338341 walk_let_expr ( self , lex)
339342 }
343+ fn visit_expr_field ( & mut self , field : & ' v ExprField < ' v > ) {
344+ walk_expr_field ( self , field)
345+ }
340346 fn visit_ty ( & mut self , t : & ' v Ty < ' v > ) {
341347 walk_ty ( self , t)
342348 }
@@ -761,11 +767,7 @@ pub fn walk_pat<'v, V: Visitor<'v>>(visitor: &mut V, pattern: &'v Pat<'v>) {
761767 }
762768 PatKind :: Struct ( ref qpath, fields, _) => {
763769 visitor. visit_qpath ( qpath, pattern. hir_id , pattern. span ) ;
764- for field in fields {
765- visitor. visit_id ( field. hir_id ) ;
766- visitor. visit_ident ( field. ident ) ;
767- visitor. visit_pat ( & field. pat )
768- }
770+ walk_list ! ( visitor, visit_pat_field, fields) ;
769771 }
770772 PatKind :: Or ( pats) => walk_list ! ( visitor, visit_pat, pats) ,
771773 PatKind :: Tuple ( tuple_elements, _) => {
@@ -792,6 +794,12 @@ pub fn walk_pat<'v, V: Visitor<'v>>(visitor: &mut V, pattern: &'v Pat<'v>) {
792794 }
793795}
794796
797+ pub fn walk_pat_field < ' v , V : Visitor < ' v > > ( visitor : & mut V , field : & ' v PatField < ' v > ) {
798+ visitor. visit_id ( field. hir_id ) ;
799+ visitor. visit_ident ( field. ident ) ;
800+ visitor. visit_pat ( & field. pat )
801+ }
802+
795803pub fn walk_foreign_item < ' v , V : Visitor < ' v > > ( visitor : & mut V , foreign_item : & ' v ForeignItem < ' v > ) {
796804 visitor. visit_id ( foreign_item. hir_id ( ) ) ;
797805 visitor. visit_ident ( foreign_item. ident ) ;
@@ -1059,6 +1067,12 @@ pub fn walk_let_expr<'v, V: Visitor<'v>>(visitor: &mut V, let_expr: &'v Let<'v>)
10591067 walk_list ! ( visitor, visit_ty, let_expr. ty) ;
10601068}
10611069
1070+ pub fn walk_expr_field < ' v , V : Visitor < ' v > > ( visitor : & mut V , field : & ' v ExprField < ' v > ) {
1071+ visitor. visit_id ( field. hir_id ) ;
1072+ visitor. visit_ident ( field. ident ) ;
1073+ visitor. visit_expr ( & field. expr )
1074+ }
1075+
10621076pub fn walk_expr < ' v , V : Visitor < ' v > > ( visitor : & mut V , expression : & ' v Expr < ' v > ) {
10631077 visitor. visit_id ( expression. hir_id ) ;
10641078 match expression. kind {
@@ -1073,11 +1087,7 @@ pub fn walk_expr<'v, V: Visitor<'v>>(visitor: &mut V, expression: &'v Expr<'v>)
10731087 }
10741088 ExprKind :: Struct ( ref qpath, fields, ref optional_base) => {
10751089 visitor. visit_qpath ( qpath, expression. hir_id , expression. span ) ;
1076- for field in fields {
1077- visitor. visit_id ( field. hir_id ) ;
1078- visitor. visit_ident ( field. ident ) ;
1079- visitor. visit_expr ( & field. expr )
1080- }
1090+ walk_list ! ( visitor, visit_expr_field, fields) ;
10811091 walk_list ! ( visitor, visit_expr, optional_base) ;
10821092 }
10831093 ExprKind :: Tup ( subexpressions) => {
0 commit comments