2019-07-26 16:54:25 -05:00
|
|
|
// run-pass
|
|
|
|
|
2018-09-14 05:20:28 -05:00
|
|
|
#![allow(type_alias_bounds)]
|
|
|
|
#![allow(dead_code)]
|
2014-12-24 01:05:30 -06:00
|
|
|
// Test syntax checks for `?Sized` syntax.
|
2014-04-02 19:38:45 -05:00
|
|
|
|
2015-03-31 18:58:01 -05:00
|
|
|
use std::marker::PhantomData;
|
2015-02-12 09:29:52 -06:00
|
|
|
|
2015-03-31 18:58:01 -05:00
|
|
|
trait T1 { }
|
|
|
|
pub trait T2 { }
|
|
|
|
trait T3<X: T1> : T2 { }
|
|
|
|
trait T4<X: ?Sized> { }
|
|
|
|
trait T5<X: ?Sized, Y> { }
|
|
|
|
trait T6<Y, X: ?Sized> { }
|
|
|
|
trait T7<X: ?Sized, Y: ?Sized> { }
|
|
|
|
trait T8<X: ?Sized+T2> { }
|
|
|
|
trait T9<X: T2 + ?Sized> { }
|
2015-02-12 09:29:52 -06:00
|
|
|
struct S1<X: ?Sized>(PhantomData<X>);
|
|
|
|
enum E<X: ?Sized> { E1(PhantomData<X>) }
|
2014-12-24 01:05:30 -06:00
|
|
|
impl <X: ?Sized> T1 for S1<X> {}
|
|
|
|
fn f<X: ?Sized>() {}
|
|
|
|
type TT<T: ?Sized> = T;
|
2014-04-02 19:38:45 -05:00
|
|
|
|
|
|
|
pub fn main() {
|
|
|
|
}
|