diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
commit | 64d98f8ee037282c35007b64c2649055c56af1db (patch) | |
tree | 5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /tests/ui/traits/object | |
parent | Adding debian version 1.67.1+dfsg1-1. (diff) | |
download | rustc-64d98f8ee037282c35007b64c2649055c56af1db.tar.xz rustc-64d98f8ee037282c35007b64c2649055c56af1db.zip |
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | tests/ui/traits/object-does-not-impl-trait.rs (renamed from src/test/ui/traits/object-does-not-impl-trait.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object-does-not-impl-trait.stderr (renamed from src/test/ui/traits/object-does-not-impl-trait.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object-one-type-two-traits.rs (renamed from src/test/ui/traits/object-one-type-two-traits.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/auto-dedup-in-impl.rs (renamed from src/test/ui/traits/object/auto-dedup-in-impl.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/auto-dedup-in-impl.stderr (renamed from src/test/ui/traits/object/auto-dedup-in-impl.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/auto-dedup.rs (renamed from src/test/ui/traits/object/auto-dedup.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/bounds-cycle-1.rs (renamed from src/test/ui/traits/object/bounds-cycle-1.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/bounds-cycle-2.rs (renamed from src/test/ui/traits/object/bounds-cycle-2.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/bounds-cycle-3.rs (renamed from src/test/ui/traits/object/bounds-cycle-3.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/bounds-cycle-4.rs (renamed from src/test/ui/traits/object/bounds-cycle-4.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/enforce-supertrait-projection.rs (renamed from src/test/ui/traits/object/enforce-supertrait-projection.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/enforce-supertrait-projection.stderr (renamed from src/test/ui/traits/object/enforce-supertrait-projection.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/exclusion.rs (renamed from src/test/ui/traits/object/exclusion.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/generics.rs (renamed from src/test/ui/traits/object/generics.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/issue-33140-traitobject-crate.rs (renamed from src/test/ui/traits/object/issue-33140-traitobject-crate.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/issue-33140-traitobject-crate.stderr (renamed from src/test/ui/traits/object/issue-33140-traitobject-crate.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/issue-44454-1.rs | 22 | ||||
-rw-r--r-- | tests/ui/traits/object/issue-44454-1.stderr | 10 | ||||
-rw-r--r-- | tests/ui/traits/object/issue-44454-2.rs | 22 | ||||
-rw-r--r-- | tests/ui/traits/object/issue-44454-2.stderr | 17 | ||||
-rw-r--r-- | tests/ui/traits/object/issue-44454-3.rs | 33 | ||||
-rw-r--r-- | tests/ui/traits/object/issue-44454-3.stderr | 11 | ||||
-rw-r--r-- | tests/ui/traits/object/lifetime-first.rs (renamed from src/test/ui/traits/object/lifetime-first.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/macro-matcher.rs (renamed from src/test/ui/traits/object/macro-matcher.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/macro-matcher.stderr (renamed from src/test/ui/traits/object/macro-matcher.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/safety.rs (renamed from src/test/ui/traits/object/safety.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/safety.stderr (renamed from src/test/ui/traits/object/safety.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/supertrait-lifetime-bound.rs (renamed from src/test/ui/traits/object/supertrait-lifetime-bound.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/supertrait-lifetime-bound.stderr (renamed from src/test/ui/traits/object/supertrait-lifetime-bound.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/vs-lifetime-2.rs (renamed from src/test/ui/traits/object/vs-lifetime-2.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/vs-lifetime-2.stderr (renamed from src/test/ui/traits/object/vs-lifetime-2.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/vs-lifetime.rs (renamed from src/test/ui/traits/object/vs-lifetime.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/vs-lifetime.stderr (renamed from src/test/ui/traits/object/vs-lifetime.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/with-lifetime-bound.rs (renamed from src/test/ui/traits/object/with-lifetime-bound.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/with-self-in-projection-output-bad.rs (renamed from src/test/ui/traits/object/with-self-in-projection-output-bad.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/with-self-in-projection-output-bad.stderr (renamed from src/test/ui/traits/object/with-self-in-projection-output-bad.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/with-self-in-projection-output-good.rs (renamed from src/test/ui/traits/object/with-self-in-projection-output-good.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs (renamed from src/test/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs) | 0 | ||||
-rw-r--r-- | tests/ui/traits/objects-owned-object-borrowed-method-headerless.rs (renamed from src/test/ui/traits/objects-owned-object-borrowed-method-headerless.rs) | 0 |
39 files changed, 115 insertions, 0 deletions
diff --git a/src/test/ui/traits/object-does-not-impl-trait.rs b/tests/ui/traits/object-does-not-impl-trait.rs index b3b679813..b3b679813 100644 --- a/src/test/ui/traits/object-does-not-impl-trait.rs +++ b/tests/ui/traits/object-does-not-impl-trait.rs diff --git a/src/test/ui/traits/object-does-not-impl-trait.stderr b/tests/ui/traits/object-does-not-impl-trait.stderr index f1dd508a4..f1dd508a4 100644 --- a/src/test/ui/traits/object-does-not-impl-trait.stderr +++ b/tests/ui/traits/object-does-not-impl-trait.stderr diff --git a/src/test/ui/traits/object-one-type-two-traits.rs b/tests/ui/traits/object-one-type-two-traits.rs index 86a2094ee..86a2094ee 100644 --- a/src/test/ui/traits/object-one-type-two-traits.rs +++ b/tests/ui/traits/object-one-type-two-traits.rs diff --git a/src/test/ui/traits/object/auto-dedup-in-impl.rs b/tests/ui/traits/object/auto-dedup-in-impl.rs index 85698f194..85698f194 100644 --- a/src/test/ui/traits/object/auto-dedup-in-impl.rs +++ b/tests/ui/traits/object/auto-dedup-in-impl.rs diff --git a/src/test/ui/traits/object/auto-dedup-in-impl.stderr b/tests/ui/traits/object/auto-dedup-in-impl.stderr index 5f13c7813..5f13c7813 100644 --- a/src/test/ui/traits/object/auto-dedup-in-impl.stderr +++ b/tests/ui/traits/object/auto-dedup-in-impl.stderr diff --git a/src/test/ui/traits/object/auto-dedup.rs b/tests/ui/traits/object/auto-dedup.rs index 39d25eb7f..39d25eb7f 100644 --- a/src/test/ui/traits/object/auto-dedup.rs +++ b/tests/ui/traits/object/auto-dedup.rs diff --git a/src/test/ui/traits/object/bounds-cycle-1.rs b/tests/ui/traits/object/bounds-cycle-1.rs index 314676492..314676492 100644 --- a/src/test/ui/traits/object/bounds-cycle-1.rs +++ b/tests/ui/traits/object/bounds-cycle-1.rs diff --git a/src/test/ui/traits/object/bounds-cycle-2.rs b/tests/ui/traits/object/bounds-cycle-2.rs index 4c1df3805..4c1df3805 100644 --- a/src/test/ui/traits/object/bounds-cycle-2.rs +++ b/tests/ui/traits/object/bounds-cycle-2.rs diff --git a/src/test/ui/traits/object/bounds-cycle-3.rs b/tests/ui/traits/object/bounds-cycle-3.rs index 55726a5ae..55726a5ae 100644 --- a/src/test/ui/traits/object/bounds-cycle-3.rs +++ b/tests/ui/traits/object/bounds-cycle-3.rs diff --git a/src/test/ui/traits/object/bounds-cycle-4.rs b/tests/ui/traits/object/bounds-cycle-4.rs index f83cb75c7..f83cb75c7 100644 --- a/src/test/ui/traits/object/bounds-cycle-4.rs +++ b/tests/ui/traits/object/bounds-cycle-4.rs diff --git a/src/test/ui/traits/object/enforce-supertrait-projection.rs b/tests/ui/traits/object/enforce-supertrait-projection.rs index 2c9b41eea..2c9b41eea 100644 --- a/src/test/ui/traits/object/enforce-supertrait-projection.rs +++ b/tests/ui/traits/object/enforce-supertrait-projection.rs diff --git a/src/test/ui/traits/object/enforce-supertrait-projection.stderr b/tests/ui/traits/object/enforce-supertrait-projection.stderr index cbf093866..cbf093866 100644 --- a/src/test/ui/traits/object/enforce-supertrait-projection.stderr +++ b/tests/ui/traits/object/enforce-supertrait-projection.stderr diff --git a/src/test/ui/traits/object/exclusion.rs b/tests/ui/traits/object/exclusion.rs index 766dceeaf..766dceeaf 100644 --- a/src/test/ui/traits/object/exclusion.rs +++ b/tests/ui/traits/object/exclusion.rs diff --git a/src/test/ui/traits/object/generics.rs b/tests/ui/traits/object/generics.rs index 5a4a6aecc..5a4a6aecc 100644 --- a/src/test/ui/traits/object/generics.rs +++ b/tests/ui/traits/object/generics.rs diff --git a/src/test/ui/traits/object/issue-33140-traitobject-crate.rs b/tests/ui/traits/object/issue-33140-traitobject-crate.rs index 8abd92da3..8abd92da3 100644 --- a/src/test/ui/traits/object/issue-33140-traitobject-crate.rs +++ b/tests/ui/traits/object/issue-33140-traitobject-crate.rs diff --git a/src/test/ui/traits/object/issue-33140-traitobject-crate.stderr b/tests/ui/traits/object/issue-33140-traitobject-crate.stderr index 525401f9d..525401f9d 100644 --- a/src/test/ui/traits/object/issue-33140-traitobject-crate.stderr +++ b/tests/ui/traits/object/issue-33140-traitobject-crate.stderr diff --git a/tests/ui/traits/object/issue-44454-1.rs b/tests/ui/traits/object/issue-44454-1.rs new file mode 100644 index 000000000..bbaf3188a --- /dev/null +++ b/tests/ui/traits/object/issue-44454-1.rs @@ -0,0 +1,22 @@ +// Taken from https://github.com/rust-lang/rust/issues/44454#issue-256435333 + +trait Animal<X>: 'static {} + +fn foo<Y, X>() +where + Y: Animal<X> + ?Sized, +{ + // `Y` implements `Animal<X>` so `Y` is 'static. + baz::<Y>() +} + +fn bar<'a>(_arg: &'a i32) { + foo::<dyn Animal<&'a i32>, &'a i32>() //~ ERROR: lifetime may not live long enough +} + +fn baz<T: 'static + ?Sized>() {} + +fn main() { + let a = 5; + bar(&a); +} diff --git a/tests/ui/traits/object/issue-44454-1.stderr b/tests/ui/traits/object/issue-44454-1.stderr new file mode 100644 index 000000000..859487f50 --- /dev/null +++ b/tests/ui/traits/object/issue-44454-1.stderr @@ -0,0 +1,10 @@ +error: lifetime may not live long enough + --> $DIR/issue-44454-1.rs:14:5 + | +LL | fn bar<'a>(_arg: &'a i32) { + | -- lifetime `'a` defined here +LL | foo::<dyn Animal<&'a i32>, &'a i32>() + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` + +error: aborting due to previous error + diff --git a/tests/ui/traits/object/issue-44454-2.rs b/tests/ui/traits/object/issue-44454-2.rs new file mode 100644 index 000000000..f5178bcdb --- /dev/null +++ b/tests/ui/traits/object/issue-44454-2.rs @@ -0,0 +1,22 @@ +// Taken from https://github.com/rust-lang/rust/issues/44454#issuecomment-1175925928 + +trait Trait<ARG: 'static>: 'static { + type Assoc: AsRef<str>; +} + +fn hr<T: ?Sized, ARG>(x: T::Assoc) -> Box<dyn AsRef<str> + 'static> +where + T: Trait<ARG> +{ + Box::new(x) +} + +fn extend_lt<'a>(x: &'a str) -> Box<dyn AsRef<str> + 'static> { + type DynTrait = dyn for<'a> Trait<&'a str, Assoc = &'a str>; + hr::<DynTrait, _>(x) //~ ERROR: borrowed data escapes outside of function +} + +fn main() { + let extended = extend_lt(&String::from("hello")); + println!("{}", extended.as_ref().as_ref()); +} diff --git a/tests/ui/traits/object/issue-44454-2.stderr b/tests/ui/traits/object/issue-44454-2.stderr new file mode 100644 index 000000000..7f574769b --- /dev/null +++ b/tests/ui/traits/object/issue-44454-2.stderr @@ -0,0 +1,17 @@ +error[E0521]: borrowed data escapes outside of function + --> $DIR/issue-44454-2.rs:16:5 + | +LL | fn extend_lt<'a>(x: &'a str) -> Box<dyn AsRef<str> + 'static> { + | -- - `x` is a reference that is only valid in the function body + | | + | lifetime `'a` defined here +LL | type DynTrait = dyn for<'a> Trait<&'a str, Assoc = &'a str>; +LL | hr::<DynTrait, _>(x) + | ^^^^^^^^^^^^^^^^^^^^ + | | + | `x` escapes the function body here + | argument requires that `'a` must outlive `'static` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0521`. diff --git a/tests/ui/traits/object/issue-44454-3.rs b/tests/ui/traits/object/issue-44454-3.rs new file mode 100644 index 000000000..bff727035 --- /dev/null +++ b/tests/ui/traits/object/issue-44454-3.rs @@ -0,0 +1,33 @@ +// Taken from https://github.com/rust-lang/rust/issues/44454#issuecomment-1332781290 + +use std::any::Any; + +trait Animal<X>: 'static {} + +trait Projector { + type Foo; +} + +impl<X> Projector for dyn Animal<X> { + type Foo = X; +} + +fn make_static<'a, T>(t: &'a T) -> &'static T { + let x: <dyn Animal<&'a T> as Projector>::Foo = t; + let any = generic::<dyn Animal<&'a T>, &'a T>(x); + //~^ ERROR: lifetime may not live long enough + any.downcast_ref::<&'static T>().unwrap() +} + +fn generic<T: Projector + Animal<U> + ?Sized, U>(x: <T as Projector>::Foo) -> Box<dyn Any> { + make_static_any(x) +} + +fn make_static_any<U: 'static>(u: U) -> Box<dyn Any> { + Box::new(u) +} + +fn main() { + let a = make_static(&"salut".to_string()); + println!("{}", *a); +} diff --git a/tests/ui/traits/object/issue-44454-3.stderr b/tests/ui/traits/object/issue-44454-3.stderr new file mode 100644 index 000000000..294684d26 --- /dev/null +++ b/tests/ui/traits/object/issue-44454-3.stderr @@ -0,0 +1,11 @@ +error: lifetime may not live long enough + --> $DIR/issue-44454-3.rs:17:15 + | +LL | fn make_static<'a, T>(t: &'a T) -> &'static T { + | -- lifetime `'a` defined here +LL | let x: <dyn Animal<&'a T> as Projector>::Foo = t; +LL | let any = generic::<dyn Animal<&'a T>, &'a T>(x); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` + +error: aborting due to previous error + diff --git a/src/test/ui/traits/object/lifetime-first.rs b/tests/ui/traits/object/lifetime-first.rs index 33757cb7c..33757cb7c 100644 --- a/src/test/ui/traits/object/lifetime-first.rs +++ b/tests/ui/traits/object/lifetime-first.rs diff --git a/src/test/ui/traits/object/macro-matcher.rs b/tests/ui/traits/object/macro-matcher.rs index 910978749..910978749 100644 --- a/src/test/ui/traits/object/macro-matcher.rs +++ b/tests/ui/traits/object/macro-matcher.rs diff --git a/src/test/ui/traits/object/macro-matcher.stderr b/tests/ui/traits/object/macro-matcher.stderr index 6d1e236c0..6d1e236c0 100644 --- a/src/test/ui/traits/object/macro-matcher.stderr +++ b/tests/ui/traits/object/macro-matcher.stderr diff --git a/src/test/ui/traits/object/safety.rs b/tests/ui/traits/object/safety.rs index f43d332d6..f43d332d6 100644 --- a/src/test/ui/traits/object/safety.rs +++ b/tests/ui/traits/object/safety.rs diff --git a/src/test/ui/traits/object/safety.stderr b/tests/ui/traits/object/safety.stderr index dc18adeaf..dc18adeaf 100644 --- a/src/test/ui/traits/object/safety.stderr +++ b/tests/ui/traits/object/safety.stderr diff --git a/src/test/ui/traits/object/supertrait-lifetime-bound.rs b/tests/ui/traits/object/supertrait-lifetime-bound.rs index f929a9bb6..f929a9bb6 100644 --- a/src/test/ui/traits/object/supertrait-lifetime-bound.rs +++ b/tests/ui/traits/object/supertrait-lifetime-bound.rs diff --git a/src/test/ui/traits/object/supertrait-lifetime-bound.stderr b/tests/ui/traits/object/supertrait-lifetime-bound.stderr index ed2f86243..ed2f86243 100644 --- a/src/test/ui/traits/object/supertrait-lifetime-bound.stderr +++ b/tests/ui/traits/object/supertrait-lifetime-bound.stderr diff --git a/src/test/ui/traits/object/vs-lifetime-2.rs b/tests/ui/traits/object/vs-lifetime-2.rs index 0b33dc7f6..0b33dc7f6 100644 --- a/src/test/ui/traits/object/vs-lifetime-2.rs +++ b/tests/ui/traits/object/vs-lifetime-2.rs diff --git a/src/test/ui/traits/object/vs-lifetime-2.stderr b/tests/ui/traits/object/vs-lifetime-2.stderr index 9b8e793df..9b8e793df 100644 --- a/src/test/ui/traits/object/vs-lifetime-2.stderr +++ b/tests/ui/traits/object/vs-lifetime-2.stderr diff --git a/src/test/ui/traits/object/vs-lifetime.rs b/tests/ui/traits/object/vs-lifetime.rs index 14ae67cff..14ae67cff 100644 --- a/src/test/ui/traits/object/vs-lifetime.rs +++ b/tests/ui/traits/object/vs-lifetime.rs diff --git a/src/test/ui/traits/object/vs-lifetime.stderr b/tests/ui/traits/object/vs-lifetime.stderr index 224465228..224465228 100644 --- a/src/test/ui/traits/object/vs-lifetime.stderr +++ b/tests/ui/traits/object/vs-lifetime.stderr diff --git a/src/test/ui/traits/object/with-lifetime-bound.rs b/tests/ui/traits/object/with-lifetime-bound.rs index 05aab5e3b..05aab5e3b 100644 --- a/src/test/ui/traits/object/with-lifetime-bound.rs +++ b/tests/ui/traits/object/with-lifetime-bound.rs diff --git a/src/test/ui/traits/object/with-self-in-projection-output-bad.rs b/tests/ui/traits/object/with-self-in-projection-output-bad.rs index f34fa80a0..f34fa80a0 100644 --- a/src/test/ui/traits/object/with-self-in-projection-output-bad.rs +++ b/tests/ui/traits/object/with-self-in-projection-output-bad.rs diff --git a/src/test/ui/traits/object/with-self-in-projection-output-bad.stderr b/tests/ui/traits/object/with-self-in-projection-output-bad.stderr index 641bfe236..641bfe236 100644 --- a/src/test/ui/traits/object/with-self-in-projection-output-bad.stderr +++ b/tests/ui/traits/object/with-self-in-projection-output-bad.stderr diff --git a/src/test/ui/traits/object/with-self-in-projection-output-good.rs b/tests/ui/traits/object/with-self-in-projection-output-good.rs index d1b7bf6c2..d1b7bf6c2 100644 --- a/src/test/ui/traits/object/with-self-in-projection-output-good.rs +++ b/tests/ui/traits/object/with-self-in-projection-output-good.rs diff --git a/src/test/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs b/tests/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs index 39e817168..39e817168 100644 --- a/src/test/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs +++ b/tests/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs diff --git a/src/test/ui/traits/objects-owned-object-borrowed-method-headerless.rs b/tests/ui/traits/objects-owned-object-borrowed-method-headerless.rs index fce1341fc..fce1341fc 100644 --- a/src/test/ui/traits/objects-owned-object-borrowed-method-headerless.rs +++ b/tests/ui/traits/objects-owned-object-borrowed-method-headerless.rs |