diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2022-06-15 11:02:46 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2022-06-15 17:28:16 -0400 |
| commit | b39ba21fcbf262b94bc8b7c20310fc7fb923d53c (patch) | |
| tree | c2d9bf0b828c8cd785285857a7a9f42b1c6bf328 | |
| parent | ad25ee09c70e3c87cc88cf93496dd97ef971bab2 (diff) | |
| download | rust-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.rs | 18 | ||||
| -rw-r--r-- | src/test/ui/regions/forall-wf-ref-reflexive.stderr | 8 | ||||
| -rw-r--r-- | src/test/ui/regions/forall-wf-reflexive.rs | 15 |
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() {} |
