@@ -325,6 +325,9 @@ pub trait Visitor<'v>: Sized {
325
325
fn visit_pat ( & mut self , p : & ' v Pat < ' v > ) {
326
326
walk_pat ( self , p)
327
327
}
328
+ fn visit_pat_field ( & mut self , f : & ' v PatField < ' v > ) {
329
+ walk_pat_field ( self , f)
330
+ }
328
331
fn visit_array_length ( & mut self , len : & ' v ArrayLen ) {
329
332
walk_array_len ( self , len)
330
333
}
@@ -337,6 +340,9 @@ pub trait Visitor<'v>: Sized {
337
340
fn visit_let_expr ( & mut self , lex : & ' v Let < ' v > ) {
338
341
walk_let_expr ( self , lex)
339
342
}
343
+ fn visit_expr_field ( & mut self , field : & ' v ExprField < ' v > ) {
344
+ walk_expr_field ( self , field)
345
+ }
340
346
fn visit_ty ( & mut self , t : & ' v Ty < ' v > ) {
341
347
walk_ty ( self , t)
342
348
}
@@ -761,11 +767,7 @@ pub fn walk_pat<'v, V: Visitor<'v>>(visitor: &mut V, pattern: &'v Pat<'v>) {
761
767
}
762
768
PatKind :: Struct ( ref qpath, fields, _) => {
763
769
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) ;
769
771
}
770
772
PatKind :: Or ( pats) => walk_list ! ( visitor, visit_pat, pats) ,
771
773
PatKind :: Tuple ( tuple_elements, _) => {
@@ -792,6 +794,12 @@ pub fn walk_pat<'v, V: Visitor<'v>>(visitor: &mut V, pattern: &'v Pat<'v>) {
792
794
}
793
795
}
794
796
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
+
795
803
pub fn walk_foreign_item < ' v , V : Visitor < ' v > > ( visitor : & mut V , foreign_item : & ' v ForeignItem < ' v > ) {
796
804
visitor. visit_id ( foreign_item. hir_id ( ) ) ;
797
805
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>)
1059
1067
walk_list ! ( visitor, visit_ty, let_expr. ty) ;
1060
1068
}
1061
1069
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
+
1062
1076
pub fn walk_expr < ' v , V : Visitor < ' v > > ( visitor : & mut V , expression : & ' v Expr < ' v > ) {
1063
1077
visitor. visit_id ( expression. hir_id ) ;
1064
1078
match expression. kind {
@@ -1073,11 +1087,7 @@ pub fn walk_expr<'v, V: Visitor<'v>>(visitor: &mut V, expression: &'v Expr<'v>)
1073
1087
}
1074
1088
ExprKind :: Struct ( ref qpath, fields, ref optional_base) => {
1075
1089
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) ;
1081
1091
walk_list ! ( visitor, visit_expr, optional_base) ;
1082
1092
}
1083
1093
ExprKind :: Tup ( subexpressions) => {
0 commit comments