46 lines
915 B
Rust
46 lines
915 B
Rust
|
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(),
|
||
|
}
|
||
|
}
|
||
|
});
|