extern crate syn; mod features; macro_rules! should_parse { ($name:ident, { $($in:tt)* }) => { #[test] fn $name() { // Make sure we can parse the file! syn::parse_file(stringify!($($in)*)).unwrap(); } } } should_parse!(generic_associated_type, { impl Foo { type Item = &'a i32; fn foo<'a>(&'a self) -> Self::Item<'a> {} } }); #[rustfmt::skip] should_parse!(const_generics_use, { type X = Foo<5>; type Y = Foo<"foo">; type Z = Foo; type W = Foo<{ X + 10 }>; }); should_parse!(trailing_plus_type, { type A = Box; type A = Box; type A = Box<'a + Foo>; }); should_parse!(generic_associated_type_where, { trait Foo { type Item; fn foo(&self, t: T) -> Self::Item; } }); should_parse!(match_with_block_expr, { fn main() { match false { _ => {}.a(), } } });