mirror of
https://gitee.com/openharmony/third_party_rust_syn
synced 2024-11-27 09:50:41 +00:00
55 lines
1.2 KiB
Rust
55 lines
1.2 KiB
Rust
// Copyright 2018 Syn Developers
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
// option. This file may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
|
|
extern crate syn;
|
|
|
|
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> {}
|
|
}
|
|
});
|
|
|
|
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(),
|
|
}
|
|
}
|
|
});
|