2018-08-30 12:18:55 +00:00
|
|
|
// run-pass
|
2018-09-25 21:51:35 +00:00
|
|
|
#![allow(dead_code)]
|
2015-04-18 01:18:46 +00:00
|
|
|
type MyType<'a, T> = &'a T;
|
|
|
|
|
|
|
|
// combine lifetime bounds and type arguments in usual way
|
|
|
|
type TypeA<'a> = MyType<'a, ()>;
|
|
|
|
|
|
|
|
// ensure token `>>` works fine
|
|
|
|
type TypeB = Box<TypeA<'static>>;
|
|
|
|
type TypeB_ = Box<TypeA<'static,>>;
|
|
|
|
|
|
|
|
// trailing comma when combine lifetime bounds and type arguments
|
|
|
|
type TypeC<'a> = MyType<'a, (),>;
|
|
|
|
|
|
|
|
// normal lifetime bounds
|
|
|
|
type TypeD = TypeA<'static>;
|
|
|
|
|
|
|
|
// trailing comma on lifetime bounds
|
|
|
|
type TypeE = TypeA<'static,>;
|
|
|
|
|
2018-08-19 13:30:23 +00:00
|
|
|
// normal type argument
|
2015-04-18 01:18:46 +00:00
|
|
|
type TypeF<T> = Box<T>;
|
|
|
|
|
|
|
|
// type argument with trailing comma
|
|
|
|
type TypeG<T> = Box<T,>;
|
|
|
|
|
2015-05-05 23:49:07 +00:00
|
|
|
// trailing comma on lifetime defs
|
2015-04-18 01:18:46 +00:00
|
|
|
type TypeH<'a,> = &'a ();
|
|
|
|
|
|
|
|
// trailing comma on type argument
|
|
|
|
type TypeI<T,> = T;
|
|
|
|
|
|
|
|
static STATIC: () = ();
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
|
|
|
|
// ensure token `>=` works fine
|
|
|
|
let _: TypeA<'static>= &STATIC;
|
|
|
|
let _: TypeA<'static,>= &STATIC;
|
|
|
|
|
|
|
|
// ensure token `>>=` works fine
|
|
|
|
let _: Box<TypeA<'static>>= Box::new(&STATIC);
|
|
|
|
let _: Box<TypeA<'static,>>= Box::new(&STATIC);
|
|
|
|
}
|