1 #![allow(clippy::uninlined_format_args)]
6 use proc_macro2
::{Delimiter, Group, TokenStream, TokenTree}
;
8 use syn
::parse
::Parser
;
9 use syn
::{Item, Pat, Stmt}
;
13 match Pat
::parse_single
.parse2(quote
!(self)).unwrap() {
15 value
=> panic
!("expected PatIdent, got {:?}", value
),
21 match Pat
::parse_single
.parse2(quote
!(self::CONST
)).unwrap() {
23 value
=> panic
!("expected PatPath, got {:?}", value
),
28 fn test_leading_vert() {
29 // https://github.com/rust-lang/rust/blob/1.43.0/src/test/ui/or-patterns/remove-leading-vert.rs
31 syn
::parse_str
::<Item
>("fn f() {}").unwrap();
32 syn
::parse_str
::<Item
>("fn fun1(| A: E) {}").unwrap_err();
33 syn
::parse_str
::<Item
>("fn fun2(|| A: E) {}").unwrap_err();
35 syn
::parse_str
::<Stmt
>("let | () = ();").unwrap_err();
36 syn
::parse_str
::<Stmt
>("let (| A): E;").unwrap();
37 syn
::parse_str
::<Stmt
>("let (|| A): (E);").unwrap_err();
38 syn
::parse_str
::<Stmt
>("let (| A,): (E,);").unwrap();
39 syn
::parse_str
::<Stmt
>("let [| A]: [E; 1];").unwrap();
40 syn
::parse_str
::<Stmt
>("let [|| A]: [E; 1];").unwrap_err();
41 syn
::parse_str
::<Stmt
>("let TS(| A): TS;").unwrap();
42 syn
::parse_str
::<Stmt
>("let TS(|| A): TS;").unwrap_err();
43 syn
::parse_str
::<Stmt
>("let NS { f: | A }: NS;").unwrap();
44 syn
::parse_str
::<Stmt
>("let NS { f: || A }: NS;").unwrap_err();
49 let group
= Group
::new(Delimiter
::None
, quote
!(Some(_
)));
50 let tokens
= TokenStream
::from_iter(vec
![TokenTree
::Group(group
)]);
51 let pat
= Pat
::parse_single
.parse2(tokens
).unwrap();
71 Pat
::parse_single
.parse_str("..").unwrap();
72 Pat
::parse_single
.parse_str("..hi").unwrap();
73 Pat
::parse_single
.parse_str("lo..").unwrap();
74 Pat
::parse_single
.parse_str("lo..hi").unwrap();
76 Pat
::parse_single
.parse_str("..=").unwrap_err();
77 Pat
::parse_single
.parse_str("..=hi").unwrap();
78 Pat
::parse_single
.parse_str("lo..=").unwrap_err();
79 Pat
::parse_single
.parse_str("lo..=hi").unwrap();
81 Pat
::parse_single
.parse_str("...").unwrap_err();
82 Pat
::parse_single
.parse_str("...hi").unwrap_err();
83 Pat
::parse_single
.parse_str("lo...").unwrap_err();
84 Pat
::parse_single
.parse_str("lo...hi").unwrap();
86 Pat
::parse_single
.parse_str("[lo..]").unwrap_err();
87 Pat
::parse_single
.parse_str("[..=hi]").unwrap_err();
88 Pat
::parse_single
.parse_str("[(lo..)]").unwrap();
89 Pat
::parse_single
.parse_str("[(..=hi)]").unwrap();
90 Pat
::parse_single
.parse_str("[lo..=hi]").unwrap();
92 Pat
::parse_single
.parse_str("[_, lo.., _]").unwrap_err();
93 Pat
::parse_single
.parse_str("[_, ..=hi, _]").unwrap_err();
94 Pat
::parse_single
.parse_str("[_, (lo..), _]").unwrap();
95 Pat
::parse_single
.parse_str("[_, (..=hi), _]").unwrap();
96 Pat
::parse_single
.parse_str("[_, lo..=hi, _]").unwrap();