diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-08-24 18:20:20 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-24 18:20:20 +0200 |
| commit | 75b1b69171cf0d270609e76896fbe4c91e67e91d (patch) | |
| tree | faafc4aa04e8a44de663450a8943b4991aed93bf | |
| parent | a0fbfd8d8f5e32dd64fc5a8b9d2ae82649208d02 (diff) | |
| parent | c57ecfae0e131d14676e6d1aa535cb8f17dba80b (diff) | |
| download | rust-75b1b69171cf0d270609e76896fbe4c91e67e91d.tar.gz rust-75b1b69171cf0d270609e76896fbe4c91e67e91d.zip | |
Rollup merge of #100940 - TaKO8Ki:do-not-suggest-adding-bound-to-opaque-type, r=fee1-dead
Do not suggest adding a bound to a opaque type fixes #100442
3 files changed, 29 insertions, 0 deletions
diff --git a/compiler/rustc_borrowck/src/diagnostics/explain_borrow.rs b/compiler/rustc_borrowck/src/diagnostics/explain_borrow.rs index 4c5b32490a6..68f9a7c5007 100644 --- a/compiler/rustc_borrowck/src/diagnostics/explain_borrow.rs +++ b/compiler/rustc_borrowck/src/diagnostics/explain_borrow.rs @@ -281,6 +281,9 @@ impl<'tcx> BorrowExplanation<'tcx> { span: Span, region_name: &RegionName, ) { + if !span.is_desugaring(DesugaringKind::OpaqueTy) { + return; + } if let ConstraintCategory::OpaqueType = category { let suggestable_name = if region_name.was_named() { region_name.name } else { kw::UnderscoreLifetime }; diff --git a/src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.rs b/src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.rs new file mode 100644 index 00000000000..a1e801e3923 --- /dev/null +++ b/src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.rs @@ -0,0 +1,12 @@ +pub trait T {} + +struct S<'a>(&'a ()); + +impl<'a> T for S<'a> {} + +fn foo() -> impl T { + let x = (); + S(&x) //~ ERROR `x` does not live long enough +} + +fn main() {} diff --git a/src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.stderr b/src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.stderr new file mode 100644 index 00000000000..6ea238f302f --- /dev/null +++ b/src/test/ui/regions/do-not-suggest-adding-bound-to-opaque-type.stderr @@ -0,0 +1,14 @@ +error[E0597]: `x` does not live long enough + --> $DIR/do-not-suggest-adding-bound-to-opaque-type.rs:9:7 + | +LL | S(&x) + | --^^- + | | | + | | borrowed value does not live long enough + | opaque type requires that `x` is borrowed for `'static` +LL | } + | - `x` dropped here while still borrowed + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0597`. |
