1fad3a1d3Sopenharmony_ci#![allow(clippy::uninlined_format_args)] 2fad3a1d3Sopenharmony_ci 3fad3a1d3Sopenharmony_ci#[macro_use] 4fad3a1d3Sopenharmony_cimod macros; 5fad3a1d3Sopenharmony_ci 6fad3a1d3Sopenharmony_ciuse proc_macro2::{Delimiter, Group, Literal, Punct, Spacing, TokenStream, TokenTree}; 7fad3a1d3Sopenharmony_ciuse syn::Expr; 8fad3a1d3Sopenharmony_ci 9fad3a1d3Sopenharmony_ci#[test] 10fad3a1d3Sopenharmony_cifn test_grouping() { 11fad3a1d3Sopenharmony_ci let tokens: TokenStream = TokenStream::from_iter(vec![ 12fad3a1d3Sopenharmony_ci TokenTree::Literal(Literal::i32_suffixed(1)), 13fad3a1d3Sopenharmony_ci TokenTree::Punct(Punct::new('+', Spacing::Alone)), 14fad3a1d3Sopenharmony_ci TokenTree::Group(Group::new( 15fad3a1d3Sopenharmony_ci Delimiter::None, 16fad3a1d3Sopenharmony_ci TokenStream::from_iter(vec![ 17fad3a1d3Sopenharmony_ci TokenTree::Literal(Literal::i32_suffixed(2)), 18fad3a1d3Sopenharmony_ci TokenTree::Punct(Punct::new('+', Spacing::Alone)), 19fad3a1d3Sopenharmony_ci TokenTree::Literal(Literal::i32_suffixed(3)), 20fad3a1d3Sopenharmony_ci ]), 21fad3a1d3Sopenharmony_ci )), 22fad3a1d3Sopenharmony_ci TokenTree::Punct(Punct::new('*', Spacing::Alone)), 23fad3a1d3Sopenharmony_ci TokenTree::Literal(Literal::i32_suffixed(4)), 24fad3a1d3Sopenharmony_ci ]); 25fad3a1d3Sopenharmony_ci 26fad3a1d3Sopenharmony_ci assert_eq!(tokens.to_string(), "1i32 + 2i32 + 3i32 * 4i32"); 27fad3a1d3Sopenharmony_ci 28fad3a1d3Sopenharmony_ci snapshot!(tokens as Expr, @r###" 29fad3a1d3Sopenharmony_ci Expr::Binary { 30fad3a1d3Sopenharmony_ci left: Expr::Lit { 31fad3a1d3Sopenharmony_ci lit: 1i32, 32fad3a1d3Sopenharmony_ci }, 33fad3a1d3Sopenharmony_ci op: BinOp::Add, 34fad3a1d3Sopenharmony_ci right: Expr::Binary { 35fad3a1d3Sopenharmony_ci left: Expr::Group { 36fad3a1d3Sopenharmony_ci expr: Expr::Binary { 37fad3a1d3Sopenharmony_ci left: Expr::Lit { 38fad3a1d3Sopenharmony_ci lit: 2i32, 39fad3a1d3Sopenharmony_ci }, 40fad3a1d3Sopenharmony_ci op: BinOp::Add, 41fad3a1d3Sopenharmony_ci right: Expr::Lit { 42fad3a1d3Sopenharmony_ci lit: 3i32, 43fad3a1d3Sopenharmony_ci }, 44fad3a1d3Sopenharmony_ci }, 45fad3a1d3Sopenharmony_ci }, 46fad3a1d3Sopenharmony_ci op: BinOp::Mul, 47fad3a1d3Sopenharmony_ci right: Expr::Lit { 48fad3a1d3Sopenharmony_ci lit: 4i32, 49fad3a1d3Sopenharmony_ci }, 50fad3a1d3Sopenharmony_ci }, 51fad3a1d3Sopenharmony_ci } 52fad3a1d3Sopenharmony_ci "###); 53fad3a1d3Sopenharmony_ci} 54