Combine Expr and ExprKind
diff --git a/tests/test_derive_input.rs b/tests/test_derive_input.rs
index 34c88bb..e0318ff 100644
--- a/tests/test_derive_input.rs
+++ b/tests/test_derive_input.rs
@@ -271,13 +271,13 @@
data: VariantData::Unit,
discriminant: Some((
Default::default(),
- Expr {
- node: Lit {
+ Expr::Lit(ExprLit {
+ attrs: Vec::new(),
+ lit: Lit {
value: LitKind::Other(Literal::isize(0)),
span: Default::default(),
- }.into(),
- attrs: Vec::new(),
- },
+ },
+ }),
)),
},
Variant {
@@ -286,38 +286,34 @@
data: VariantData::Unit,
discriminant: Some((
Default::default(),
- Expr {
- node: ExprField {
- base: Box::new(Expr {
- node: ExprTuple {
- paren_token: Default::default(),
- args: vec![
- Expr {
- node: ExprKind::Lit(Lit {
- value: LitKind::Other(Literal::integer(0)),
- span: Default::default(),
- }),
- attrs: Vec::new(),
- },
- Expr {
- node: ExprKind::Lit(Lit {
- value: LitKind::Other(Literal::string("data")),
- span: Default::default(),
- }),
- attrs: Vec::new(),
- },
- ].into(),
- }.into(),
- attrs: Vec::new(),
- }),
- dot_token: Default::default(),
- member: Member::Unnamed(Index {
- index: 0,
- span: Default::default(),
- }),
- }.into(),
+ Expr::Field(ExprField {
attrs: Vec::new(),
- },
+ base: Box::new(Expr::Tuple(ExprTuple {
+ attrs: Vec::new(),
+ paren_token: Default::default(),
+ args: vec![
+ Expr::Lit(ExprLit {
+ attrs: Vec::new(),
+ lit: Lit {
+ value: LitKind::Other(Literal::integer(0)),
+ span: Default::default(),
+ },
+ }),
+ Expr::Lit(ExprLit {
+ attrs: Vec::new(),
+ lit: Lit {
+ value: LitKind::Other(Literal::string("data")),
+ span: Default::default(),
+ },
+ }),
+ ].into(),
+ })),
+ dot_token: Default::default(),
+ member: Member::Unnamed(Index {
+ index: 0,
+ span: Default::default(),
+ }),
+ }),
)),
},
].into(),
diff --git a/tests/test_expr.rs b/tests/test_expr.rs
index 5967aa6..4a76669 100644
--- a/tests/test_expr.rs
+++ b/tests/test_expr.rs
@@ -95,7 +95,7 @@
assert_let!(Item::Fn(ItemFn { ref block, .. }) = actual.items[1]; {
assert_let!(Stmt::Local(ref local) = block.stmts[0]; {
assert_let!(Local { init: Some(ref init_expr), .. } = **local; {
- assert_let!(Expr { node: ExprKind::Catch(..), .. } = **init_expr);
+ assert_let!(Expr::Catch(..) = **init_expr);
});
});
@@ -106,21 +106,21 @@
});
assert_let!(Stmt::Expr(ref expr) = block.stmts[3]; {
- assert_let!(Expr { node: ExprKind::While(ExprWhile { ref cond, .. }), .. } = **expr; {
- assert_let!(Expr { node: ExprKind::Path(ExprPath { qself: None, ref path }), .. } = **cond; {
+ assert_let!(Expr::While(ExprWhile { ref cond, .. }) = **expr; {
+ assert_let!(Expr::Path(ExprPath { qself: None, ref path, .. }) = **cond; {
assert_eq!(*path, "catch".into());
});
});
});
assert_let!(Stmt::Semi(ref expr, _) = block.stmts[5]; {
- assert_let!(Expr { node: ExprKind::Assign(ExprAssign { ref left, ref right, .. }), .. } = **expr; {
- assert_let!(Expr { node: ExprKind::Path(ExprPath { qself: None, ref path }), .. } = **left; {
+ assert_let!(Expr::Assign(ExprAssign { ref left, ref right, .. }) = **expr; {
+ assert_let!(Expr::Path(ExprPath { qself: None, ref path, .. }) = **left; {
assert_eq!(*path, "catch".into());
});
- assert_let!(Expr { node: ExprKind::If(ExprIf { ref cond, .. }), .. } = **right; {
- assert_let!(Expr { node: ExprKind::Path(ExprPath { qself: None, ref path }), .. } = **cond; {
+ assert_let!(Expr::If(ExprIf { ref cond, .. }) = **right; {
+ assert_let!(Expr::Path(ExprPath { qself: None, ref path, .. }) = **cond; {
assert_eq!(*path, "catch".into());
});
});
@@ -128,8 +128,8 @@
});
assert_let!(Stmt::Semi(ref expr, _) = block.stmts[7]; {
- assert_let!(Expr { node: ExprKind::Match(ExprMatch { ref expr, .. }), .. } = **expr; {
- assert_let!(Expr { node: ExprKind::Path(ExprPath { qself: None, ref path }), .. } = **expr; {
+ assert_let!(Expr::Match(ExprMatch { ref expr, .. }) = **expr; {
+ assert_let!(Expr::Path(ExprPath { qself: None, ref path, .. }) = **expr; {
assert_eq!(*path, "catch".into());
});
});
diff --git a/tests/test_grouping.rs b/tests/test_grouping.rs
index f532639..b09225e 100644
--- a/tests/test_grouping.rs
+++ b/tests/test_grouping.rs
@@ -3,7 +3,7 @@
#[macro_use]
extern crate syn;
-use syn::{BinOp, Expr, ExprBinary, ExprGroup, ExprKind, Lit, LitKind};
+use syn::{BinOp, Expr, ExprBinary, ExprGroup, ExprLit, Lit, LitKind};
use syn::token::Group;
extern crate proc_macro2;
@@ -18,14 +18,17 @@
}
}
-fn expr<T: Into<ExprKind>>(t: T) -> Expr {
- t.into().into()
+fn expr<T: Into<Expr>>(t: T) -> Expr {
+ t.into()
}
fn lit<T: Into<Literal>>(t: T) -> Expr {
- expr(Lit {
- value: LitKind::Other(t.into()),
- span: Span::default(),
+ Expr::Lit(ExprLit {
+ attrs: Vec::new(),
+ lit: Lit {
+ value: LitKind::Other(t.into()),
+ span: Span::default(),
+ },
})
}
@@ -53,12 +56,16 @@
assert_eq!(
common::parse::syn::<Expr>(raw),
expr(ExprBinary {
+ attrs: Vec::new(),
left: Box::new(lit(Literal::i32(1))),
op: BinOp::Add(<Token![+]>::default()),
right: Box::new(expr(ExprBinary {
+ attrs: Vec::new(),
left: Box::new(expr(ExprGroup {
+ attrs: Vec::new(),
group_token: Group::default(),
expr: Box::new(expr(ExprBinary {
+ attrs: Vec::new(),
left: Box::new(lit(Literal::i32(2))),
op: BinOp::Add(<Token![+]>::default()),
right: Box::new(lit(Literal::i32(3))),
@@ -95,13 +102,16 @@
assert_eq!(
common::parse::syn::<Expr>(raw),
expr(ExprBinary {
+ attrs: Vec::new(),
left: Box::new(expr(ExprBinary {
+ attrs: Vec::new(),
left: Box::new(lit(Literal::i32(1))),
op: BinOp::Add(<Token![+]>::default()),
right: Box::new(lit(Literal::i32(2))),
})),
op: BinOp::Add(<Token![+]>::default()),
right: Box::new(expr(ExprBinary {
+ attrs: Vec::new(),
left: Box::new(lit(Literal::i32(3))),
op: BinOp::Mul(<Token![*]>::default()),
right: Box::new(lit(Literal::i32(4))),
diff --git a/tests/test_precedence.rs b/tests/test_precedence.rs
index d8dc4ed..9071b04 100644
--- a/tests/test_precedence.rs
+++ b/tests/test_precedence.rs
@@ -292,15 +292,15 @@
fn syn_brackets(syn_expr: syn::Expr) -> syn::Expr {
use syn::*;
use syn::fold::*;
+ use std::mem;
- fn paren(folder: &mut BracketsFolder, node: ExprKind) -> ExprKind {
- ExprKind::Paren(ExprParen {
+ fn paren(folder: &mut BracketsFolder, mut node: Expr) -> Expr {
+ let attrs = mem::replace(node.attrs_mut(), Vec::new());
+ Expr::Paren(ExprParen {
+ attrs: attrs,
expr: Box::new(fold_expr(
folder,
- Expr {
- node: node,
- attrs: vec![],
- },
+ node,
)),
paren_token: token::Paren::default(),
})
@@ -309,19 +309,17 @@
struct BracketsFolder;
impl Folder for BracketsFolder {
fn fold_expr(&mut self, expr: Expr) -> Expr {
- let kind = match expr.node {
- ExprKind::Group(_) => unreachable!(),
- ExprKind::Paren(p) => paren(self, p.expr.node),
- ExprKind::If(..)
- | ExprKind::Unsafe(..)
- | ExprKind::Block(..)
- | ExprKind::IfLet(..) => {
+ match expr {
+ Expr::Group(_) => unreachable!(),
+ Expr::Paren(p) => paren(self, *p.expr),
+ Expr::If(..)
+ | Expr::Unsafe(..)
+ | Expr::Block(..)
+ | Expr::IfLet(..) => {
return fold_expr(self, expr);
}
node => paren(self, node),
- };
-
- Expr { node: kind, ..expr }
+ }
}
fn fold_stmt(&mut self, stmt: Stmt) -> Stmt {
@@ -360,13 +358,11 @@
fn fold_expr(&mut self, expr: Expr) -> Expr {
self.0.push(expr);
- Expr {
- node: ExprKind::Tuple(ExprTuple {
- args: Delimited::new(),
- paren_token: token::Paren::default(),
- }),
+ Expr::Tuple(ExprTuple {
attrs: vec![],
- }
+ args: Delimited::new(),
+ paren_token: token::Paren::default(),
+ })
}
}