8
8
// option. This file may not be copied, modified, or distributed
9
9
// except according to those terms.
10
10
11
- // ignore-compare-mode-nll
12
-
13
11
#![ allow( unused_variables) ]
14
12
13
+ fn make_any < T > ( ) -> T { loop { } }
14
+
15
15
trait Trait < ' a > {
16
16
type Type ;
17
17
@@ -22,35 +22,35 @@ fn method1<'a,'b,T>(x: &'a T, y: &'b T)
22
22
where T : for < ' z > Trait < ' z > , ' a : ' b
23
23
{
24
24
// Note that &'static T <: &'a T.
25
- let a: <T as Trait < ' a > >:: Type = loop { } ;
26
- let b: <T as Trait < ' b > >:: Type = loop { } ;
25
+ let a: <T as Trait < ' a > >:: Type = make_any ( ) ;
26
+ let b: <T as Trait < ' b > >:: Type = make_any ( ) ;
27
27
let _c: <T as Trait < ' a > >:: Type = a;
28
28
}
29
29
30
30
fn method2 < ' a , ' b , T > ( x : & ' a T , y : & ' b T )
31
31
where T : for < ' z > Trait < ' z > , ' a : ' b
32
32
{
33
33
// Note that &'static T <: &'a T.
34
- let a: <T as Trait < ' a > >:: Type = loop { } ;
35
- let b: <T as Trait < ' b > >:: Type = loop { } ;
34
+ let a: <T as Trait < ' a > >:: Type = make_any ( ) ;
35
+ let b: <T as Trait < ' b > >:: Type = make_any ( ) ;
36
36
let _c: <T as Trait < ' b > >:: Type = a; //~ ERROR E0623
37
37
}
38
38
39
39
fn method3 < ' a , ' b , T > ( x : & ' a T , y : & ' b T )
40
40
where T : for < ' z > Trait < ' z > , ' a : ' b
41
41
{
42
42
// Note that &'static T <: &'a T.
43
- let a: <T as Trait < ' a > >:: Type = loop { } ;
44
- let b: <T as Trait < ' b > >:: Type = loop { } ;
43
+ let a: <T as Trait < ' a > >:: Type = make_any ( ) ;
44
+ let b: <T as Trait < ' b > >:: Type = make_any ( ) ;
45
45
let _c: <T as Trait < ' a > >:: Type = b; //~ ERROR E0623
46
46
}
47
47
48
48
fn method4 < ' a , ' b , T > ( x : & ' a T , y : & ' b T )
49
49
where T : for < ' z > Trait < ' z > , ' a : ' b
50
50
{
51
51
// Note that &'static T <: &'a T.
52
- let a: <T as Trait < ' a > >:: Type = loop { } ;
53
- let b: <T as Trait < ' b > >:: Type = loop { } ;
52
+ let a: <T as Trait < ' a > >:: Type = make_any ( ) ;
53
+ let b: <T as Trait < ' b > >:: Type = make_any ( ) ;
54
54
let _c: <T as Trait < ' b > >:: Type = b;
55
55
}
56
56
0 commit comments