1macro_rules! should_parse { 2 ($name:ident, { $($in:tt)* }) => { 3 #[test] 4 fn $name() { 5 // Make sure we can parse the file! 6 syn::parse_file(stringify!($($in)*)).unwrap(); 7 } 8 } 9} 10 11should_parse!(generic_associated_type, { 12 impl Foo { 13 type Item = &'a i32; 14 fn foo<'a>(&'a self) -> Self::Item<'a> {} 15 } 16}); 17 18#[rustfmt::skip] 19should_parse!(const_generics_use, { 20 type X = Foo<5>; 21 type Y = Foo<"foo">; 22 type Z = Foo<X>; 23 type W = Foo<{ X + 10 }>; 24}); 25 26should_parse!(trailing_plus_type, { 27 type A = Box<Foo>; 28 type A = Box<Foo + 'a>; 29 type A = Box<'a + Foo>; 30}); 31 32should_parse!(generic_associated_type_where, { 33 trait Foo { 34 type Item; 35 fn foo<T>(&self, t: T) -> Self::Item<T>; 36 } 37}); 38 39should_parse!(match_with_block_expr, { 40 fn main() { 41 match false { 42 _ => {}.a(), 43 } 44 } 45}); 46