Combine Expr and ExprKind
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index 3c7cefc..cdc1a47 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -130,10 +130,12 @@
fn fold_expr_index(&mut self, i: ExprIndex) -> ExprIndex { fold_expr_index(self, i) }
-fn fold_expr_kind(&mut self, i: ExprKind) -> ExprKind { fold_expr_kind(self, i) }
+fn fold_expr_lit(&mut self, i: ExprLit) -> ExprLit { fold_expr_lit(self, i) }
# [ cfg ( feature = "full" ) ]
fn fold_expr_loop(&mut self, i: ExprLoop) -> ExprLoop { fold_expr_loop(self, i) }
# [ cfg ( feature = "full" ) ]
+fn fold_expr_macro(&mut self, i: ExprMacro) -> ExprMacro { fold_expr_macro(self, i) }
+# [ cfg ( feature = "full" ) ]
fn fold_expr_match(&mut self, i: ExprMatch) -> ExprMatch { fold_expr_match(self, i) }
# [ cfg ( feature = "full" ) ]
fn fold_expr_method_call(&mut self, i: ExprMethodCall) -> ExprMethodCall { fold_expr_method_call(self, i) }
@@ -793,182 +795,7 @@
}
pub fn fold_expr<V: Folder + ?Sized>(_visitor: &mut V, _i: Expr) -> Expr {
- Expr {
- attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
- node: _visitor.fold_expr_kind(_i . node),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_addr_of<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprAddrOf) -> ExprAddrOf {
- ExprAddrOf {
- and_token: Token ! [ & ](tokens_helper(_visitor, &(_i . and_token).0)),
- mutbl: _visitor.fold_mutability(_i . mutbl),
- expr: Box::new(_visitor.fold_expr(* _i . expr)),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_array<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprArray) -> ExprArray {
- ExprArray {
- bracket_token: Bracket(tokens_helper(_visitor, &(_i . bracket_token).0)),
- exprs: FoldHelper::lift(_i . exprs, |it| { _visitor.fold_expr(it) }),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_assign<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprAssign) -> ExprAssign {
- ExprAssign {
- left: Box::new(_visitor.fold_expr(* _i . left)),
- eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
- right: Box::new(_visitor.fold_expr(* _i . right)),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_assign_op<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprAssignOp) -> ExprAssignOp {
- ExprAssignOp {
- left: Box::new(_visitor.fold_expr(* _i . left)),
- op: _visitor.fold_bin_op(_i . op),
- right: Box::new(_visitor.fold_expr(* _i . right)),
- }
-}
-
-pub fn fold_expr_binary<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprBinary) -> ExprBinary {
- ExprBinary {
- left: Box::new(_visitor.fold_expr(* _i . left)),
- op: _visitor.fold_bin_op(_i . op),
- right: Box::new(_visitor.fold_expr(* _i . right)),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_block<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprBlock) -> ExprBlock {
- ExprBlock {
- block: _visitor.fold_block(_i . block),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_box<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprBox) -> ExprBox {
- ExprBox {
- box_token: Token ! [ box ](tokens_helper(_visitor, &(_i . box_token).0)),
- expr: Box::new(_visitor.fold_expr(* _i . expr)),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_break<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprBreak) -> ExprBreak {
- ExprBreak {
- break_token: Token ! [ break ](tokens_helper(_visitor, &(_i . break_token).0)),
- label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
- expr: (_i . expr).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
- }
-}
-
-pub fn fold_expr_call<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprCall) -> ExprCall {
- ExprCall {
- func: Box::new(_visitor.fold_expr(* _i . func)),
- paren_token: Paren(tokens_helper(_visitor, &(_i . paren_token).0)),
- args: FoldHelper::lift(_i . args, |it| { _visitor.fold_expr(it) }),
- }
-}
-
-pub fn fold_expr_cast<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprCast) -> ExprCast {
- ExprCast {
- expr: Box::new(_visitor.fold_expr(* _i . expr)),
- as_token: Token ! [ as ](tokens_helper(_visitor, &(_i . as_token).0)),
- ty: Box::new(_visitor.fold_type(* _i . ty)),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_catch<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprCatch) -> ExprCatch {
- ExprCatch {
- do_token: Token ! [ do ](tokens_helper(_visitor, &(_i . do_token).0)),
- catch_token: Token ! [ catch ](tokens_helper(_visitor, &(_i . catch_token).0)),
- block: _visitor.fold_block(_i . block),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_closure<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprClosure) -> ExprClosure {
- ExprClosure {
- capture: _visitor.fold_capture_by(_i . capture),
- or1_token: Token ! [ | ](tokens_helper(_visitor, &(_i . or1_token).0)),
- inputs: FoldHelper::lift(_i . inputs, |it| { _visitor.fold_fn_arg(it) }),
- or2_token: Token ! [ | ](tokens_helper(_visitor, &(_i . or2_token).0)),
- output: _visitor.fold_return_type(_i . output),
- body: Box::new(_visitor.fold_expr(* _i . body)),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_continue<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprContinue) -> ExprContinue {
- ExprContinue {
- continue_token: Token ! [ continue ](tokens_helper(_visitor, &(_i . continue_token).0)),
- label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_field<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprField) -> ExprField {
- ExprField {
- base: Box::new(_visitor.fold_expr(* _i . base)),
- dot_token: Token ! [ . ](tokens_helper(_visitor, &(_i . dot_token).0)),
- member: _visitor.fold_member(_i . member),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_for_loop<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprForLoop) -> ExprForLoop {
- ExprForLoop {
- label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
- colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
- for_token: Token ! [ for ](tokens_helper(_visitor, &(_i . for_token).0)),
- pat: Box::new(_visitor.fold_pat(* _i . pat)),
- in_token: Token ! [ in ](tokens_helper(_visitor, &(_i . in_token).0)),
- expr: Box::new(_visitor.fold_expr(* _i . expr)),
- body: _visitor.fold_block(_i . body),
- }
-}
-
-pub fn fold_expr_group<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprGroup) -> ExprGroup {
- ExprGroup {
- group_token: Group(tokens_helper(_visitor, &(_i . group_token).0)),
- expr: Box::new(_visitor.fold_expr(* _i . expr)),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_if<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprIf) -> ExprIf {
- ExprIf {
- if_token: Token ! [ if ](tokens_helper(_visitor, &(_i . if_token).0)),
- cond: Box::new(_visitor.fold_expr(* _i . cond)),
- if_true: _visitor.fold_block(_i . if_true),
- else_token: (_i . else_token).map(|it| { Token ! [ else ](tokens_helper(_visitor, &(it).0)) }),
- if_false: (_i . if_false).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_if_let<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprIfLet) -> ExprIfLet {
- ExprIfLet {
- if_token: Token ! [ if ](tokens_helper(_visitor, &(_i . if_token).0)),
- let_token: Token ! [ let ](tokens_helper(_visitor, &(_i . let_token).0)),
- pat: Box::new(_visitor.fold_pat(* _i . pat)),
- eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
- expr: Box::new(_visitor.fold_expr(* _i . expr)),
- if_true: _visitor.fold_block(_i . if_true),
- else_token: (_i . else_token).map(|it| { Token ! [ else ](tokens_helper(_visitor, &(it).0)) }),
- if_false: (_i . if_false).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
- }
-}
-# [ cfg ( feature = "full" ) ]
-pub fn fold_expr_in_place<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprInPlace) -> ExprInPlace {
- ExprInPlace {
- place: Box::new(_visitor.fold_expr(* _i . place)),
- kind: _visitor.fold_in_place_kind(_i . kind),
- value: Box::new(_visitor.fold_expr(* _i . value)),
- }
-}
-
-pub fn fold_expr_index<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprIndex) -> ExprIndex {
- ExprIndex {
- expr: Box::new(_visitor.fold_expr(* _i . expr)),
- bracket_token: Bracket(tokens_helper(_visitor, &(_i . bracket_token).0)),
- index: Box::new(_visitor.fold_expr(* _i . index)),
- }
-}
-
-pub fn fold_expr_kind<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprKind) -> ExprKind {
- use ::ExprKind::*;
+ use ::Expr::*;
match _i {
Box(_binding_0, ) => {
Box (
@@ -1012,7 +839,7 @@
}
Lit(_binding_0, ) => {
Lit (
- _visitor.fold_lit(_binding_0),
+ _visitor.fold_expr_lit(_binding_0),
)
}
Cast(_binding_0, ) => {
@@ -1127,7 +954,7 @@
}
Macro(_binding_0, ) => {
Macro (
- _visitor.fold_macro(_binding_0),
+ full!(_visitor.fold_expr_macro(_binding_0)),
)
}
Struct(_binding_0, ) => {
@@ -1168,8 +995,204 @@
}
}
# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_addr_of<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprAddrOf) -> ExprAddrOf {
+ ExprAddrOf {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ and_token: Token ! [ & ](tokens_helper(_visitor, &(_i . and_token).0)),
+ mutbl: _visitor.fold_mutability(_i . mutbl),
+ expr: Box::new(_visitor.fold_expr(* _i . expr)),
+ }
+}
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_array<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprArray) -> ExprArray {
+ ExprArray {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ bracket_token: Bracket(tokens_helper(_visitor, &(_i . bracket_token).0)),
+ exprs: FoldHelper::lift(_i . exprs, |it| { _visitor.fold_expr(it) }),
+ }
+}
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_assign<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprAssign) -> ExprAssign {
+ ExprAssign {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ left: Box::new(_visitor.fold_expr(* _i . left)),
+ eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
+ right: Box::new(_visitor.fold_expr(* _i . right)),
+ }
+}
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_assign_op<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprAssignOp) -> ExprAssignOp {
+ ExprAssignOp {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ left: Box::new(_visitor.fold_expr(* _i . left)),
+ op: _visitor.fold_bin_op(_i . op),
+ right: Box::new(_visitor.fold_expr(* _i . right)),
+ }
+}
+
+pub fn fold_expr_binary<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprBinary) -> ExprBinary {
+ ExprBinary {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ left: Box::new(_visitor.fold_expr(* _i . left)),
+ op: _visitor.fold_bin_op(_i . op),
+ right: Box::new(_visitor.fold_expr(* _i . right)),
+ }
+}
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_block<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprBlock) -> ExprBlock {
+ ExprBlock {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ block: _visitor.fold_block(_i . block),
+ }
+}
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_box<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprBox) -> ExprBox {
+ ExprBox {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ box_token: Token ! [ box ](tokens_helper(_visitor, &(_i . box_token).0)),
+ expr: Box::new(_visitor.fold_expr(* _i . expr)),
+ }
+}
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_break<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprBreak) -> ExprBreak {
+ ExprBreak {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ break_token: Token ! [ break ](tokens_helper(_visitor, &(_i . break_token).0)),
+ label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
+ expr: (_i . expr).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
+ }
+}
+
+pub fn fold_expr_call<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprCall) -> ExprCall {
+ ExprCall {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ func: Box::new(_visitor.fold_expr(* _i . func)),
+ paren_token: Paren(tokens_helper(_visitor, &(_i . paren_token).0)),
+ args: FoldHelper::lift(_i . args, |it| { _visitor.fold_expr(it) }),
+ }
+}
+
+pub fn fold_expr_cast<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprCast) -> ExprCast {
+ ExprCast {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ expr: Box::new(_visitor.fold_expr(* _i . expr)),
+ as_token: Token ! [ as ](tokens_helper(_visitor, &(_i . as_token).0)),
+ ty: Box::new(_visitor.fold_type(* _i . ty)),
+ }
+}
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_catch<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprCatch) -> ExprCatch {
+ ExprCatch {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ do_token: Token ! [ do ](tokens_helper(_visitor, &(_i . do_token).0)),
+ catch_token: Token ! [ catch ](tokens_helper(_visitor, &(_i . catch_token).0)),
+ block: _visitor.fold_block(_i . block),
+ }
+}
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_closure<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprClosure) -> ExprClosure {
+ ExprClosure {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ capture: _visitor.fold_capture_by(_i . capture),
+ or1_token: Token ! [ | ](tokens_helper(_visitor, &(_i . or1_token).0)),
+ inputs: FoldHelper::lift(_i . inputs, |it| { _visitor.fold_fn_arg(it) }),
+ or2_token: Token ! [ | ](tokens_helper(_visitor, &(_i . or2_token).0)),
+ output: _visitor.fold_return_type(_i . output),
+ body: Box::new(_visitor.fold_expr(* _i . body)),
+ }
+}
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_continue<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprContinue) -> ExprContinue {
+ ExprContinue {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ continue_token: Token ! [ continue ](tokens_helper(_visitor, &(_i . continue_token).0)),
+ label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
+ }
+}
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_field<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprField) -> ExprField {
+ ExprField {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ base: Box::new(_visitor.fold_expr(* _i . base)),
+ dot_token: Token ! [ . ](tokens_helper(_visitor, &(_i . dot_token).0)),
+ member: _visitor.fold_member(_i . member),
+ }
+}
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_for_loop<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprForLoop) -> ExprForLoop {
+ ExprForLoop {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
+ colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
+ for_token: Token ! [ for ](tokens_helper(_visitor, &(_i . for_token).0)),
+ pat: Box::new(_visitor.fold_pat(* _i . pat)),
+ in_token: Token ! [ in ](tokens_helper(_visitor, &(_i . in_token).0)),
+ expr: Box::new(_visitor.fold_expr(* _i . expr)),
+ body: _visitor.fold_block(_i . body),
+ }
+}
+
+pub fn fold_expr_group<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprGroup) -> ExprGroup {
+ ExprGroup {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ group_token: Group(tokens_helper(_visitor, &(_i . group_token).0)),
+ expr: Box::new(_visitor.fold_expr(* _i . expr)),
+ }
+}
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_if<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprIf) -> ExprIf {
+ ExprIf {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ if_token: Token ! [ if ](tokens_helper(_visitor, &(_i . if_token).0)),
+ cond: Box::new(_visitor.fold_expr(* _i . cond)),
+ if_true: _visitor.fold_block(_i . if_true),
+ else_token: (_i . else_token).map(|it| { Token ! [ else ](tokens_helper(_visitor, &(it).0)) }),
+ if_false: (_i . if_false).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
+ }
+}
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_if_let<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprIfLet) -> ExprIfLet {
+ ExprIfLet {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ if_token: Token ! [ if ](tokens_helper(_visitor, &(_i . if_token).0)),
+ let_token: Token ! [ let ](tokens_helper(_visitor, &(_i . let_token).0)),
+ pat: Box::new(_visitor.fold_pat(* _i . pat)),
+ eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
+ expr: Box::new(_visitor.fold_expr(* _i . expr)),
+ if_true: _visitor.fold_block(_i . if_true),
+ else_token: (_i . else_token).map(|it| { Token ! [ else ](tokens_helper(_visitor, &(it).0)) }),
+ if_false: (_i . if_false).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
+ }
+}
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_in_place<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprInPlace) -> ExprInPlace {
+ ExprInPlace {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ place: Box::new(_visitor.fold_expr(* _i . place)),
+ kind: _visitor.fold_in_place_kind(_i . kind),
+ value: Box::new(_visitor.fold_expr(* _i . value)),
+ }
+}
+
+pub fn fold_expr_index<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprIndex) -> ExprIndex {
+ ExprIndex {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ expr: Box::new(_visitor.fold_expr(* _i . expr)),
+ bracket_token: Bracket(tokens_helper(_visitor, &(_i . bracket_token).0)),
+ index: Box::new(_visitor.fold_expr(* _i . index)),
+ }
+}
+
+pub fn fold_expr_lit<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprLit) -> ExprLit {
+ ExprLit {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ lit: _visitor.fold_lit(_i . lit),
+ }
+}
+# [ cfg ( feature = "full" ) ]
pub fn fold_expr_loop<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprLoop) -> ExprLoop {
ExprLoop {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
loop_token: Token ! [ loop ](tokens_helper(_visitor, &(_i . loop_token).0)),
@@ -1177,8 +1200,16 @@
}
}
# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_macro<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprMacro) -> ExprMacro {
+ ExprMacro {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+ mac: _visitor.fold_macro(_i . mac),
+ }
+}
+# [ cfg ( feature = "full" ) ]
pub fn fold_expr_match<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprMatch) -> ExprMatch {
ExprMatch {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
match_token: Token ! [ match ](tokens_helper(_visitor, &(_i . match_token).0)),
expr: Box::new(_visitor.fold_expr(* _i . expr)),
brace_token: Brace(tokens_helper(_visitor, &(_i . brace_token).0)),
@@ -1188,6 +1219,7 @@
# [ cfg ( feature = "full" ) ]
pub fn fold_expr_method_call<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprMethodCall) -> ExprMethodCall {
ExprMethodCall {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
expr: Box::new(_visitor.fold_expr(* _i . expr)),
dot_token: Token ! [ . ](tokens_helper(_visitor, &(_i . dot_token).0)),
method: _visitor.fold_ident(_i . method),
@@ -1202,6 +1234,7 @@
pub fn fold_expr_paren<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprParen) -> ExprParen {
ExprParen {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
paren_token: Paren(tokens_helper(_visitor, &(_i . paren_token).0)),
expr: Box::new(_visitor.fold_expr(* _i . expr)),
}
@@ -1209,6 +1242,7 @@
pub fn fold_expr_path<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprPath) -> ExprPath {
ExprPath {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
qself: (_i . qself).map(|it| { _visitor.fold_qself(it) }),
path: _visitor.fold_path(_i . path),
}
@@ -1216,6 +1250,7 @@
# [ cfg ( feature = "full" ) ]
pub fn fold_expr_range<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprRange) -> ExprRange {
ExprRange {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
from: (_i . from).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
limits: _visitor.fold_range_limits(_i . limits),
to: (_i . to).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
@@ -1224,6 +1259,7 @@
# [ cfg ( feature = "full" ) ]
pub fn fold_expr_repeat<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprRepeat) -> ExprRepeat {
ExprRepeat {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
bracket_token: Bracket(tokens_helper(_visitor, &(_i . bracket_token).0)),
expr: Box::new(_visitor.fold_expr(* _i . expr)),
semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
@@ -1233,6 +1269,7 @@
# [ cfg ( feature = "full" ) ]
pub fn fold_expr_ret<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprRet) -> ExprRet {
ExprRet {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
return_token: Token ! [ return ](tokens_helper(_visitor, &(_i . return_token).0)),
expr: (_i . expr).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
}
@@ -1240,6 +1277,7 @@
# [ cfg ( feature = "full" ) ]
pub fn fold_expr_struct<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprStruct) -> ExprStruct {
ExprStruct {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
path: _visitor.fold_path(_i . path),
brace_token: Brace(tokens_helper(_visitor, &(_i . brace_token).0)),
fields: FoldHelper::lift(_i . fields, |it| { _visitor.fold_field_value(it) }),
@@ -1250,6 +1288,7 @@
# [ cfg ( feature = "full" ) ]
pub fn fold_expr_try<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprTry) -> ExprTry {
ExprTry {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
expr: Box::new(_visitor.fold_expr(* _i . expr)),
question_token: Token ! [ ? ](tokens_helper(_visitor, &(_i . question_token).0)),
}
@@ -1257,6 +1296,7 @@
# [ cfg ( feature = "full" ) ]
pub fn fold_expr_tuple<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprTuple) -> ExprTuple {
ExprTuple {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
paren_token: Paren(tokens_helper(_visitor, &(_i . paren_token).0)),
args: FoldHelper::lift(_i . args, |it| { _visitor.fold_expr(it) }),
}
@@ -1264,6 +1304,7 @@
pub fn fold_expr_type<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprType) -> ExprType {
ExprType {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
expr: Box::new(_visitor.fold_expr(* _i . expr)),
colon_token: Token ! [ : ](tokens_helper(_visitor, &(_i . colon_token).0)),
ty: Box::new(_visitor.fold_type(* _i . ty)),
@@ -1272,6 +1313,7 @@
pub fn fold_expr_unary<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprUnary) -> ExprUnary {
ExprUnary {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
op: _visitor.fold_un_op(_i . op),
expr: Box::new(_visitor.fold_expr(* _i . expr)),
}
@@ -1279,6 +1321,7 @@
# [ cfg ( feature = "full" ) ]
pub fn fold_expr_unsafe<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprUnsafe) -> ExprUnsafe {
ExprUnsafe {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
unsafe_token: Token ! [ unsafe ](tokens_helper(_visitor, &(_i . unsafe_token).0)),
block: _visitor.fold_block(_i . block),
}
@@ -1286,6 +1329,7 @@
# [ cfg ( feature = "full" ) ]
pub fn fold_expr_while<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprWhile) -> ExprWhile {
ExprWhile {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
while_token: Token ! [ while ](tokens_helper(_visitor, &(_i . while_token).0)),
@@ -1296,6 +1340,7 @@
# [ cfg ( feature = "full" ) ]
pub fn fold_expr_while_let<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprWhileLet) -> ExprWhileLet {
ExprWhileLet {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
while_token: Token ! [ while ](tokens_helper(_visitor, &(_i . while_token).0)),
@@ -1309,6 +1354,7 @@
# [ cfg ( feature = "full" ) ]
pub fn fold_expr_yield<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprYield) -> ExprYield {
ExprYield {
+ attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
yield_token: Token ! [ yield ](tokens_helper(_visitor, &(_i . yield_token).0)),
expr: (_i . expr).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
}