diff options
Diffstat (limited to 'syn/tests/test_should_parse.rs')
-rw-r--r-- | syn/tests/test_should_parse.rs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/syn/tests/test_should_parse.rs b/syn/tests/test_should_parse.rs new file mode 100644 index 0000000..d4f7ac3 --- /dev/null +++ b/syn/tests/test_should_parse.rs @@ -0,0 +1,47 @@ +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<X>; + type W = Foo<{ X + 10 }>; +}); + +should_parse!(trailing_plus_type, { + type A = Box<Foo>; + type A = Box<Foo + 'a>; + type A = Box<'a + Foo>; +}); + +should_parse!(generic_associated_type_where, { + trait Foo { + type Item; + fn foo<T>(&self, t: T) -> Self::Item<T>; + } +}); + +should_parse!(match_with_block_expr, { + fn main() { + match false { + _ => {}.a(), + } + } +}); |