summaryrefslogtreecommitdiffstats
path: root/tests/ui/late-bound-lifetimes
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 18:31:36 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 18:31:36 +0000
commite02c5b5930c2c9ba3e5423fe12e2ef0155017297 (patch)
treefd60ebbbb5299e16e5fca8c773ddb74f764760db /tests/ui/late-bound-lifetimes
parentAdding debian version 1.73.0+dfsg1-1. (diff)
downloadrustc-e02c5b5930c2c9ba3e5423fe12e2ef0155017297.tar.xz
rustc-e02c5b5930c2c9ba3e5423fe12e2ef0155017297.zip
Merging upstream version 1.74.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/late-bound-lifetimes')
-rw-r--r--tests/ui/late-bound-lifetimes/predicate-is-global.rs40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/ui/late-bound-lifetimes/predicate-is-global.rs b/tests/ui/late-bound-lifetimes/predicate-is-global.rs
new file mode 100644
index 000000000..be017a3f9
--- /dev/null
+++ b/tests/ui/late-bound-lifetimes/predicate-is-global.rs
@@ -0,0 +1,40 @@
+// check-pass
+
+trait Foo {
+ type Assoc;
+
+ fn do_it(_: &Self::Assoc)
+ where
+ for<'a> Self: Baz<'a>;
+}
+
+trait Baz<'a>: Foo {}
+
+impl Foo for () {
+ type Assoc = Inherent;
+
+ // Ensure that the `for<'a> Self: Baz<'a>` predicate, which has
+ // a supertrait `for<'a> Self: Foo`, does not cause us to fail
+ // to normalize `Self::Assoc`.
+ fn do_it(x: &Self::Assoc)
+ where
+ for<'a> Self: Baz<'a>,
+ {
+ x.inherent();
+ }
+}
+
+struct Inherent;
+impl Inherent {
+ fn inherent(&self) {}
+}
+
+// This trivial bound doesn't hold, but the unused lifetime tripped up that check after #117589, and
+// showed up in its crater results (in `soa-derive 0.13.0`).
+fn do_it()
+where
+ for<'a> Inherent: Clone,
+{
+}
+
+fn main() {}