]> git.lizzy.rs Git - rust.git/blob - src/test/ui/associated-types/associated-types-subtyping-1.rs
feat(rustdoc): open sidebar menu when links inside it are focused
[rust.git] / src / test / ui / associated-types / associated-types-subtyping-1.rs
1 #![allow(unused_variables)]
2
3 fn make_any<T>() -> T {  loop {} }
4
5 trait Trait<'a> {
6     type Type;
7
8     fn method(&'a self) { }
9 }
10
11 fn method1<'a,'b,T>(x: &'a T, y: &'b T)
12     where T : for<'z> Trait<'z>, 'a : 'b
13 {
14     // Note that &'static T <: &'a T.
15     let a: <T as Trait<'a>>::Type = make_any();
16     let b: <T as Trait<'b>>::Type = make_any();
17     let _c: <T as Trait<'a>>::Type = a;
18 }
19
20 fn method2<'a,'b,T>(x: &'a T, y: &'b T)
21     where T : for<'z> Trait<'z>, 'a : 'b
22 {
23     // Note that &'static T <: &'a T.
24     let a: <T as Trait<'a>>::Type = make_any();
25     let b: <T as Trait<'b>>::Type = make_any();
26     let _c: <T as Trait<'b>>::Type = a; //~ ERROR E0623
27 }
28
29 fn method3<'a,'b,T>(x: &'a T, y: &'b T)
30     where T : for<'z> Trait<'z>, 'a : 'b
31 {
32     // Note that &'static T <: &'a T.
33     let a: <T as Trait<'a>>::Type = make_any();
34     let b: <T as Trait<'b>>::Type = make_any();
35     let _c: <T as Trait<'a>>::Type = b; //~ ERROR E0623
36 }
37
38 fn method4<'a,'b,T>(x: &'a T, y: &'b T)
39     where T : for<'z> Trait<'z>, 'a : 'b
40 {
41     // Note that &'static T <: &'a T.
42     let a: <T as Trait<'a>>::Type = make_any();
43     let b: <T as Trait<'b>>::Type = make_any();
44     let _c: <T as Trait<'b>>::Type = b;
45 }
46
47 fn main() { }