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