File: test_should_parse.rs

package info (click to toggle)
rustc-web 1.78.0%2Bdfsg1-2~deb11u3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,245,360 kB
  • sloc: xml: 147,985; javascript: 18,022; sh: 11,083; python: 10,265; ansic: 6,172; cpp: 5,023; asm: 4,390; makefile: 4,269
file content (45 lines) | stat: -rw-r--r-- 915 bytes parent folder | download | duplicates (92)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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(),
        }
    }
});