summaryrefslogtreecommitdiffstats
path: root/tests/ui/traits/object
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
commit64d98f8ee037282c35007b64c2649055c56af1db (patch)
tree5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /tests/ui/traits/object
parentAdding debian version 1.67.1+dfsg1-1. (diff)
downloadrustc-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.rs22
-rw-r--r--tests/ui/traits/object/issue-44454-1.stderr10
-rw-r--r--tests/ui/traits/object/issue-44454-2.rs22
-rw-r--r--tests/ui/traits/object/issue-44454-2.stderr17
-rw-r--r--tests/ui/traits/object/issue-44454-3.rs33
-rw-r--r--tests/ui/traits/object/issue-44454-3.stderr11
-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