6
6
// Regions that just appear in normal spots are contravariant:
7
7
8
8
#[ rustc_variance]
9
- struct Test2 < ' a , ' b , ' c > { //~ ERROR [-, -, - ]
9
+ struct Test2 < ' a , ' b , ' c > { //~ ERROR [+, +, + ]
10
10
x : & ' a isize ,
11
11
y : & ' b [ isize ] ,
12
12
c : & ' c str
@@ -15,7 +15,7 @@ struct Test2<'a, 'b, 'c> { //~ ERROR [-, -, -]
15
15
// Those same annotations in function arguments become covariant:
16
16
17
17
#[ rustc_variance]
18
- struct Test3 < ' a , ' b , ' c > { //~ ERROR [+, +, + ]
18
+ struct Test3 < ' a , ' b , ' c > { //~ ERROR [-, -, - ]
19
19
x : extern "Rust" fn ( & ' a isize ) ,
20
20
y : extern "Rust" fn ( & ' b [ isize ] ) ,
21
21
c : extern "Rust" fn ( & ' c str ) ,
@@ -24,15 +24,15 @@ struct Test3<'a, 'b, 'c> { //~ ERROR [+, +, +]
24
24
// Mutability induces invariance:
25
25
26
26
#[ rustc_variance]
27
- struct Test4 < ' a , ' b : ' a > { //~ ERROR [- , o]
27
+ struct Test4 < ' a , ' b : ' a > { //~ ERROR [+ , o]
28
28
x : & ' a mut & ' b isize ,
29
29
}
30
30
31
31
// Mutability induces invariance, even when in a
32
32
// contravariant context:
33
33
34
34
#[ rustc_variance]
35
- struct Test5 < ' a , ' b : ' a > { //~ ERROR [+ , o]
35
+ struct Test5 < ' a , ' b : ' a > { //~ ERROR [- , o]
36
36
x : extern "Rust" fn ( & ' a mut & ' b isize ) ,
37
37
}
38
38
@@ -42,7 +42,7 @@ struct Test5<'a, 'b:'a> { //~ ERROR [+, o]
42
42
// argument list occurs in an invariant context.
43
43
44
44
#[ rustc_variance]
45
- struct Test6 < ' a , ' b : ' a > { //~ ERROR [- , o]
45
+ struct Test6 < ' a , ' b : ' a > { //~ ERROR [+ , o]
46
46
x : & ' a mut extern "Rust" fn ( & ' b isize ) ,
47
47
}
48
48
@@ -56,7 +56,7 @@ struct Test7<'a> { //~ ERROR [*]
56
56
// Try enums too.
57
57
58
58
#[ rustc_variance]
59
- enum Test8 < ' a , ' b , ' c : ' b > { //~ ERROR [+, - , o]
59
+ enum Test8 < ' a , ' b , ' c : ' b > { //~ ERROR [-, + , o]
60
60
Test8A ( extern "Rust" fn ( & ' a isize ) ) ,
61
61
Test8B ( & ' b [ isize ] ) ,
62
62
Test8C ( & ' b mut & ' c str ) ,
0 commit comments