about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2022-06-15 11:02:46 -0400
committerNiko Matsakis <niko@alum.mit.edu>2022-06-15 17:28:16 -0400
commitb39ba21fcbf262b94bc8b7c20310fc7fb923d53c (patch)
treec2d9bf0b828c8cd785285857a7a9f42b1c6bf328
parentad25ee09c70e3c87cc88cf93496dd97ef971bab2 (diff)
downloadrust-b39ba21fcbf262b94bc8b7c20310fc7fb923d53c.tar.gz
rust-b39ba21fcbf262b94bc8b7c20310fc7fb923d53c.zip
tests H.R. `T: 'a` bounds proving themselves
-rw-r--r--src/test/ui/regions/forall-wf-ref-reflexive.rs18
-rw-r--r--src/test/ui/regions/forall-wf-ref-reflexive.stderr8
-rw-r--r--src/test/ui/regions/forall-wf-reflexive.rs15
3 files changed, 41 insertions, 0 deletions
diff --git a/src/test/ui/regions/forall-wf-ref-reflexive.rs b/src/test/ui/regions/forall-wf-ref-reflexive.rs
new file mode 100644
index 00000000000..9c37d72d56b
--- /dev/null
+++ b/src/test/ui/regions/forall-wf-ref-reflexive.rs
@@ -0,0 +1,18 @@
+// Test that we consider `for<'a> &'a T: 'a` to be sufficient to prove
+// that `for<'a> &'a T: 'a`.
+//
+// FIXME. Except we don't!
+
+#![allow(warnings)]
+
+fn self_wf2<T>()
+where
+    for<'a> &'a T: 'a,
+{
+    self_wf2::<T>();
+    //~^ ERROR `T` does not live long enough
+    //
+    // FIXME. This ought to be accepted, presumably.
+}
+
+fn main() {}
diff --git a/src/test/ui/regions/forall-wf-ref-reflexive.stderr b/src/test/ui/regions/forall-wf-ref-reflexive.stderr
new file mode 100644
index 00000000000..3d059ccec72
--- /dev/null
+++ b/src/test/ui/regions/forall-wf-ref-reflexive.stderr
@@ -0,0 +1,8 @@
+error: `T` does not live long enough
+  --> $DIR/forall-wf-ref-reflexive.rs:12:5
+   |
+LL |     self_wf2::<T>();
+   |     ^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/regions/forall-wf-reflexive.rs b/src/test/ui/regions/forall-wf-reflexive.rs
new file mode 100644
index 00000000000..8e6b8224b31
--- /dev/null
+++ b/src/test/ui/regions/forall-wf-reflexive.rs
@@ -0,0 +1,15 @@
+// Test that we consider `for<'a> T: 'a` to be sufficient to prove
+// that `for<'a> T: 'a`.
+//
+// check-pass
+
+#![allow(warnings)]
+
+fn self_wf1<T>()
+where
+    for<'a> T: 'a,
+{
+    self_wf1::<T>();
+}
+
+fn main() {}