From a4b7ed7a42c716ab9f05e351f003d589124fd55d Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:18:58 +0200 Subject: Adding upstream version 1.68.2+dfsg1. Signed-off-by: Daniel Baumann --- src/test/ui/variance/variance-associated-consts.rs | 17 -- .../ui/variance/variance-associated-consts.stderr | 8 - src/test/ui/variance/variance-associated-types.rs | 22 --- .../ui/variance/variance-associated-types.stderr | 14 -- src/test/ui/variance/variance-associated-types2.rs | 17 -- .../ui/variance/variance-associated-types2.stderr | 10 - .../ui/variance/variance-btree-invariant-types.rs | 80 -------- .../variance/variance-btree-invariant-types.stderr | 202 --------------------- src/test/ui/variance/variance-cell-is-invariant.rs | 19 -- .../ui/variance/variance-cell-is-invariant.stderr | 18 -- .../variance/variance-contravariant-arg-object.rs | 27 --- .../variance-contravariant-arg-object.stderr | 28 --- .../variance-contravariant-arg-trait-match.rs | 28 --- .../variance-contravariant-arg-trait-match.stderr | 28 --- .../variance-contravariant-self-trait-match.rs | 29 --- .../variance-contravariant-self-trait-match.stderr | 28 --- .../ui/variance/variance-covariant-arg-object.rs | 27 --- .../variance/variance-covariant-arg-object.stderr | 28 --- .../variance/variance-covariant-arg-trait-match.rs | 27 --- .../variance-covariant-arg-trait-match.stderr | 28 --- .../variance-covariant-self-trait-match.rs | 27 --- .../variance-covariant-self-trait-match.stderr | 28 --- .../ui/variance/variance-invariant-arg-object.rs | 23 --- .../variance/variance-invariant-arg-object.stderr | 28 --- .../variance/variance-invariant-arg-trait-match.rs | 23 --- .../variance-invariant-arg-trait-match.stderr | 28 --- .../variance-invariant-self-trait-match.rs | 23 --- .../variance-invariant-self-trait-match.stderr | 28 --- src/test/ui/variance/variance-issue-20533.rs | 43 ----- src/test/ui/variance/variance-issue-20533.stderr | 33 ---- src/test/ui/variance/variance-object-types.rs | 12 -- src/test/ui/variance/variance-object-types.stderr | 8 - src/test/ui/variance/variance-regions-direct.rs | 65 ------- .../ui/variance/variance-regions-direct.stderr | 44 ----- src/test/ui/variance/variance-regions-indirect.rs | 34 ---- .../ui/variance/variance-regions-indirect.stderr | 32 ---- .../ui/variance/variance-regions-unused-direct.rs | 15 -- .../variance/variance-regions-unused-direct.stderr | 19 -- .../variance/variance-regions-unused-indirect.rs | 12 -- .../variance-regions-unused-indirect.stderr | 43 ----- src/test/ui/variance/variance-trait-bounds.rs | 35 ---- src/test/ui/variance/variance-trait-bounds.stderr | 26 --- src/test/ui/variance/variance-trait-matching.rs | 38 ---- .../ui/variance/variance-trait-matching.stderr | 12 -- .../ui/variance/variance-trait-object-bound.rs | 18 -- .../ui/variance/variance-trait-object-bound.stderr | 8 - src/test/ui/variance/variance-types-bounds.rs | 43 ----- src/test/ui/variance/variance-types-bounds.stderr | 32 ---- src/test/ui/variance/variance-types.rs | 41 ----- src/test/ui/variance/variance-types.stderr | 38 ---- .../ui/variance/variance-unused-region-param.rs | 7 - .../variance/variance-unused-region-param.stderr | 19 -- src/test/ui/variance/variance-unused-type-param.rs | 28 --- .../ui/variance/variance-unused-type-param.stderr | 54 ------ .../variance-use-contravariant-struct-1.rs | 15 -- .../variance-use-contravariant-struct-1.stderr | 15 -- .../variance-use-contravariant-struct-2.rs | 17 -- .../ui/variance/variance-use-covariant-struct-1.rs | 14 -- .../variance-use-covariant-struct-1.stderr | 15 -- .../ui/variance/variance-use-covariant-struct-2.rs | 16 -- .../ui/variance/variance-use-invariant-struct-1.rs | 23 --- .../variance-use-invariant-struct-1.stderr | 34 ---- 62 files changed, 1801 deletions(-) delete mode 100644 src/test/ui/variance/variance-associated-consts.rs delete mode 100644 src/test/ui/variance/variance-associated-consts.stderr delete mode 100644 src/test/ui/variance/variance-associated-types.rs delete mode 100644 src/test/ui/variance/variance-associated-types.stderr delete mode 100644 src/test/ui/variance/variance-associated-types2.rs delete mode 100644 src/test/ui/variance/variance-associated-types2.stderr delete mode 100644 src/test/ui/variance/variance-btree-invariant-types.rs delete mode 100644 src/test/ui/variance/variance-btree-invariant-types.stderr delete mode 100644 src/test/ui/variance/variance-cell-is-invariant.rs delete mode 100644 src/test/ui/variance/variance-cell-is-invariant.stderr delete mode 100644 src/test/ui/variance/variance-contravariant-arg-object.rs delete mode 100644 src/test/ui/variance/variance-contravariant-arg-object.stderr delete mode 100644 src/test/ui/variance/variance-contravariant-arg-trait-match.rs delete mode 100644 src/test/ui/variance/variance-contravariant-arg-trait-match.stderr delete mode 100644 src/test/ui/variance/variance-contravariant-self-trait-match.rs delete mode 100644 src/test/ui/variance/variance-contravariant-self-trait-match.stderr delete mode 100644 src/test/ui/variance/variance-covariant-arg-object.rs delete mode 100644 src/test/ui/variance/variance-covariant-arg-object.stderr delete mode 100644 src/test/ui/variance/variance-covariant-arg-trait-match.rs delete mode 100644 src/test/ui/variance/variance-covariant-arg-trait-match.stderr delete mode 100644 src/test/ui/variance/variance-covariant-self-trait-match.rs delete mode 100644 src/test/ui/variance/variance-covariant-self-trait-match.stderr delete mode 100644 src/test/ui/variance/variance-invariant-arg-object.rs delete mode 100644 src/test/ui/variance/variance-invariant-arg-object.stderr delete mode 100644 src/test/ui/variance/variance-invariant-arg-trait-match.rs delete mode 100644 src/test/ui/variance/variance-invariant-arg-trait-match.stderr delete mode 100644 src/test/ui/variance/variance-invariant-self-trait-match.rs delete mode 100644 src/test/ui/variance/variance-invariant-self-trait-match.stderr delete mode 100644 src/test/ui/variance/variance-issue-20533.rs delete mode 100644 src/test/ui/variance/variance-issue-20533.stderr delete mode 100644 src/test/ui/variance/variance-object-types.rs delete mode 100644 src/test/ui/variance/variance-object-types.stderr delete mode 100644 src/test/ui/variance/variance-regions-direct.rs delete mode 100644 src/test/ui/variance/variance-regions-direct.stderr delete mode 100644 src/test/ui/variance/variance-regions-indirect.rs delete mode 100644 src/test/ui/variance/variance-regions-indirect.stderr delete mode 100644 src/test/ui/variance/variance-regions-unused-direct.rs delete mode 100644 src/test/ui/variance/variance-regions-unused-direct.stderr delete mode 100644 src/test/ui/variance/variance-regions-unused-indirect.rs delete mode 100644 src/test/ui/variance/variance-regions-unused-indirect.stderr delete mode 100644 src/test/ui/variance/variance-trait-bounds.rs delete mode 100644 src/test/ui/variance/variance-trait-bounds.stderr delete mode 100644 src/test/ui/variance/variance-trait-matching.rs delete mode 100644 src/test/ui/variance/variance-trait-matching.stderr delete mode 100644 src/test/ui/variance/variance-trait-object-bound.rs delete mode 100644 src/test/ui/variance/variance-trait-object-bound.stderr delete mode 100644 src/test/ui/variance/variance-types-bounds.rs delete mode 100644 src/test/ui/variance/variance-types-bounds.stderr delete mode 100644 src/test/ui/variance/variance-types.rs delete mode 100644 src/test/ui/variance/variance-types.stderr delete mode 100644 src/test/ui/variance/variance-unused-region-param.rs delete mode 100644 src/test/ui/variance/variance-unused-region-param.stderr delete mode 100644 src/test/ui/variance/variance-unused-type-param.rs delete mode 100644 src/test/ui/variance/variance-unused-type-param.stderr delete mode 100644 src/test/ui/variance/variance-use-contravariant-struct-1.rs delete mode 100644 src/test/ui/variance/variance-use-contravariant-struct-1.stderr delete mode 100644 src/test/ui/variance/variance-use-contravariant-struct-2.rs delete mode 100644 src/test/ui/variance/variance-use-covariant-struct-1.rs delete mode 100644 src/test/ui/variance/variance-use-covariant-struct-1.stderr delete mode 100644 src/test/ui/variance/variance-use-covariant-struct-2.rs delete mode 100644 src/test/ui/variance/variance-use-invariant-struct-1.rs delete mode 100644 src/test/ui/variance/variance-use-invariant-struct-1.stderr (limited to 'src/test/ui/variance') diff --git a/src/test/ui/variance/variance-associated-consts.rs b/src/test/ui/variance/variance-associated-consts.rs deleted file mode 100644 index da55bc962..000000000 --- a/src/test/ui/variance/variance-associated-consts.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Test that the variance computation considers types that -// appear in const expressions to be invariant. - -#![feature(rustc_attrs)] -#![allow(incomplete_features)] -#![feature(generic_const_exprs)] - -trait Trait { - const Const: usize; -} - -#[rustc_variance] -struct Foo { //~ ERROR [o] - field: [u8; ::Const] -} - -fn main() { } diff --git a/src/test/ui/variance/variance-associated-consts.stderr b/src/test/ui/variance/variance-associated-consts.stderr deleted file mode 100644 index 219f5bca9..000000000 --- a/src/test/ui/variance/variance-associated-consts.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error[E0208]: [o] - --> $DIR/variance-associated-consts.rs:13:1 - | -LL | struct Foo { - | ^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to previous error - diff --git a/src/test/ui/variance/variance-associated-types.rs b/src/test/ui/variance/variance-associated-types.rs deleted file mode 100644 index 1165fb53c..000000000 --- a/src/test/ui/variance/variance-associated-types.rs +++ /dev/null @@ -1,22 +0,0 @@ -// Test that the variance computation considers types/regions that -// appear in projections to be invariant. - -#![feature(rustc_attrs)] - -trait Trait<'a> { - type Type; - - fn method(&'a self) { } -} - -#[rustc_variance] -struct Foo<'a, T : Trait<'a>> { //~ ERROR [-, +] - field: (T, &'a ()) -} - -#[rustc_variance] -struct Bar<'a, T : Trait<'a>> { //~ ERROR [o, o] - field: >::Type -} - -fn main() { } diff --git a/src/test/ui/variance/variance-associated-types.stderr b/src/test/ui/variance/variance-associated-types.stderr deleted file mode 100644 index 94f770eda..000000000 --- a/src/test/ui/variance/variance-associated-types.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error[E0208]: [-, +] - --> $DIR/variance-associated-types.rs:13:1 - | -LL | struct Foo<'a, T : Trait<'a>> { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [o, o] - --> $DIR/variance-associated-types.rs:18:1 - | -LL | struct Bar<'a, T : Trait<'a>> { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to 2 previous errors - diff --git a/src/test/ui/variance/variance-associated-types2.rs b/src/test/ui/variance/variance-associated-types2.rs deleted file mode 100644 index e487eefea..000000000 --- a/src/test/ui/variance/variance-associated-types2.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Test that dyn Foo is invariant with respect to T. -// Failure to enforce invariance here can be weaponized, see #71550 for details. - -trait Foo { - type Bar; -} - -fn make() -> Box> { - panic!() -} - -fn take<'a>(_: &'a u32) { - let _: Box> = make(); - //~^ ERROR lifetime may not live long enough -} - -fn main() {} diff --git a/src/test/ui/variance/variance-associated-types2.stderr b/src/test/ui/variance/variance-associated-types2.stderr deleted file mode 100644 index 35871c123..000000000 --- a/src/test/ui/variance/variance-associated-types2.stderr +++ /dev/null @@ -1,10 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-associated-types2.rs:13:12 - | -LL | fn take<'a>(_: &'a u32) { - | -- lifetime `'a` defined here -LL | let _: Box> = make(); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'static` - -error: aborting due to previous error - diff --git a/src/test/ui/variance/variance-btree-invariant-types.rs b/src/test/ui/variance/variance-btree-invariant-types.rs deleted file mode 100644 index 09c93d001..000000000 --- a/src/test/ui/variance/variance-btree-invariant-types.rs +++ /dev/null @@ -1,80 +0,0 @@ -use std::collections::btree_map::{IterMut, OccupiedEntry, RangeMut, VacantEntry}; - -fn iter_cov_key<'a, 'new>(v: IterMut<'a, &'static (), ()>) -> IterMut<'a, &'new (), ()> { - v - //~^ lifetime may not live long enough -} -fn iter_cov_val<'a, 'new>(v: IterMut<'a, (), &'static ()>) -> IterMut<'a, (), &'new ()> { - v - //~^ lifetime may not live long enough -} -fn iter_contra_key<'a, 'new>(v: IterMut<'a, &'new (), ()>) -> IterMut<'a, &'static (), ()> { - v - //~^ lifetime may not live long enough -} -fn iter_contra_val<'a, 'new>(v: IterMut<'a, (), &'new ()>) -> IterMut<'a, (), &'static ()> { - v - //~^ lifetime may not live long enough -} - -fn range_cov_key<'a, 'new>(v: RangeMut<'a, &'static (), ()>) -> RangeMut<'a, &'new (), ()> { - v - //~^ lifetime may not live long enough -} -fn range_cov_val<'a, 'new>(v: RangeMut<'a, (), &'static ()>) -> RangeMut<'a, (), &'new ()> { - v - //~^ lifetime may not live long enough -} -fn range_contra_key<'a, 'new>(v: RangeMut<'a, &'new (), ()>) -> RangeMut<'a, &'static (), ()> { - v - //~^ lifetime may not live long enough -} -fn range_contra_val<'a, 'new>(v: RangeMut<'a, (), &'new ()>) -> RangeMut<'a, (), &'static ()> { - v - //~^ lifetime may not live long enough -} - -fn occ_cov_key<'a, 'new>(v: OccupiedEntry<'a, &'static (), ()>) - -> OccupiedEntry<'a, &'new (), ()> { - v - //~^ lifetime may not live long enough -} -fn occ_cov_val<'a, 'new>(v: OccupiedEntry<'a, (), &'static ()>) - -> OccupiedEntry<'a, (), &'new ()> { - v - //~^ lifetime may not live long enough -} -fn occ_contra_key<'a, 'new>(v: OccupiedEntry<'a, &'new (), ()>) - -> OccupiedEntry<'a, &'static (), ()> { - v - //~^ lifetime may not live long enough -} -fn occ_contra_val<'a, 'new>(v: OccupiedEntry<'a, (), &'new ()>) - -> OccupiedEntry<'a, (), &'static ()> { - v - //~^ lifetime may not live long enough -} - -fn vac_cov_key<'a, 'new>(v: VacantEntry<'a, &'static (), ()>) - -> VacantEntry<'a, &'new (), ()> { - v - //~^ lifetime may not live long enough -} -fn vac_cov_val<'a, 'new>(v: VacantEntry<'a, (), &'static ()>) - -> VacantEntry<'a, (), &'new ()> { - v - //~^ lifetime may not live long enough -} -fn vac_contra_key<'a, 'new>(v: VacantEntry<'a, &'new (), ()>) - -> VacantEntry<'a, &'static (), ()> { - v - //~^ lifetime may not live long enough -} -fn vac_contra_val<'a, 'new>(v: VacantEntry<'a, (), &'new ()>) - -> VacantEntry<'a, (), &'static ()> { - v - //~^ lifetime may not live long enough -} - - -fn main() { } diff --git a/src/test/ui/variance/variance-btree-invariant-types.stderr b/src/test/ui/variance/variance-btree-invariant-types.stderr deleted file mode 100644 index 6f7910021..000000000 --- a/src/test/ui/variance/variance-btree-invariant-types.stderr +++ /dev/null @@ -1,202 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:4:5 - | -LL | fn iter_cov_key<'a, 'new>(v: IterMut<'a, &'static (), ()>) -> IterMut<'a, &'new (), ()> { - | ---- lifetime `'new` defined here -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `std::collections::btree_map::IterMut<'_, &(), ()>`, which makes the generic argument `&()` invariant - = note: the struct `std::collections::btree_map::IterMut<'a, K, V>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:8:5 - | -LL | fn iter_cov_val<'a, 'new>(v: IterMut<'a, (), &'static ()>) -> IterMut<'a, (), &'new ()> { - | ---- lifetime `'new` defined here -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `std::collections::btree_map::IterMut<'_, (), &()>`, which makes the generic argument `()` invariant - = note: the struct `std::collections::btree_map::IterMut<'a, K, V>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:12:5 - | -LL | fn iter_contra_key<'a, 'new>(v: IterMut<'a, &'new (), ()>) -> IterMut<'a, &'static (), ()> { - | ---- lifetime `'new` defined here -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `std::collections::btree_map::IterMut<'_, &(), ()>`, which makes the generic argument `&()` invariant - = note: the struct `std::collections::btree_map::IterMut<'a, K, V>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:16:5 - | -LL | fn iter_contra_val<'a, 'new>(v: IterMut<'a, (), &'new ()>) -> IterMut<'a, (), &'static ()> { - | ---- lifetime `'new` defined here -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `std::collections::btree_map::IterMut<'_, (), &()>`, which makes the generic argument `()` invariant - = note: the struct `std::collections::btree_map::IterMut<'a, K, V>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:21:5 - | -LL | fn range_cov_key<'a, 'new>(v: RangeMut<'a, &'static (), ()>) -> RangeMut<'a, &'new (), ()> { - | ---- lifetime `'new` defined here -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `RangeMut<'_, &(), ()>`, which makes the generic argument `&()` invariant - = note: the struct `RangeMut<'a, K, V>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:25:5 - | -LL | fn range_cov_val<'a, 'new>(v: RangeMut<'a, (), &'static ()>) -> RangeMut<'a, (), &'new ()> { - | ---- lifetime `'new` defined here -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `RangeMut<'_, (), &()>`, which makes the generic argument `()` invariant - = note: the struct `RangeMut<'a, K, V>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:29:5 - | -LL | fn range_contra_key<'a, 'new>(v: RangeMut<'a, &'new (), ()>) -> RangeMut<'a, &'static (), ()> { - | ---- lifetime `'new` defined here -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `RangeMut<'_, &(), ()>`, which makes the generic argument `&()` invariant - = note: the struct `RangeMut<'a, K, V>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:33:5 - | -LL | fn range_contra_val<'a, 'new>(v: RangeMut<'a, (), &'new ()>) -> RangeMut<'a, (), &'static ()> { - | ---- lifetime `'new` defined here -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `RangeMut<'_, (), &()>`, which makes the generic argument `()` invariant - = note: the struct `RangeMut<'a, K, V>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:39:5 - | -LL | fn occ_cov_key<'a, 'new>(v: OccupiedEntry<'a, &'static (), ()>) - | ---- lifetime `'new` defined here -LL | -> OccupiedEntry<'a, &'new (), ()> { -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `std::collections::btree_map::OccupiedEntry<'_, &(), ()>`, which makes the generic argument `&()` invariant - = note: the struct `std::collections::btree_map::OccupiedEntry<'a, K, V, A>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:44:5 - | -LL | fn occ_cov_val<'a, 'new>(v: OccupiedEntry<'a, (), &'static ()>) - | ---- lifetime `'new` defined here -LL | -> OccupiedEntry<'a, (), &'new ()> { -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `std::collections::btree_map::OccupiedEntry<'_, (), &()>`, which makes the generic argument `()` invariant - = note: the struct `std::collections::btree_map::OccupiedEntry<'a, K, V, A>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:49:5 - | -LL | fn occ_contra_key<'a, 'new>(v: OccupiedEntry<'a, &'new (), ()>) - | ---- lifetime `'new` defined here -LL | -> OccupiedEntry<'a, &'static (), ()> { -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `std::collections::btree_map::OccupiedEntry<'_, &(), ()>`, which makes the generic argument `&()` invariant - = note: the struct `std::collections::btree_map::OccupiedEntry<'a, K, V, A>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:54:5 - | -LL | fn occ_contra_val<'a, 'new>(v: OccupiedEntry<'a, (), &'new ()>) - | ---- lifetime `'new` defined here -LL | -> OccupiedEntry<'a, (), &'static ()> { -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `std::collections::btree_map::OccupiedEntry<'_, (), &()>`, which makes the generic argument `()` invariant - = note: the struct `std::collections::btree_map::OccupiedEntry<'a, K, V, A>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:60:5 - | -LL | fn vac_cov_key<'a, 'new>(v: VacantEntry<'a, &'static (), ()>) - | ---- lifetime `'new` defined here -LL | -> VacantEntry<'a, &'new (), ()> { -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `std::collections::btree_map::VacantEntry<'_, &(), ()>`, which makes the generic argument `&()` invariant - = note: the struct `std::collections::btree_map::VacantEntry<'a, K, V, A>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:65:5 - | -LL | fn vac_cov_val<'a, 'new>(v: VacantEntry<'a, (), &'static ()>) - | ---- lifetime `'new` defined here -LL | -> VacantEntry<'a, (), &'new ()> { -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `std::collections::btree_map::VacantEntry<'_, (), &()>`, which makes the generic argument `()` invariant - = note: the struct `std::collections::btree_map::VacantEntry<'a, K, V, A>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:70:5 - | -LL | fn vac_contra_key<'a, 'new>(v: VacantEntry<'a, &'new (), ()>) - | ---- lifetime `'new` defined here -LL | -> VacantEntry<'a, &'static (), ()> { -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `std::collections::btree_map::VacantEntry<'_, &(), ()>`, which makes the generic argument `&()` invariant - = note: the struct `std::collections::btree_map::VacantEntry<'a, K, V, A>` is invariant over the parameter `K` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-btree-invariant-types.rs:75:5 - | -LL | fn vac_contra_val<'a, 'new>(v: VacantEntry<'a, (), &'new ()>) - | ---- lifetime `'new` defined here -LL | -> VacantEntry<'a, (), &'static ()> { -LL | v - | ^ returning this value requires that `'new` must outlive `'static` - | - = note: requirement occurs because of the type `std::collections::btree_map::VacantEntry<'_, (), &()>`, which makes the generic argument `()` invariant - = note: the struct `std::collections::btree_map::VacantEntry<'a, K, V, A>` is invariant over the parameter `K` - = help: see for more information about variance - -error: aborting due to 16 previous errors - diff --git a/src/test/ui/variance/variance-cell-is-invariant.rs b/src/test/ui/variance/variance-cell-is-invariant.rs deleted file mode 100644 index 62ce4f91f..000000000 --- a/src/test/ui/variance/variance-cell-is-invariant.rs +++ /dev/null @@ -1,19 +0,0 @@ -// Test that Cell is considered invariant with respect to its -// type. - -use std::cell::Cell; - -struct Foo<'a> { - x: Cell>, -} - -fn use_<'short,'long>(c: Foo<'short>, - s: &'short isize, - l: &'long isize, - _where:Option<&'short &'long ()>) { - let _: Foo<'long> = c; - //~^ ERROR lifetime may not live long enough -} - -fn main() { -} diff --git a/src/test/ui/variance/variance-cell-is-invariant.stderr b/src/test/ui/variance/variance-cell-is-invariant.stderr deleted file mode 100644 index ab5435d16..000000000 --- a/src/test/ui/variance/variance-cell-is-invariant.stderr +++ /dev/null @@ -1,18 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-cell-is-invariant.rs:14:12 - | -LL | fn use_<'short,'long>(c: Foo<'short>, - | ------ ----- lifetime `'long` defined here - | | - | lifetime `'short` defined here -... -LL | let _: Foo<'long> = c; - | ^^^^^^^^^^ type annotation requires that `'short` must outlive `'long` - | - = help: consider adding the following bound: `'short: 'long` - = note: requirement occurs because of the type `Foo<'_>`, which makes the generic argument `'_` invariant - = note: the struct `Foo<'a>` is invariant over the parameter `'a` - = help: see for more information about variance - -error: aborting due to previous error - diff --git a/src/test/ui/variance/variance-contravariant-arg-object.rs b/src/test/ui/variance/variance-contravariant-arg-object.rs deleted file mode 100644 index 701fcaf69..000000000 --- a/src/test/ui/variance/variance-contravariant-arg-object.rs +++ /dev/null @@ -1,27 +0,0 @@ -#![allow(dead_code)] - -// Test that even when `T` is only used in contravariant position, it -// is treated as invariant. - -trait Get : 'static { - fn get(&self, t: T); -} - -fn get_min_from_max<'min, 'max>(v: Box>) - -> Box> - where 'max : 'min -{ - v - //~^ ERROR lifetime may not live long enough -} - -fn get_max_from_min<'min, 'max>(v: Box>) - -> Box> - where 'max : 'min -{ - // Previously OK: - v - //~^ ERROR lifetime may not live long enough -} - -fn main() { } diff --git a/src/test/ui/variance/variance-contravariant-arg-object.stderr b/src/test/ui/variance/variance-contravariant-arg-object.stderr deleted file mode 100644 index ab28315e1..000000000 --- a/src/test/ui/variance/variance-contravariant-arg-object.stderr +++ /dev/null @@ -1,28 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-contravariant-arg-object.rs:14:5 - | -LL | fn get_min_from_max<'min, 'max>(v: Box>) - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | v - | ^ function was supposed to return data with lifetime `'max` but it is returning data with lifetime `'min` - | - = help: consider adding the following bound: `'min: 'max` - -error: lifetime may not live long enough - --> $DIR/variance-contravariant-arg-object.rs:23:5 - | -LL | fn get_max_from_min<'min, 'max>(v: Box>) - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | v - | ^ function was supposed to return data with lifetime `'max` but it is returning data with lifetime `'min` - | - = help: consider adding the following bound: `'min: 'max` - -error: aborting due to 2 previous errors - diff --git a/src/test/ui/variance/variance-contravariant-arg-trait-match.rs b/src/test/ui/variance/variance-contravariant-arg-trait-match.rs deleted file mode 100644 index e0b280105..000000000 --- a/src/test/ui/variance/variance-contravariant-arg-trait-match.rs +++ /dev/null @@ -1,28 +0,0 @@ -#![allow(dead_code)] - -// Test that even when `T` is only used in contravariant position, it -// is treated as invariant. - -trait Get { - fn get(&self, t: T); -} - -fn get_min_from_max<'min, 'max, G>() - where 'max : 'min, G : Get<&'max i32> -{ - impls_get::() - //~^ ERROR lifetime may not live long enough -} - -fn get_max_from_min<'min, 'max, G>() - where 'max : 'min, G : Get<&'min i32> -{ - // Previously OK, but now an error because traits are invariant: - - impls_get::() - //~^ ERROR lifetime may not live long enough -} - -fn impls_get() where G : Get { } - -fn main() { } diff --git a/src/test/ui/variance/variance-contravariant-arg-trait-match.stderr b/src/test/ui/variance/variance-contravariant-arg-trait-match.stderr deleted file mode 100644 index df9d93907..000000000 --- a/src/test/ui/variance/variance-contravariant-arg-trait-match.stderr +++ /dev/null @@ -1,28 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-contravariant-arg-trait-match.rs:13:5 - | -LL | fn get_min_from_max<'min, 'max, G>() - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | impls_get::() - | ^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max` - | - = help: consider adding the following bound: `'min: 'max` - -error: lifetime may not live long enough - --> $DIR/variance-contravariant-arg-trait-match.rs:22:5 - | -LL | fn get_max_from_min<'min, 'max, G>() - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | impls_get::() - | ^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max` - | - = help: consider adding the following bound: `'min: 'max` - -error: aborting due to 2 previous errors - diff --git a/src/test/ui/variance/variance-contravariant-self-trait-match.rs b/src/test/ui/variance/variance-contravariant-self-trait-match.rs deleted file mode 100644 index 8a10554f3..000000000 --- a/src/test/ui/variance/variance-contravariant-self-trait-match.rs +++ /dev/null @@ -1,29 +0,0 @@ -#![allow(dead_code)] - -// Test that even when `Self` is only used in contravariant position, it -// is treated as invariant. - -trait Get { - fn get(&self); -} - -fn get_min_from_max<'min, 'max, G>() - where 'max : 'min, G : 'max, &'max G : Get -{ - impls_get::<&'min G>(); - //~^ ERROR lifetime may not live long enough -} - -fn get_max_from_min<'min, 'max, G>() - where 'max : 'min, G : 'max, &'min G : Get -{ - // Previously OK, but now error because traits are invariant with - // respect to all inputs. - - impls_get::<&'max G>(); - //~^ ERROR lifetime may not live long enough -} - -fn impls_get() where G : Get { } - -fn main() { } diff --git a/src/test/ui/variance/variance-contravariant-self-trait-match.stderr b/src/test/ui/variance/variance-contravariant-self-trait-match.stderr deleted file mode 100644 index bfea1b1b3..000000000 --- a/src/test/ui/variance/variance-contravariant-self-trait-match.stderr +++ /dev/null @@ -1,28 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-contravariant-self-trait-match.rs:13:5 - | -LL | fn get_min_from_max<'min, 'max, G>() - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | impls_get::<&'min G>(); - | ^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max` - | - = help: consider adding the following bound: `'min: 'max` - -error: lifetime may not live long enough - --> $DIR/variance-contravariant-self-trait-match.rs:23:5 - | -LL | fn get_max_from_min<'min, 'max, G>() - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | impls_get::<&'max G>(); - | ^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max` - | - = help: consider adding the following bound: `'min: 'max` - -error: aborting due to 2 previous errors - diff --git a/src/test/ui/variance/variance-covariant-arg-object.rs b/src/test/ui/variance/variance-covariant-arg-object.rs deleted file mode 100644 index 89cf3117a..000000000 --- a/src/test/ui/variance/variance-covariant-arg-object.rs +++ /dev/null @@ -1,27 +0,0 @@ -#![allow(dead_code)] - -// Test that even when `T` is only used in covariant position, it -// is treated as invariant. - -trait Get : 'static { - fn get(&self) -> T; -} - -fn get_min_from_max<'min, 'max>(v: Box>) - -> Box> - where 'max : 'min -{ - // Previously OK, now an error as traits are invariant. - v - //~^ ERROR lifetime may not live long enough -} - -fn get_max_from_min<'min, 'max>(v: Box>) - -> Box> - where 'max : 'min -{ - v - //~^ ERROR lifetime may not live long enough -} - -fn main() { } diff --git a/src/test/ui/variance/variance-covariant-arg-object.stderr b/src/test/ui/variance/variance-covariant-arg-object.stderr deleted file mode 100644 index 51f8cb3ec..000000000 --- a/src/test/ui/variance/variance-covariant-arg-object.stderr +++ /dev/null @@ -1,28 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-covariant-arg-object.rs:15:5 - | -LL | fn get_min_from_max<'min, 'max>(v: Box>) - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | v - | ^ function was supposed to return data with lifetime `'max` but it is returning data with lifetime `'min` - | - = help: consider adding the following bound: `'min: 'max` - -error: lifetime may not live long enough - --> $DIR/variance-covariant-arg-object.rs:23:5 - | -LL | fn get_max_from_min<'min, 'max>(v: Box>) - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | v - | ^ function was supposed to return data with lifetime `'max` but it is returning data with lifetime `'min` - | - = help: consider adding the following bound: `'min: 'max` - -error: aborting due to 2 previous errors - diff --git a/src/test/ui/variance/variance-covariant-arg-trait-match.rs b/src/test/ui/variance/variance-covariant-arg-trait-match.rs deleted file mode 100644 index 68dd449d5..000000000 --- a/src/test/ui/variance/variance-covariant-arg-trait-match.rs +++ /dev/null @@ -1,27 +0,0 @@ -#![allow(dead_code)] - -// Test that even when `T` is only used in covariant position, it -// is treated as invariant. - -trait Get { - fn get(&self) -> T; -} - -fn get_min_from_max<'min, 'max, G>() - where 'max : 'min, G : Get<&'max i32> -{ - // Previously OK, now an error as traits are invariant. - impls_get::() - //~^ ERROR lifetime may not live long enough -} - -fn get_max_from_min<'min, 'max, G>() - where 'max : 'min, G : Get<&'min i32> -{ - impls_get::() - //~^ ERROR lifetime may not live long enough -} - -fn impls_get() where G : Get { } - -fn main() { } diff --git a/src/test/ui/variance/variance-covariant-arg-trait-match.stderr b/src/test/ui/variance/variance-covariant-arg-trait-match.stderr deleted file mode 100644 index 4c7b6cf7c..000000000 --- a/src/test/ui/variance/variance-covariant-arg-trait-match.stderr +++ /dev/null @@ -1,28 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-covariant-arg-trait-match.rs:14:5 - | -LL | fn get_min_from_max<'min, 'max, G>() - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | impls_get::() - | ^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max` - | - = help: consider adding the following bound: `'min: 'max` - -error: lifetime may not live long enough - --> $DIR/variance-covariant-arg-trait-match.rs:21:5 - | -LL | fn get_max_from_min<'min, 'max, G>() - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | impls_get::() - | ^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max` - | - = help: consider adding the following bound: `'min: 'max` - -error: aborting due to 2 previous errors - diff --git a/src/test/ui/variance/variance-covariant-self-trait-match.rs b/src/test/ui/variance/variance-covariant-self-trait-match.rs deleted file mode 100644 index 93c25e980..000000000 --- a/src/test/ui/variance/variance-covariant-self-trait-match.rs +++ /dev/null @@ -1,27 +0,0 @@ -#![allow(dead_code)] - -// Test that even when `Self` is only used in covariant position, it -// is treated as invariant. - -trait Get { - fn get() -> Self; -} - -fn get_min_from_max<'min, 'max, G>() - where 'max : 'min, G : 'max, &'max G : Get -{ - // Previously OK, now an error as traits are invariant. - impls_get::<&'min G>(); - //~^ ERROR lifetime may not live long enough -} - -fn get_max_from_min<'min, 'max, G>() - where 'max : 'min, G : 'max, &'min G : Get -{ - impls_get::<&'max G>(); - //~^ ERROR lifetime may not live long enough -} - -fn impls_get() where G : Get { } - -fn main() { } diff --git a/src/test/ui/variance/variance-covariant-self-trait-match.stderr b/src/test/ui/variance/variance-covariant-self-trait-match.stderr deleted file mode 100644 index 9b7ba3b66..000000000 --- a/src/test/ui/variance/variance-covariant-self-trait-match.stderr +++ /dev/null @@ -1,28 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-covariant-self-trait-match.rs:14:5 - | -LL | fn get_min_from_max<'min, 'max, G>() - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | impls_get::<&'min G>(); - | ^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max` - | - = help: consider adding the following bound: `'min: 'max` - -error: lifetime may not live long enough - --> $DIR/variance-covariant-self-trait-match.rs:21:5 - | -LL | fn get_max_from_min<'min, 'max, G>() - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | impls_get::<&'max G>(); - | ^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max` - | - = help: consider adding the following bound: `'min: 'max` - -error: aborting due to 2 previous errors - diff --git a/src/test/ui/variance/variance-invariant-arg-object.rs b/src/test/ui/variance/variance-invariant-arg-object.rs deleted file mode 100644 index 7381b4130..000000000 --- a/src/test/ui/variance/variance-invariant-arg-object.rs +++ /dev/null @@ -1,23 +0,0 @@ -#![allow(dead_code)] - -trait Get : 'static { - fn get(&self, t: T) -> T; -} - -fn get_min_from_max<'min, 'max>(v: Box>) - -> Box> - where 'max : 'min -{ - v - //~^ ERROR lifetime may not live long enough -} - -fn get_max_from_min<'min, 'max>(v: Box>) - -> Box> - where 'max : 'min -{ - v - //~^ ERROR lifetime may not live long enough -} - -fn main() { } diff --git a/src/test/ui/variance/variance-invariant-arg-object.stderr b/src/test/ui/variance/variance-invariant-arg-object.stderr deleted file mode 100644 index 9793a36be..000000000 --- a/src/test/ui/variance/variance-invariant-arg-object.stderr +++ /dev/null @@ -1,28 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-invariant-arg-object.rs:11:5 - | -LL | fn get_min_from_max<'min, 'max>(v: Box>) - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | v - | ^ function was supposed to return data with lifetime `'max` but it is returning data with lifetime `'min` - | - = help: consider adding the following bound: `'min: 'max` - -error: lifetime may not live long enough - --> $DIR/variance-invariant-arg-object.rs:19:5 - | -LL | fn get_max_from_min<'min, 'max>(v: Box>) - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | v - | ^ function was supposed to return data with lifetime `'max` but it is returning data with lifetime `'min` - | - = help: consider adding the following bound: `'min: 'max` - -error: aborting due to 2 previous errors - diff --git a/src/test/ui/variance/variance-invariant-arg-trait-match.rs b/src/test/ui/variance/variance-invariant-arg-trait-match.rs deleted file mode 100644 index fbcc24387..000000000 --- a/src/test/ui/variance/variance-invariant-arg-trait-match.rs +++ /dev/null @@ -1,23 +0,0 @@ -#![allow(dead_code)] - -trait Get { - fn get(&self, t: T) -> T; -} - -fn get_min_from_max<'min, 'max, G>() - where 'max : 'min, G : Get<&'max i32> -{ - impls_get::() - //~^ ERROR lifetime may not live long enough -} - -fn get_max_from_min<'min, 'max, G>() - where 'max : 'min, G : Get<&'min i32> -{ - impls_get::() - //~^ ERROR lifetime may not live long enough -} - -fn impls_get() where G : Get { } - -fn main() { } diff --git a/src/test/ui/variance/variance-invariant-arg-trait-match.stderr b/src/test/ui/variance/variance-invariant-arg-trait-match.stderr deleted file mode 100644 index 60ffdd029..000000000 --- a/src/test/ui/variance/variance-invariant-arg-trait-match.stderr +++ /dev/null @@ -1,28 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-invariant-arg-trait-match.rs:10:5 - | -LL | fn get_min_from_max<'min, 'max, G>() - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | impls_get::() - | ^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max` - | - = help: consider adding the following bound: `'min: 'max` - -error: lifetime may not live long enough - --> $DIR/variance-invariant-arg-trait-match.rs:17:5 - | -LL | fn get_max_from_min<'min, 'max, G>() - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | impls_get::() - | ^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max` - | - = help: consider adding the following bound: `'min: 'max` - -error: aborting due to 2 previous errors - diff --git a/src/test/ui/variance/variance-invariant-self-trait-match.rs b/src/test/ui/variance/variance-invariant-self-trait-match.rs deleted file mode 100644 index 95c4c2403..000000000 --- a/src/test/ui/variance/variance-invariant-self-trait-match.rs +++ /dev/null @@ -1,23 +0,0 @@ -#![allow(dead_code)] - -trait Get { - fn get(&self) -> Self; -} - -fn get_min_from_max<'min, 'max, G>() - where 'max : 'min, &'max G : Get, G : 'max -{ - impls_get::<&'min G>(); - //~^ ERROR lifetime may not live long enough -} - -fn get_max_from_min<'min, 'max, G>() - where 'max : 'min, &'min G : Get, G : 'min -{ - impls_get::<&'max G>(); - //~^ ERROR lifetime may not live long enough -} - -fn impls_get() where G : Get { } - -fn main() { } diff --git a/src/test/ui/variance/variance-invariant-self-trait-match.stderr b/src/test/ui/variance/variance-invariant-self-trait-match.stderr deleted file mode 100644 index 5b64bd091..000000000 --- a/src/test/ui/variance/variance-invariant-self-trait-match.stderr +++ /dev/null @@ -1,28 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-invariant-self-trait-match.rs:10:5 - | -LL | fn get_min_from_max<'min, 'max, G>() - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | impls_get::<&'min G>(); - | ^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max` - | - = help: consider adding the following bound: `'min: 'max` - -error: lifetime may not live long enough - --> $DIR/variance-invariant-self-trait-match.rs:17:5 - | -LL | fn get_max_from_min<'min, 'max, G>() - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | impls_get::<&'max G>(); - | ^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max` - | - = help: consider adding the following bound: `'min: 'max` - -error: aborting due to 2 previous errors - diff --git a/src/test/ui/variance/variance-issue-20533.rs b/src/test/ui/variance/variance-issue-20533.rs deleted file mode 100644 index a2459f873..000000000 --- a/src/test/ui/variance/variance-issue-20533.rs +++ /dev/null @@ -1,43 +0,0 @@ -// Regression test for issue #20533. At some point, only 1 out of the -// 3 errors below were being reported. - -use std::marker::PhantomData; - -fn foo<'a, T>(_x: &'a T) -> PhantomData<&'a ()> { - PhantomData -} - -struct Wrap(T); - -fn bar<'a, T>(_x: &'a T) -> Wrap> { - Wrap(PhantomData) -} - -struct Baked<'a>(PhantomData<&'a ()>); - -fn baz<'a, T>(_x: &'a T) -> Baked<'a> { - Baked(PhantomData) -} - -struct AffineU32(u32); - -fn main() { - { - let a = AffineU32(1); - let x = foo(&a); - drop(a); //~ ERROR cannot move out of `a` - drop(x); - } - { - let a = AffineU32(1); - let x = bar(&a); - drop(a); //~ ERROR cannot move out of `a` - drop(x); - } - { - let a = AffineU32(1); - let x = baz(&a); - drop(a); //~ ERROR cannot move out of `a` - drop(x); - } -} diff --git a/src/test/ui/variance/variance-issue-20533.stderr b/src/test/ui/variance/variance-issue-20533.stderr deleted file mode 100644 index 008e2a002..000000000 --- a/src/test/ui/variance/variance-issue-20533.stderr +++ /dev/null @@ -1,33 +0,0 @@ -error[E0505]: cannot move out of `a` because it is borrowed - --> $DIR/variance-issue-20533.rs:28:14 - | -LL | let x = foo(&a); - | -- borrow of `a` occurs here -LL | drop(a); - | ^ move out of `a` occurs here -LL | drop(x); - | - borrow later used here - -error[E0505]: cannot move out of `a` because it is borrowed - --> $DIR/variance-issue-20533.rs:34:14 - | -LL | let x = bar(&a); - | -- borrow of `a` occurs here -LL | drop(a); - | ^ move out of `a` occurs here -LL | drop(x); - | - borrow later used here - -error[E0505]: cannot move out of `a` because it is borrowed - --> $DIR/variance-issue-20533.rs:40:14 - | -LL | let x = baz(&a); - | -- borrow of `a` occurs here -LL | drop(a); - | ^ move out of `a` occurs here -LL | drop(x); - | - borrow later used here - -error: aborting due to 3 previous errors - -For more information about this error, try `rustc --explain E0505`. diff --git a/src/test/ui/variance/variance-object-types.rs b/src/test/ui/variance/variance-object-types.rs deleted file mode 100644 index 6ded24cd1..000000000 --- a/src/test/ui/variance/variance-object-types.rs +++ /dev/null @@ -1,12 +0,0 @@ -#![feature(rustc_attrs)] - - -// For better or worse, associated types are invariant, and hence we -// get an invariant result for `'a`. -#[rustc_variance] -struct Foo<'a> { //~ ERROR [o] - x: Box &'a i32 + 'static> -} - -fn main() { -} diff --git a/src/test/ui/variance/variance-object-types.stderr b/src/test/ui/variance/variance-object-types.stderr deleted file mode 100644 index ceee53aff..000000000 --- a/src/test/ui/variance/variance-object-types.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error[E0208]: [o] - --> $DIR/variance-object-types.rs:7:1 - | -LL | struct Foo<'a> { - | ^^^^^^^^^^^^^^ - -error: aborting due to previous error - diff --git a/src/test/ui/variance/variance-regions-direct.rs b/src/test/ui/variance/variance-regions-direct.rs deleted file mode 100644 index 3f34e7655..000000000 --- a/src/test/ui/variance/variance-regions-direct.rs +++ /dev/null @@ -1,65 +0,0 @@ -// Test that we correctly infer variance for region parameters in -// various self-contained types. - -#![feature(rustc_attrs)] - -// Regions that just appear in normal spots are contravariant: - -#[rustc_variance] -struct Test2<'a, 'b, 'c> { //~ ERROR [-, -, -] - x: &'a isize, - y: &'b [isize], - c: &'c str -} - -// Those same annotations in function arguments become covariant: - -#[rustc_variance] -struct Test3<'a, 'b, 'c> { //~ ERROR [+, +, +] - x: extern "Rust" fn(&'a isize), - y: extern "Rust" fn(&'b [isize]), - c: extern "Rust" fn(&'c str), -} - -// Mutability induces invariance: - -#[rustc_variance] -struct Test4<'a, 'b:'a> { //~ ERROR [-, o] - x: &'a mut &'b isize, -} - -// Mutability induces invariance, even when in a -// contravariant context: - -#[rustc_variance] -struct Test5<'a, 'b:'a> { //~ ERROR [+, o] - x: extern "Rust" fn(&'a mut &'b isize), -} - -// Invariance is a trap from which NO ONE CAN ESCAPE. -// In other words, even though the `&'b isize` occurs in -// an argument list (which is contravariant), that -// argument list occurs in an invariant context. - -#[rustc_variance] -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 [*] - x: isize -} - -// Try enums too. - -#[rustc_variance] -enum Test8<'a, 'b, 'c:'b> { //~ ERROR [+, -, o] - Test8A(extern "Rust" fn(&'a isize)), - Test8B(&'b [isize]), - Test8C(&'b mut &'c str), -} - -fn main() {} diff --git a/src/test/ui/variance/variance-regions-direct.stderr b/src/test/ui/variance/variance-regions-direct.stderr deleted file mode 100644 index 25fb22732..000000000 --- a/src/test/ui/variance/variance-regions-direct.stderr +++ /dev/null @@ -1,44 +0,0 @@ -error[E0208]: [-, -, -] - --> $DIR/variance-regions-direct.rs:9:1 - | -LL | struct Test2<'a, 'b, 'c> { - | ^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [+, +, +] - --> $DIR/variance-regions-direct.rs:18:1 - | -LL | struct Test3<'a, 'b, 'c> { - | ^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [-, o] - --> $DIR/variance-regions-direct.rs:27:1 - | -LL | struct Test4<'a, 'b:'a> { - | ^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [+, o] - --> $DIR/variance-regions-direct.rs:35:1 - | -LL | struct Test5<'a, 'b:'a> { - | ^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [-, o] - --> $DIR/variance-regions-direct.rs:45:1 - | -LL | struct Test6<'a, 'b:'a> { - | ^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [*] - --> $DIR/variance-regions-direct.rs:52:1 - | -LL | struct Test7<'a> { - | ^^^^^^^^^^^^^^^^ - -error[E0208]: [+, -, o] - --> $DIR/variance-regions-direct.rs:59:1 - | -LL | enum Test8<'a, 'b, 'c:'b> { - | ^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to 7 previous errors - diff --git a/src/test/ui/variance/variance-regions-indirect.rs b/src/test/ui/variance/variance-regions-indirect.rs deleted file mode 100644 index f84f25ada..000000000 --- a/src/test/ui/variance/variance-regions-indirect.rs +++ /dev/null @@ -1,34 +0,0 @@ -// Test that we correctly infer variance for region parameters in -// case that involve multiple intricate types. -// Try enums too. - -#![feature(rustc_attrs)] - -#[rustc_variance] -enum Base<'a, 'b, 'c:'b, 'd> { //~ ERROR [+, -, o, *] - Test8A(extern "Rust" fn(&'a isize)), - Test8B(&'b [isize]), - Test8C(&'b mut &'c str), -} - -#[rustc_variance] -struct Derived1<'w, 'x:'y, 'y, 'z> { //~ ERROR [*, o, -, +] - f: Base<'z, 'y, 'x, 'w> -} - -#[rustc_variance] // Combine - and + to yield o -struct Derived2<'a, 'b:'a, 'c> { //~ ERROR [o, o, *] - 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 [o, -, *] - 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 [+, -, o] - f: Base<'a, 'b, 'c, 'a> -} - -fn main() {} diff --git a/src/test/ui/variance/variance-regions-indirect.stderr b/src/test/ui/variance/variance-regions-indirect.stderr deleted file mode 100644 index fc52492d7..000000000 --- a/src/test/ui/variance/variance-regions-indirect.stderr +++ /dev/null @@ -1,32 +0,0 @@ -error[E0208]: [+, -, o, *] - --> $DIR/variance-regions-indirect.rs:8:1 - | -LL | enum Base<'a, 'b, 'c:'b, 'd> { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [*, o, -, +] - --> $DIR/variance-regions-indirect.rs:15:1 - | -LL | struct Derived1<'w, 'x:'y, 'y, 'z> { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [o, o, *] - --> $DIR/variance-regions-indirect.rs:20:1 - | -LL | struct Derived2<'a, 'b:'a, 'c> { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [o, -, *] - --> $DIR/variance-regions-indirect.rs:25:1 - | -LL | struct Derived3<'a:'b, 'b, 'c> { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [+, -, o] - --> $DIR/variance-regions-indirect.rs:30:1 - | -LL | struct Derived4<'a, 'b, 'c:'b> { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to 5 previous errors - diff --git a/src/test/ui/variance/variance-regions-unused-direct.rs b/src/test/ui/variance/variance-regions-unused-direct.rs deleted file mode 100644 index 2afe012bd..000000000 --- a/src/test/ui/variance/variance-regions-unused-direct.rs +++ /dev/null @@ -1,15 +0,0 @@ -// Test that disallow lifetime parameters that are unused. - -use std::marker; - -struct Bivariant<'a>; //~ ERROR parameter `'a` is never used - -struct Struct<'a, 'd> { //~ ERROR parameter `'d` is never used - field: &'a [i32] -} - -trait Trait<'a, 'd> { // OK on traits - fn method(&'a self); -} - -fn main() {} diff --git a/src/test/ui/variance/variance-regions-unused-direct.stderr b/src/test/ui/variance/variance-regions-unused-direct.stderr deleted file mode 100644 index 1a600f5b0..000000000 --- a/src/test/ui/variance/variance-regions-unused-direct.stderr +++ /dev/null @@ -1,19 +0,0 @@ -error[E0392]: parameter `'a` is never used - --> $DIR/variance-regions-unused-direct.rs:5:18 - | -LL | struct Bivariant<'a>; - | ^^ unused parameter - | - = help: consider removing `'a`, referring to it in a field, or using a marker such as `PhantomData` - -error[E0392]: parameter `'d` is never used - --> $DIR/variance-regions-unused-direct.rs:7:19 - | -LL | struct Struct<'a, 'd> { - | ^^ unused parameter - | - = help: consider removing `'d`, referring to it in a field, or using a marker such as `PhantomData` - -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0392`. diff --git a/src/test/ui/variance/variance-regions-unused-indirect.rs b/src/test/ui/variance/variance-regions-unused-indirect.rs deleted file mode 100644 index 6c2c24ddb..000000000 --- a/src/test/ui/variance/variance-regions-unused-indirect.rs +++ /dev/null @@ -1,12 +0,0 @@ -// Test that disallow lifetime parameters that are unused. - -enum Foo<'a> { //~ ERROR parameter `'a` is never used - //~^ ERROR recursive types `Foo` and `Bar` have infinite size - Foo1(Bar<'a>) -} - -enum Bar<'a> { //~ ERROR parameter `'a` is never used - Bar1(Foo<'a>) -} - -fn main() {} diff --git a/src/test/ui/variance/variance-regions-unused-indirect.stderr b/src/test/ui/variance/variance-regions-unused-indirect.stderr deleted file mode 100644 index 14fdd8492..000000000 --- a/src/test/ui/variance/variance-regions-unused-indirect.stderr +++ /dev/null @@ -1,43 +0,0 @@ -error[E0072]: recursive types `Foo` and `Bar` have infinite size - --> $DIR/variance-regions-unused-indirect.rs:3:1 - | -LL | enum Foo<'a> { - | ^^^^^^^^^^^^ -LL | -LL | Foo1(Bar<'a>) - | ------- recursive without indirection -... -LL | enum Bar<'a> { - | ^^^^^^^^^^^^ -LL | Bar1(Foo<'a>) - | ------- recursive without indirection - | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle - | -LL ~ Foo1(Box>) -LL | } -LL | -LL | enum Bar<'a> { -LL ~ Bar1(Box>) - | - -error[E0392]: parameter `'a` is never used - --> $DIR/variance-regions-unused-indirect.rs:3:10 - | -LL | enum Foo<'a> { - | ^^ unused parameter - | - = help: consider removing `'a`, referring to it in a field, or using a marker such as `PhantomData` - -error[E0392]: parameter `'a` is never used - --> $DIR/variance-regions-unused-indirect.rs:8:10 - | -LL | enum Bar<'a> { - | ^^ unused parameter - | - = help: consider removing `'a`, referring to it in a field, or using a marker such as `PhantomData` - -error: aborting due to 3 previous errors - -Some errors have detailed explanations: E0072, E0392. -For more information about an error, try `rustc --explain E0072`. diff --git a/src/test/ui/variance/variance-trait-bounds.rs b/src/test/ui/variance/variance-trait-bounds.rs deleted file mode 100644 index ad5334602..000000000 --- a/src/test/ui/variance/variance-trait-bounds.rs +++ /dev/null @@ -1,35 +0,0 @@ -#![allow(dead_code)] -#![feature(rustc_attrs)] - -// Check that bounds on type parameters (other than `Self`) do not -// influence variance. - -trait Getter { - fn get(&self) -> T; -} - -trait Setter { - fn get(&self, _: T); -} - -#[rustc_variance] -struct TestStruct> { //~ ERROR [+, +] - t: T, u: U -} - -#[rustc_variance] -enum TestEnum> { //~ ERROR [*, +] - Foo(T) -} - -#[rustc_variance] -struct TestContraStruct> { //~ ERROR [*, +] - t: T -} - -#[rustc_variance] -struct TestBox+Setter> { //~ ERROR [*, +] - t: T -} - -pub fn main() { } diff --git a/src/test/ui/variance/variance-trait-bounds.stderr b/src/test/ui/variance/variance-trait-bounds.stderr deleted file mode 100644 index e3ef339f4..000000000 --- a/src/test/ui/variance/variance-trait-bounds.stderr +++ /dev/null @@ -1,26 +0,0 @@ -error[E0208]: [+, +] - --> $DIR/variance-trait-bounds.rs:16:1 - | -LL | struct TestStruct> { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [*, +] - --> $DIR/variance-trait-bounds.rs:21:1 - | -LL | enum TestEnum> { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [*, +] - --> $DIR/variance-trait-bounds.rs:26:1 - | -LL | struct TestContraStruct> { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [*, +] - --> $DIR/variance-trait-bounds.rs:31:1 - | -LL | struct TestBox+Setter> { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to 4 previous errors - diff --git a/src/test/ui/variance/variance-trait-matching.rs b/src/test/ui/variance/variance-trait-matching.rs deleted file mode 100644 index b4efee7d6..000000000 --- a/src/test/ui/variance/variance-trait-matching.rs +++ /dev/null @@ -1,38 +0,0 @@ -#![allow(dead_code)] - -// Get is covariant in T -trait Get { - fn get(&self) -> T; -} - -struct Cloner { - t: T -} - -impl Get for Cloner { - fn get(&self) -> T { - self.t.clone() - } -} - -fn get<'a, G>(get: &G) -> i32 - where G : Get<&'a i32> -{ - // This fails to type-check because, without variance, we can't - // use `G : Get<&'a i32>` as evidence that `G : Get<&'b i32>`, - // even if `'a : 'b`. - pick(get, &22) //~ ERROR explicit lifetime required in the type of `get` [E0621] -} - -fn pick<'b, G>(get: &'b G, if_odd: &'b i32) -> i32 - where G : Get<&'b i32> -{ - let v = *get.get(); - if v % 2 != 0 { v } else { *if_odd } -} - -fn main() { - let x = Cloner { t: &23 }; - let y = get(&x); - assert_eq!(y, 23); -} diff --git a/src/test/ui/variance/variance-trait-matching.stderr b/src/test/ui/variance/variance-trait-matching.stderr deleted file mode 100644 index 3308cc6d2..000000000 --- a/src/test/ui/variance/variance-trait-matching.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0621]: explicit lifetime required in the type of `get` - --> $DIR/variance-trait-matching.rs:24:5 - | -LL | fn get<'a, G>(get: &G) -> i32 - | -- help: add explicit lifetime `'a` to the type of `get`: `&'a G` -... -LL | pick(get, &22) - | ^^^^^^^^^^^^^^ lifetime `'a` required - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0621`. diff --git a/src/test/ui/variance/variance-trait-object-bound.rs b/src/test/ui/variance/variance-trait-object-bound.rs deleted file mode 100644 index ec3c973bc..000000000 --- a/src/test/ui/variance/variance-trait-object-bound.rs +++ /dev/null @@ -1,18 +0,0 @@ -// Checks that regions which appear in a trait object type are -// observed by the variance inference algorithm (and hence -// `TOption` is contavariant w/r/t `'a` and not bivariant). -// -// Issue #18262. - -#![feature(rustc_attrs)] - -use std::mem; - -trait T { fn foo(&self); } - -#[rustc_variance] -struct TOption<'a> { //~ ERROR [-] - v: Option>, -} - -fn main() { } diff --git a/src/test/ui/variance/variance-trait-object-bound.stderr b/src/test/ui/variance/variance-trait-object-bound.stderr deleted file mode 100644 index c86cf1f82..000000000 --- a/src/test/ui/variance/variance-trait-object-bound.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error[E0208]: [-] - --> $DIR/variance-trait-object-bound.rs:14:1 - | -LL | struct TOption<'a> { - | ^^^^^^^^^^^^^^^^^^ - -error: aborting due to previous error - diff --git a/src/test/ui/variance/variance-types-bounds.rs b/src/test/ui/variance/variance-types-bounds.rs deleted file mode 100644 index d1814dd97..000000000 --- a/src/test/ui/variance/variance-types-bounds.rs +++ /dev/null @@ -1,43 +0,0 @@ -// Test that we correctly infer variance for type parameters in -// various types and traits. - -#![feature(rustc_attrs)] - -#[rustc_variance] -struct TestImm { //~ ERROR [+, +] - x: A, - y: B, -} - -#[rustc_variance] -struct TestMut { //~ ERROR [+, o] - x: A, - y: &'static mut B, -} - -#[rustc_variance] -struct TestIndirect { //~ ERROR [+, o] - m: TestMut -} - -#[rustc_variance] -struct TestIndirect2 { //~ ERROR [o, o] - n: TestMut, - m: TestMut -} - -trait Getter { - fn get(&self) -> A; -} - -trait Setter { - fn set(&mut self, a: A); -} - -#[rustc_variance] -struct TestObject { //~ ERROR [o, o] - n: Box+Send>, - m: Box+Send>, -} - -fn main() {} diff --git a/src/test/ui/variance/variance-types-bounds.stderr b/src/test/ui/variance/variance-types-bounds.stderr deleted file mode 100644 index dbe8af75d..000000000 --- a/src/test/ui/variance/variance-types-bounds.stderr +++ /dev/null @@ -1,32 +0,0 @@ -error[E0208]: [+, +] - --> $DIR/variance-types-bounds.rs:7:1 - | -LL | struct TestImm { - | ^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [+, o] - --> $DIR/variance-types-bounds.rs:13:1 - | -LL | struct TestMut { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [+, o] - --> $DIR/variance-types-bounds.rs:19:1 - | -LL | struct TestIndirect { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [o, o] - --> $DIR/variance-types-bounds.rs:24:1 - | -LL | struct TestIndirect2 { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [o, o] - --> $DIR/variance-types-bounds.rs:38:1 - | -LL | struct TestObject { - | ^^^^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to 5 previous errors - diff --git a/src/test/ui/variance/variance-types.rs b/src/test/ui/variance/variance-types.rs deleted file mode 100644 index b9b6d9c9b..000000000 --- a/src/test/ui/variance/variance-types.rs +++ /dev/null @@ -1,41 +0,0 @@ -#![allow(dead_code)] -#![feature(rustc_attrs)] - -use std::cell::Cell; - -// Check that a type parameter which is only used in a trait bound is -// not considered bivariant. - -#[rustc_variance] -struct InvariantMut<'a,A:'a,B:'a> { //~ ERROR [-, o, o] - t: &'a mut (A,B) -} - -#[rustc_variance] -struct InvariantCell { //~ ERROR [o] - t: Cell -} - -#[rustc_variance] -struct InvariantIndirect { //~ ERROR [o] - t: InvariantCell -} - -#[rustc_variance] -struct Covariant { //~ ERROR [+] - t: A, u: fn() -> A -} - -#[rustc_variance] -struct Contravariant { //~ ERROR [-] - t: fn(A) -} - -#[rustc_variance] -enum Enum { //~ ERROR [+, -, o] - Foo(Covariant), - Bar(Contravariant), - Zed(Covariant,Contravariant) -} - -pub fn main() { } diff --git a/src/test/ui/variance/variance-types.stderr b/src/test/ui/variance/variance-types.stderr deleted file mode 100644 index 8358b18b7..000000000 --- a/src/test/ui/variance/variance-types.stderr +++ /dev/null @@ -1,38 +0,0 @@ -error[E0208]: [-, o, o] - --> $DIR/variance-types.rs:10:1 - | -LL | struct InvariantMut<'a,A:'a,B:'a> { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [o] - --> $DIR/variance-types.rs:15:1 - | -LL | struct InvariantCell { - | ^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [o] - --> $DIR/variance-types.rs:20:1 - | -LL | struct InvariantIndirect { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [+] - --> $DIR/variance-types.rs:25:1 - | -LL | struct Covariant { - | ^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [-] - --> $DIR/variance-types.rs:30:1 - | -LL | struct Contravariant { - | ^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0208]: [+, -, o] - --> $DIR/variance-types.rs:35:1 - | -LL | enum Enum { - | ^^^^^^^^^^^^^^^^ - -error: aborting due to 6 previous errors - diff --git a/src/test/ui/variance/variance-unused-region-param.rs b/src/test/ui/variance/variance-unused-region-param.rs deleted file mode 100644 index f0e4e03c9..000000000 --- a/src/test/ui/variance/variance-unused-region-param.rs +++ /dev/null @@ -1,7 +0,0 @@ -// Test that we report an error for unused type parameters in types. - -struct SomeStruct<'a> { x: u32 } //~ ERROR parameter `'a` is never used -enum SomeEnum<'a> { Nothing } //~ ERROR parameter `'a` is never used -trait SomeTrait<'a> { fn foo(&self); } // OK on traits. - -fn main() {} diff --git a/src/test/ui/variance/variance-unused-region-param.stderr b/src/test/ui/variance/variance-unused-region-param.stderr deleted file mode 100644 index 7c7ec40ba..000000000 --- a/src/test/ui/variance/variance-unused-region-param.stderr +++ /dev/null @@ -1,19 +0,0 @@ -error[E0392]: parameter `'a` is never used - --> $DIR/variance-unused-region-param.rs:3:19 - | -LL | struct SomeStruct<'a> { x: u32 } - | ^^ unused parameter - | - = help: consider removing `'a`, referring to it in a field, or using a marker such as `PhantomData` - -error[E0392]: parameter `'a` is never used - --> $DIR/variance-unused-region-param.rs:4:15 - | -LL | enum SomeEnum<'a> { Nothing } - | ^^ unused parameter - | - = help: consider removing `'a`, referring to it in a field, or using a marker such as `PhantomData` - -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0392`. diff --git a/src/test/ui/variance/variance-unused-type-param.rs b/src/test/ui/variance/variance-unused-type-param.rs deleted file mode 100644 index d11140643..000000000 --- a/src/test/ui/variance/variance-unused-type-param.rs +++ /dev/null @@ -1,28 +0,0 @@ -#![allow(dead_code)] - -// Test that we report an error for unused type parameters in types and traits, -// and that we offer a helpful suggestion. - -struct SomeStruct { x: u32 } -//~^ ERROR parameter `A` is never used - -enum SomeEnum { Nothing } -//~^ ERROR parameter `A` is never used - -// Here T might *appear* used, but in fact it isn't. -enum ListCell { -//~^ ERROR parameter `T` is never used - Cons(Box>), - Nil -} - -struct WithBounds {} -//~^ ERROR parameter `T` is never used - -struct WithWhereBounds where T: Sized {} -//~^ ERROR parameter `T` is never used - -struct WithOutlivesBounds {} -//~^ ERROR parameter `T` is never used - -fn main() {} diff --git a/src/test/ui/variance/variance-unused-type-param.stderr b/src/test/ui/variance/variance-unused-type-param.stderr deleted file mode 100644 index e612da118..000000000 --- a/src/test/ui/variance/variance-unused-type-param.stderr +++ /dev/null @@ -1,54 +0,0 @@ -error[E0392]: parameter `A` is never used - --> $DIR/variance-unused-type-param.rs:6:19 - | -LL | struct SomeStruct { x: u32 } - | ^ unused parameter - | - = help: consider removing `A`, referring to it in a field, or using a marker such as `PhantomData` - = help: if you intended `A` to be a const parameter, use `const A: usize` instead - -error[E0392]: parameter `A` is never used - --> $DIR/variance-unused-type-param.rs:9:15 - | -LL | enum SomeEnum { Nothing } - | ^ unused parameter - | - = help: consider removing `A`, referring to it in a field, or using a marker such as `PhantomData` - = help: if you intended `A` to be a const parameter, use `const A: usize` instead - -error[E0392]: parameter `T` is never used - --> $DIR/variance-unused-type-param.rs:13:15 - | -LL | enum ListCell { - | ^ unused parameter - | - = help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData` - = help: if you intended `T` to be a const parameter, use `const T: usize` instead - -error[E0392]: parameter `T` is never used - --> $DIR/variance-unused-type-param.rs:19:19 - | -LL | struct WithBounds {} - | ^ unused parameter - | - = help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData` - -error[E0392]: parameter `T` is never used - --> $DIR/variance-unused-type-param.rs:22:24 - | -LL | struct WithWhereBounds where T: Sized {} - | ^ unused parameter - | - = help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData` - -error[E0392]: parameter `T` is never used - --> $DIR/variance-unused-type-param.rs:25:27 - | -LL | struct WithOutlivesBounds {} - | ^ unused parameter - | - = help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData` - -error: aborting due to 6 previous errors - -For more information about this error, try `rustc --explain E0392`. diff --git a/src/test/ui/variance/variance-use-contravariant-struct-1.rs b/src/test/ui/variance/variance-use-contravariant-struct-1.rs deleted file mode 100644 index 40781fbf0..000000000 --- a/src/test/ui/variance/variance-use-contravariant-struct-1.rs +++ /dev/null @@ -1,15 +0,0 @@ -// Test various uses of structs with distinct variances to make sure -// they permit lifetimes to be approximated as expected. - -struct SomeStruct(fn(T)); - -fn foo<'min,'max>(v: SomeStruct<&'max ()>) - -> SomeStruct<&'min ()> - where 'max : 'min -{ - v - //~^ ERROR lifetime may not live long enough -} - - -fn main() { } diff --git a/src/test/ui/variance/variance-use-contravariant-struct-1.stderr b/src/test/ui/variance/variance-use-contravariant-struct-1.stderr deleted file mode 100644 index 50de7c90f..000000000 --- a/src/test/ui/variance/variance-use-contravariant-struct-1.stderr +++ /dev/null @@ -1,15 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-use-contravariant-struct-1.rs:10:5 - | -LL | fn foo<'min,'max>(v: SomeStruct<&'max ()>) - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | v - | ^ function was supposed to return data with lifetime `'max` but it is returning data with lifetime `'min` - | - = help: consider adding the following bound: `'min: 'max` - -error: aborting due to previous error - diff --git a/src/test/ui/variance/variance-use-contravariant-struct-2.rs b/src/test/ui/variance/variance-use-contravariant-struct-2.rs deleted file mode 100644 index d4b2d0834..000000000 --- a/src/test/ui/variance/variance-use-contravariant-struct-2.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Test various uses of structs with distinct variances to make sure -// they permit lifetimes to be approximated as expected. - -#![allow(dead_code)] -// build-pass (FIXME(62277): could be check-pass?) - -struct SomeStruct(fn(T)); - -fn bar<'min,'max>(v: SomeStruct<&'min ()>) - -> SomeStruct<&'max ()> - where 'max : 'min -{ - v -} - - -fn main() { } diff --git a/src/test/ui/variance/variance-use-covariant-struct-1.rs b/src/test/ui/variance/variance-use-covariant-struct-1.rs deleted file mode 100644 index f0fd7b26e..000000000 --- a/src/test/ui/variance/variance-use-covariant-struct-1.rs +++ /dev/null @@ -1,14 +0,0 @@ -// Test that a covariant struct does not permit the lifetime of a -// reference to be enlarged. - -struct SomeStruct(T); - -fn foo<'min,'max>(v: SomeStruct<&'min ()>) - -> SomeStruct<&'max ()> - where 'max : 'min -{ - v - //~^ ERROR lifetime may not live long enough -} - -fn main() { } diff --git a/src/test/ui/variance/variance-use-covariant-struct-1.stderr b/src/test/ui/variance/variance-use-covariant-struct-1.stderr deleted file mode 100644 index bab858c5a..000000000 --- a/src/test/ui/variance/variance-use-covariant-struct-1.stderr +++ /dev/null @@ -1,15 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-use-covariant-struct-1.rs:10:5 - | -LL | fn foo<'min,'max>(v: SomeStruct<&'min ()>) - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | v - | ^ function was supposed to return data with lifetime `'max` but it is returning data with lifetime `'min` - | - = help: consider adding the following bound: `'min: 'max` - -error: aborting due to previous error - diff --git a/src/test/ui/variance/variance-use-covariant-struct-2.rs b/src/test/ui/variance/variance-use-covariant-struct-2.rs deleted file mode 100644 index ecd2204c9..000000000 --- a/src/test/ui/variance/variance-use-covariant-struct-2.rs +++ /dev/null @@ -1,16 +0,0 @@ -// Test that a covariant struct permits the lifetime of a reference to -// be shortened. - -#![allow(dead_code)] -// build-pass (FIXME(62277): could be check-pass?) - -struct SomeStruct(T); - -fn foo<'min,'max>(v: SomeStruct<&'max ()>) - -> SomeStruct<&'min ()> - where 'max : 'min -{ - v -} - -fn main() { } diff --git a/src/test/ui/variance/variance-use-invariant-struct-1.rs b/src/test/ui/variance/variance-use-invariant-struct-1.rs deleted file mode 100644 index 72f50f345..000000000 --- a/src/test/ui/variance/variance-use-invariant-struct-1.rs +++ /dev/null @@ -1,23 +0,0 @@ -// Test various uses of structs with distinct variances to make sure -// they permit lifetimes to be approximated as expected. - -struct SomeStruct(*mut T); - -fn foo<'min,'max>(v: SomeStruct<&'max ()>) - -> SomeStruct<&'min ()> - where 'max : 'min -{ - v - //~^ ERROR lifetime may not live long enough -} - -fn bar<'min,'max>(v: SomeStruct<&'min ()>) - -> SomeStruct<&'max ()> - where 'max : 'min -{ - v - //~^ ERROR lifetime may not live long enough -} - - -fn main() { } diff --git a/src/test/ui/variance/variance-use-invariant-struct-1.stderr b/src/test/ui/variance/variance-use-invariant-struct-1.stderr deleted file mode 100644 index b9ca6e7d5..000000000 --- a/src/test/ui/variance/variance-use-invariant-struct-1.stderr +++ /dev/null @@ -1,34 +0,0 @@ -error: lifetime may not live long enough - --> $DIR/variance-use-invariant-struct-1.rs:10:5 - | -LL | fn foo<'min,'max>(v: SomeStruct<&'max ()>) - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | v - | ^ function was supposed to return data with lifetime `'max` but it is returning data with lifetime `'min` - | - = help: consider adding the following bound: `'min: 'max` - = note: requirement occurs because of the type `SomeStruct<&()>`, which makes the generic argument `&()` invariant - = note: the struct `SomeStruct` is invariant over the parameter `T` - = help: see for more information about variance - -error: lifetime may not live long enough - --> $DIR/variance-use-invariant-struct-1.rs:18:5 - | -LL | fn bar<'min,'max>(v: SomeStruct<&'min ()>) - | ---- ---- lifetime `'max` defined here - | | - | lifetime `'min` defined here -... -LL | v - | ^ function was supposed to return data with lifetime `'max` but it is returning data with lifetime `'min` - | - = help: consider adding the following bound: `'min: 'max` - = note: requirement occurs because of the type `SomeStruct<&()>`, which makes the generic argument `&()` invariant - = note: the struct `SomeStruct` is invariant over the parameter `T` - = help: see for more information about variance - -error: aborting due to 2 previous errors - -- cgit v1.2.3