From e025306fa050ac593bff366eb1c9bff7bfd00b1d Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Sat, 22 Oct 2022 02:48:36 +0000 Subject: Don't ICE on regions from anonymous_lifetime_in_impl_trait --- src/test/ui/borrowck/anonymous-region-in-apit.rs | 12 ++++++++++++ src/test/ui/borrowck/anonymous-region-in-apit.stderr | 16 ++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/test/ui/borrowck/anonymous-region-in-apit.rs create mode 100644 src/test/ui/borrowck/anonymous-region-in-apit.stderr (limited to 'src') diff --git a/src/test/ui/borrowck/anonymous-region-in-apit.rs b/src/test/ui/borrowck/anonymous-region-in-apit.rs new file mode 100644 index 00000000000..7799a7cb151 --- /dev/null +++ b/src/test/ui/borrowck/anonymous-region-in-apit.rs @@ -0,0 +1,12 @@ +#![feature(anonymous_lifetime_in_impl_trait)] + +trait Foo { + fn bar(self, baz: T); +} + +fn qux(foo: impl Foo<&str>) { + |baz: &str| foo.bar(baz); + //~^ ERROR borrowed data escapes outside of closure +} + +fn main() {} diff --git a/src/test/ui/borrowck/anonymous-region-in-apit.stderr b/src/test/ui/borrowck/anonymous-region-in-apit.stderr new file mode 100644 index 00000000000..9e100f8ac3c --- /dev/null +++ b/src/test/ui/borrowck/anonymous-region-in-apit.stderr @@ -0,0 +1,16 @@ +error[E0521]: borrowed data escapes outside of closure + --> $DIR/anonymous-region-in-apit.rs:8:17 + | +LL | fn qux(foo: impl Foo<&str>) { + | --- lifetime `'2` appears in the type of `foo` +LL | |baz: &str| foo.bar(baz); + | --- - ^^^^^^^^^^^^ + | | | | + | | | `baz` escapes the closure body here + | | | argument requires that `'1` must outlive `'2` + | | let's call the lifetime of this reference `'1` + | `baz` is a reference that is only valid in the closure body + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0521`. -- cgit 1.4.1-3-g733a5