1 macro_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 11 should_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] 19 should_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 26 should_parse!(trailing_plus_type, { 27 type A = Box<Foo>; 28 type A = Box<Foo + 'a>; 29 type A = Box<'a + Foo>; 30 }); 31 32 should_parse!(generic_associated_type_where, { 33 trait Foo { 34 type Item; 35 fn foo<T>(&self, t: T) -> Self::Item<T>; 36 } 37 }); 38 39 should_parse!(match_with_block_expr, { 40 fn main() { 41 match false { 42 _ => {}.a(), 43 } 44 } 45 }); 46