diff options
| author | Eduard Burtescu <edy.burt@gmail.com> | 2016-08-27 01:13:48 +0300 |
|---|---|---|
| committer | Eduard Burtescu <edy.burt@gmail.com> | 2016-08-27 01:15:07 +0300 |
| commit | 7a8d4822d8eb922f0cd50e92f420b5f1938db64d (patch) | |
| tree | 424af74ecf39f8b6aad5a5abdb831efd6e21a9b7 /src/test/compile-fail | |
| parent | dffd238f8b3195982427ba14bc01d47c6da6aedf (diff) | |
| download | rust-7a8d4822d8eb922f0cd50e92f420b5f1938db64d.tar.gz rust-7a8d4822d8eb922f0cd50e92f420b5f1938db64d.zip | |
rustc: use Vec<Kind> in Substs, where Kind is a &TyS | &Region tagged pointer.
Diffstat (limited to 'src/test/compile-fail')
| -rw-r--r-- | src/test/compile-fail/variance-associated-types.rs | 4 | ||||
| -rw-r--r-- | src/test/compile-fail/variance-object-types.rs | 2 | ||||
| -rw-r--r-- | src/test/compile-fail/variance-region-bounds.rs | 4 | ||||
| -rw-r--r-- | src/test/compile-fail/variance-regions-direct.rs | 14 | ||||
| -rw-r--r-- | src/test/compile-fail/variance-regions-indirect.rs | 10 | ||||
| -rw-r--r-- | src/test/compile-fail/variance-trait-bounds.rs | 18 | ||||
| -rw-r--r-- | src/test/compile-fail/variance-trait-object-bound.rs | 2 | ||||
| -rw-r--r-- | src/test/compile-fail/variance-types-bounds.rs | 20 | ||||
| -rw-r--r-- | src/test/compile-fail/variance-types.rs | 12 |
9 files changed, 43 insertions, 43 deletions
diff --git a/src/test/compile-fail/variance-associated-types.rs b/src/test/compile-fail/variance-associated-types.rs index 5539a26d2a1..7dbfc6ac125 100644 --- a/src/test/compile-fail/variance-associated-types.rs +++ b/src/test/compile-fail/variance-associated-types.rs @@ -20,12 +20,12 @@ trait Trait<'a> { } #[rustc_variance] -struct Foo<'a, T : Trait<'a>> { //~ ERROR ItemVariances(types=[+], regions=[-]) +struct Foo<'a, T : Trait<'a>> { //~ ERROR [-, +] field: (T, &'a ()) } #[rustc_variance] -struct Bar<'a, T : Trait<'a>> { //~ ERROR ItemVariances(types=[o], regions=[o]) +struct Bar<'a, T : Trait<'a>> { //~ ERROR [o, o] field: <T as Trait<'a>>::Type } diff --git a/src/test/compile-fail/variance-object-types.rs b/src/test/compile-fail/variance-object-types.rs index 2f422bfd38c..1f54771e367 100644 --- a/src/test/compile-fail/variance-object-types.rs +++ b/src/test/compile-fail/variance-object-types.rs @@ -18,7 +18,7 @@ use std::cell::Cell; // For better or worse, associated types are invariant, and hence we // get an invariant result for `'a`. #[rustc_variance] -struct Foo<'a> { //~ ERROR regions=[o] +struct Foo<'a> { //~ ERROR [o] x: Box<Fn(i32) -> &'a i32 + 'static> } diff --git a/src/test/compile-fail/variance-region-bounds.rs b/src/test/compile-fail/variance-region-bounds.rs index 99416057b25..41d204a541b 100644 --- a/src/test/compile-fail/variance-region-bounds.rs +++ b/src/test/compile-fail/variance-region-bounds.rs @@ -13,11 +13,11 @@ #![feature(rustc_attrs)] #[rustc_variance] -trait Foo: 'static { //~ ERROR types=[o] +trait Foo: 'static { //~ ERROR [o] } #[rustc_variance] -trait Bar<T> { //~ ERROR types=[o, o] +trait Bar<T> { //~ ERROR [o, o] fn do_it(&self) where T: 'static; } diff --git a/src/test/compile-fail/variance-regions-direct.rs b/src/test/compile-fail/variance-regions-direct.rs index 78591063de8..bf46edcfab8 100644 --- a/src/test/compile-fail/variance-regions-direct.rs +++ b/src/test/compile-fail/variance-regions-direct.rs @@ -16,7 +16,7 @@ // Regions that just appear in normal spots are contravariant: #[rustc_variance] -struct Test2<'a, 'b, 'c> { //~ ERROR regions=[-, -, -] +struct Test2<'a, 'b, 'c> { //~ ERROR [-, -, -] x: &'a isize, y: &'b [isize], c: &'c str @@ -25,7 +25,7 @@ struct Test2<'a, 'b, 'c> { //~ ERROR regions=[-, -, -] // Those same annotations in function arguments become covariant: #[rustc_variance] -struct Test3<'a, 'b, 'c> { //~ ERROR regions=[+, +, +] +struct Test3<'a, 'b, 'c> { //~ ERROR [+, +, +] x: extern "Rust" fn(&'a isize), y: extern "Rust" fn(&'b [isize]), c: extern "Rust" fn(&'c str), @@ -34,7 +34,7 @@ struct Test3<'a, 'b, 'c> { //~ ERROR regions=[+, +, +] // Mutability induces invariance: #[rustc_variance] -struct Test4<'a, 'b:'a> { //~ ERROR regions=[-, o] +struct Test4<'a, 'b:'a> { //~ ERROR [-, o] x: &'a mut &'b isize, } @@ -42,7 +42,7 @@ struct Test4<'a, 'b:'a> { //~ ERROR regions=[-, o] // contravariant context: #[rustc_variance] -struct Test5<'a, 'b:'a> { //~ ERROR regions=[+, o] +struct Test5<'a, 'b:'a> { //~ ERROR [+, o] x: extern "Rust" fn(&'a mut &'b isize), } @@ -52,14 +52,14 @@ struct Test5<'a, 'b:'a> { //~ ERROR regions=[+, o] // argument list occurs in an invariant context. #[rustc_variance] -struct Test6<'a, 'b:'a> { //~ ERROR regions=[-, o] +struct Test6<'a, 'b:'a> { //~ ERROR [-, o] x: &'a mut extern "Rust" fn(&'b isize), } // No uses at all is bivariant: #[rustc_variance] -struct Test7<'a> { //~ ERROR regions=[*] +struct Test7<'a> { //~ ERROR [*] //~^ ERROR parameter `'a` is never used x: isize } @@ -67,7 +67,7 @@ struct Test7<'a> { //~ ERROR regions=[*] // Try enums too. #[rustc_variance] -enum Test8<'a, 'b, 'c:'b> { //~ ERROR regions=[+, -, o] +enum Test8<'a, 'b, 'c:'b> { //~ ERROR [+, -, o] Test8A(extern "Rust" fn(&'a isize)), Test8B(&'b [isize]), Test8C(&'b mut &'c str), diff --git a/src/test/compile-fail/variance-regions-indirect.rs b/src/test/compile-fail/variance-regions-indirect.rs index d8af30da163..e28828f62e5 100644 --- a/src/test/compile-fail/variance-regions-indirect.rs +++ b/src/test/compile-fail/variance-regions-indirect.rs @@ -15,7 +15,7 @@ #![feature(rustc_attrs)] #[rustc_variance] -enum Base<'a, 'b, 'c:'b, 'd> { //~ ERROR regions=[+, -, o, *] +enum Base<'a, 'b, 'c:'b, 'd> { //~ ERROR [+, -, o, *] //~^ ERROR parameter `'d` is never used Test8A(extern "Rust" fn(&'a isize)), Test8B(&'b [isize]), @@ -23,25 +23,25 @@ enum Base<'a, 'b, 'c:'b, 'd> { //~ ERROR regions=[+, -, o, *] } #[rustc_variance] -struct Derived1<'w, 'x:'y, 'y, 'z> { //~ ERROR regions=[*, o, -, +] +struct Derived1<'w, 'x:'y, 'y, 'z> { //~ ERROR [*, o, -, +] //~^ ERROR parameter `'w` is never used f: Base<'z, 'y, 'x, 'w> } #[rustc_variance] // Combine - and + to yield o -struct Derived2<'a, 'b:'a, 'c> { //~ ERROR regions=[o, o, *] +struct Derived2<'a, 'b:'a, 'c> { //~ ERROR [o, o, *] //~^ ERROR parameter `'c` is never used f: Base<'a, 'a, 'b, 'c> } #[rustc_variance] // Combine + and o to yield o (just pay attention to 'a here) -struct Derived3<'a:'b, 'b, 'c> { //~ ERROR regions=[o, -, *] +struct Derived3<'a:'b, 'b, 'c> { //~ ERROR [o, -, *] //~^ ERROR parameter `'c` is never used f: Base<'a, 'b, 'a, 'c> } #[rustc_variance] // Combine + and * to yield + (just pay attention to 'a here) -struct Derived4<'a, 'b, 'c:'b> { //~ ERROR regions=[+, -, o] +struct Derived4<'a, 'b, 'c:'b> { //~ ERROR [+, -, o] f: Base<'a, 'b, 'c, 'a> } diff --git a/src/test/compile-fail/variance-trait-bounds.rs b/src/test/compile-fail/variance-trait-bounds.rs index 150a1aa56fe..4c737a7594d 100644 --- a/src/test/compile-fail/variance-trait-bounds.rs +++ b/src/test/compile-fail/variance-trait-bounds.rs @@ -15,48 +15,48 @@ // influence variance. #[rustc_variance] -trait Getter<T> { //~ ERROR types=[o, o] +trait Getter<T> { //~ ERROR [o, o] fn get(&self) -> T; } #[rustc_variance] -trait Setter<T> { //~ ERROR types=[o, o] +trait Setter<T> { //~ ERROR [o, o] fn get(&self, T); } #[rustc_variance] -struct TestStruct<U,T:Setter<U>> { //~ ERROR types=[+, +] +struct TestStruct<U,T:Setter<U>> { //~ ERROR [+, +] t: T, u: U } #[rustc_variance] -enum TestEnum<U,T:Setter<U>> {//~ ERROR types=[*, +] +enum TestEnum<U,T:Setter<U>> {//~ ERROR [*, +] //~^ ERROR parameter `U` is never used Foo(T) } #[rustc_variance] -trait TestTrait<U,T:Setter<U>> { //~ ERROR types=[o, o, o] +trait TestTrait<U,T:Setter<U>> { //~ ERROR [o, o, o] fn getter(&self, u: U) -> T; } #[rustc_variance] -trait TestTrait2<U> : Getter<U> { //~ ERROR types=[o, o] +trait TestTrait2<U> : Getter<U> { //~ ERROR [o, o] } #[rustc_variance] -trait TestTrait3<U> { //~ ERROR types=[o, o] +trait TestTrait3<U> { //~ ERROR [o, o] fn getter<T:Getter<U>>(&self); } #[rustc_variance] -struct TestContraStruct<U,T:Setter<U>> { //~ ERROR types=[*, +] +struct TestContraStruct<U,T:Setter<U>> { //~ ERROR [*, +] //~^ ERROR parameter `U` is never used t: T } #[rustc_variance] -struct TestBox<U,T:Getter<U>+Setter<U>> { //~ ERROR types=[*, +] +struct TestBox<U,T:Getter<U>+Setter<U>> { //~ ERROR [*, +] //~^ ERROR parameter `U` is never used t: T } diff --git a/src/test/compile-fail/variance-trait-object-bound.rs b/src/test/compile-fail/variance-trait-object-bound.rs index 4244b0e1d8b..b120588ecab 100644 --- a/src/test/compile-fail/variance-trait-object-bound.rs +++ b/src/test/compile-fail/variance-trait-object-bound.rs @@ -21,7 +21,7 @@ use std::mem; trait T { fn foo(&self); } #[rustc_variance] -struct TOption<'a> { //~ ERROR regions=[-] +struct TOption<'a> { //~ ERROR [-] v: Option<Box<T + 'a>>, } diff --git a/src/test/compile-fail/variance-types-bounds.rs b/src/test/compile-fail/variance-types-bounds.rs index c47710d6d37..2df94cc907a 100644 --- a/src/test/compile-fail/variance-types-bounds.rs +++ b/src/test/compile-fail/variance-types-bounds.rs @@ -14,46 +14,46 @@ #![feature(rustc_attrs)] #[rustc_variance] -struct TestImm<A, B> { //~ ERROR types=[+, +] +struct TestImm<A, B> { //~ ERROR [+, +] x: A, y: B, } #[rustc_variance] -struct TestMut<A, B:'static> { //~ ERROR types=[+, o] +struct TestMut<A, B:'static> { //~ ERROR [+, o] x: A, y: &'static mut B, } #[rustc_variance] -struct TestIndirect<A:'static, B:'static> { //~ ERROR types=[+, o] +struct TestIndirect<A:'static, B:'static> { //~ ERROR [+, o] m: TestMut<A, B> } #[rustc_variance] -struct TestIndirect2<A:'static, B:'static> { //~ ERROR types=[o, o] +struct TestIndirect2<A:'static, B:'static> { //~ ERROR [o, o] n: TestMut<A, B>, m: TestMut<B, A> } #[rustc_variance] -trait Getter<A> { //~ ERROR types=[o, o] +trait Getter<A> { //~ ERROR [o, o] fn get(&self) -> A; } #[rustc_variance] -trait Setter<A> { //~ ERROR types=[o, o] +trait Setter<A> { //~ ERROR [o, o] fn set(&mut self, a: A); } #[rustc_variance] -trait GetterSetter<A> { //~ ERROR types=[o, o] +trait GetterSetter<A> { //~ ERROR [o, o] fn get(&self) -> A; fn set(&mut self, a: A); } #[rustc_variance] -trait GetterInTypeBound<A> { //~ ERROR types=[o, o] +trait GetterInTypeBound<A> { //~ ERROR [o, o] // Here, the use of `A` in the method bound *does* affect // variance. Think of it as if the method requested a dictionary // for `T:Getter<A>`. Since this dictionary is an input, it is @@ -63,12 +63,12 @@ trait GetterInTypeBound<A> { //~ ERROR types=[o, o] } #[rustc_variance] -trait SetterInTypeBound<A> { //~ ERROR types=[o, o] +trait SetterInTypeBound<A> { //~ ERROR [o, o] fn do_it<T:Setter<A>>(&self); } #[rustc_variance] -struct TestObject<A, R> { //~ ERROR types=[o, o] +struct TestObject<A, R> { //~ ERROR [o, o] n: Box<Setter<A>+Send>, m: Box<Getter<R>+Send>, } diff --git a/src/test/compile-fail/variance-types.rs b/src/test/compile-fail/variance-types.rs index d5164412358..7667972c9d2 100644 --- a/src/test/compile-fail/variance-types.rs +++ b/src/test/compile-fail/variance-types.rs @@ -17,32 +17,32 @@ use std::cell::Cell; // not considered bivariant. #[rustc_variance] -struct InvariantMut<'a,A:'a,B:'a> { //~ ERROR types=[o, o], regions=[-] +struct InvariantMut<'a,A:'a,B:'a> { //~ ERROR [-, o, o] t: &'a mut (A,B) } #[rustc_variance] -struct InvariantCell<A> { //~ ERROR types=[o] +struct InvariantCell<A> { //~ ERROR [o] t: Cell<A> } #[rustc_variance] -struct InvariantIndirect<A> { //~ ERROR types=[o] +struct InvariantIndirect<A> { //~ ERROR [o] t: InvariantCell<A> } #[rustc_variance] -struct Covariant<A> { //~ ERROR types=[+] +struct Covariant<A> { //~ ERROR [+] t: A, u: fn() -> A } #[rustc_variance] -struct Contravariant<A> { //~ ERROR types=[-] +struct Contravariant<A> { //~ ERROR [-] t: fn(A) } #[rustc_variance] -enum Enum<A,B,C> { //~ ERROR types=[+, -, o] +enum Enum<A,B,C> { //~ ERROR [+, -, o] Foo(Covariant<A>), Bar(Contravariant<B>), Zed(Covariant<C>,Contravariant<C>) |
