]> git.proxmox.com Git - rustc.git/blame - vendor/syn/tests/test_grouping.rs
New upstream version 1.48.0~beta.8+dfsg1
[rustc.git] / vendor / syn / tests / test_grouping.rs
CommitLineData
e74abb32
XL
1#[macro_use]
2mod macros;
3
4use proc_macro2::{Delimiter, Group, Literal, Punct, Spacing, TokenStream, TokenTree};
5use syn::Expr;
6
7use std::iter::FromIterator;
8
9#[test]
10fn test_grouping() {
11 let tokens: TokenStream = TokenStream::from_iter(vec![
12 TokenTree::Literal(Literal::i32_suffixed(1)),
13 TokenTree::Punct(Punct::new('+', Spacing::Alone)),
14 TokenTree::Group(Group::new(
15 Delimiter::None,
16 TokenStream::from_iter(vec![
17 TokenTree::Literal(Literal::i32_suffixed(2)),
18 TokenTree::Punct(Punct::new('+', Spacing::Alone)),
19 TokenTree::Literal(Literal::i32_suffixed(3)),
20 ]),
21 )),
22 TokenTree::Punct(Punct::new('*', Spacing::Alone)),
23 TokenTree::Literal(Literal::i32_suffixed(4)),
24 ]);
25
1b1a35ee 26 assert_eq!(tokens.to_string(), "1i32 + 2i32 + 3i32 * 4i32");
e74abb32
XL
27
28 snapshot!(tokens as Expr, @r###"
60c5eb7d
XL
29 Expr::Binary {
30 left: Expr::Lit {
31 lit: 1i32,
32 },
33 op: Add,
34 right: Expr::Binary {
35 left: Expr::Group {
36 expr: Expr::Binary {
37 left: Expr::Lit {
38 lit: 2i32,
39 },
40 op: Add,
41 right: Expr::Lit {
42 lit: 3i32,
43 },
44 },
45 },
46 op: Mul,
47 right: Expr::Lit {
48 lit: 4i32,
49 },
50 },
51 }
e74abb32
XL
52 "###);
53}