blob: df309ad8e54fe040a1ffbb60c4b8d2fceccabc89 [file] [log] [blame]
Michael Layzellbe1e24d2017-06-04 21:15:23 -04001extern crate proc_macro2;
David Tolnay7d8b3312019-03-10 01:26:11 -08002extern crate syn;
Michael Layzellbe1e24d2017-06-04 21:15:23 -04003
David Tolnayc3f98562018-11-02 08:55:05 -07004mod features;
David Tolnayc7a5d3d2017-06-04 12:11:05 -07005
David Tolnay7d8b3312019-03-10 01:26:11 -08006#[macro_use]
7mod macros;
Michael Layzellbe1e24d2017-06-04 21:15:23 -04008
David Tolnay7d8b3312019-03-10 01:26:11 -08009use proc_macro2::{Delimiter, Group, Literal, Punct, Spacing, TokenStream, TokenTree};
10use syn::Expr;
11
12use std::iter::FromIterator;
Michael Layzellbe1e24d2017-06-04 21:15:23 -040013
14#[test]
15fn test_grouping() {
David Tolnay7d8b3312019-03-10 01:26:11 -080016 let tokens: TokenStream = TokenStream::from_iter(vec![
Alex Crichton9a4dca22018-03-28 06:32:19 -070017 TokenTree::Literal(Literal::i32_suffixed(1)),
Alex Crichton9dc5d0e2018-05-17 11:09:21 -070018 TokenTree::Punct(Punct::new('+', Spacing::Alone)),
David Tolnay7d8b3312019-03-10 01:26:11 -080019 TokenTree::Group(Group::new(
David Tolnay51382052017-12-27 13:46:21 -050020 Delimiter::None,
David Tolnay7d8b3312019-03-10 01:26:11 -080021 TokenStream::from_iter(vec![
Alex Crichton9a4dca22018-03-28 06:32:19 -070022 TokenTree::Literal(Literal::i32_suffixed(2)),
Alex Crichton9dc5d0e2018-05-17 11:09:21 -070023 TokenTree::Punct(Punct::new('+', Spacing::Alone)),
Alex Crichton9a4dca22018-03-28 06:32:19 -070024 TokenTree::Literal(Literal::i32_suffixed(3)),
David Tolnay7d8b3312019-03-10 01:26:11 -080025 ]),
David Tolnay51382052017-12-27 13:46:21 -050026 )),
Alex Crichton9dc5d0e2018-05-17 11:09:21 -070027 TokenTree::Punct(Punct::new('*', Spacing::Alone)),
Alex Crichton9a4dca22018-03-28 06:32:19 -070028 TokenTree::Literal(Literal::i32_suffixed(4)),
David Tolnay7d8b3312019-03-10 01:26:11 -080029 ]);
Michael Layzellbe1e24d2017-06-04 21:15:23 -040030
David Tolnay7d8b3312019-03-10 01:26:11 -080031 assert_eq!(tokens.to_string(), "1i32 + 2i32 + 3i32 * 4i32");
Michael Layzellbe1e24d2017-06-04 21:15:23 -040032
David Tolnay7d8b3312019-03-10 01:26:11 -080033 snapshot!(tokens as Expr);
Michael Layzellbe1e24d2017-06-04 21:15:23 -040034}