]>
Commit | Line | Data |
---|---|---|
3c0e092e XL |
1 | #![allow(clippy::non_ascii_literal)] |
2 | ||
f035d41b XL |
3 | #[macro_use] |
4 | mod macros; | |
5 | ||
5869c6ff XL |
6 | use proc_macro2::{Delimiter, Group, Ident, Span, TokenStream, TokenTree}; |
7 | use std::iter::FromIterator; | |
f035d41b XL |
8 | use syn::Stmt; |
9 | ||
10 | #[test] | |
11 | fn test_raw_operator() { | |
12 | let stmt = syn::parse_str::<Stmt>("let _ = &raw const x;").unwrap(); | |
13 | ||
14 | snapshot!(stmt, @r###" | |
15 | Local(Local { | |
16 | pat: Pat::Wild, | |
17 | init: Some(Verbatim(`& raw const x`)), | |
18 | }) | |
19 | "###); | |
20 | } | |
21 | ||
22 | #[test] | |
23 | fn test_raw_variable() { | |
24 | let stmt = syn::parse_str::<Stmt>("let _ = &raw;").unwrap(); | |
25 | ||
26 | snapshot!(stmt, @r###" | |
27 | Local(Local { | |
28 | pat: Pat::Wild, | |
29 | init: Some(Expr::Reference { | |
30 | expr: Expr::Path { | |
31 | path: Path { | |
32 | segments: [ | |
33 | PathSegment { | |
34 | ident: "raw", | |
35 | arguments: None, | |
36 | }, | |
37 | ], | |
38 | }, | |
39 | }, | |
40 | }), | |
41 | }) | |
42 | "###); | |
43 | } | |
44 | ||
45 | #[test] | |
46 | fn test_raw_invalid() { | |
47 | assert!(syn::parse_str::<Stmt>("let _ = &raw x;").is_err()); | |
48 | } | |
5869c6ff XL |
49 | |
50 | #[test] | |
51 | fn test_none_group() { | |
52 | // <Ø async fn f() {} Ø> | |
53 | let tokens = TokenStream::from_iter(vec![TokenTree::Group(Group::new( | |
54 | Delimiter::None, | |
55 | TokenStream::from_iter(vec![ | |
56 | TokenTree::Ident(Ident::new("async", Span::call_site())), | |
57 | TokenTree::Ident(Ident::new("fn", Span::call_site())), | |
58 | TokenTree::Ident(Ident::new("f", Span::call_site())), | |
59 | TokenTree::Group(Group::new(Delimiter::Parenthesis, TokenStream::new())), | |
60 | TokenTree::Group(Group::new(Delimiter::Brace, TokenStream::new())), | |
61 | ]), | |
62 | ))]); | |
63 | ||
64 | snapshot!(tokens as Stmt, @r###" | |
65 | Item(Item::Fn { | |
66 | vis: Inherited, | |
67 | sig: Signature { | |
68 | asyncness: Some, | |
69 | ident: "f", | |
70 | generics: Generics, | |
71 | output: Default, | |
72 | }, | |
73 | block: Block, | |
74 | }) | |
75 | "###); | |
76 | } |