From b39ba21fcbf262b94bc8b7c20310fc7fb923d53c Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Wed, 15 Jun 2022 11:02:46 -0400 Subject: [PATCH] tests H.R. `T: 'a` bounds proving themselves --- src/test/ui/regions/forall-wf-ref-reflexive.rs | 18 ++++++++++++++++++ .../ui/regions/forall-wf-ref-reflexive.stderr | 8 ++++++++ src/test/ui/regions/forall-wf-reflexive.rs | 15 +++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 src/test/ui/regions/forall-wf-ref-reflexive.rs create mode 100644 src/test/ui/regions/forall-wf-ref-reflexive.stderr create mode 100644 src/test/ui/regions/forall-wf-reflexive.rs 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 000000000000..9c37d72d56b6 --- /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() +where + for<'a> &'a T: 'a, +{ + self_wf2::(); + //~^ 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 000000000000..3d059ccec729 --- /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::(); + | ^^^^^^^^^^^^^^^ + +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 000000000000..8e6b8224b318 --- /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() +where + for<'a> T: 'a, +{ + self_wf1::(); +} + +fn main() {}