about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2023-10-24 10:12:49 +0000
committerOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2023-10-27 13:05:49 +0000
commitbb90c4bf3593d5edf61f16c37ca9c285af0b47f4 (patch)
tree41e0a934f6b321e394440e896ea5dfe420c64c8e
parent62237440782574b47f2a325c804e4b8cf77569e7 (diff)
downloadrust-bb90c4bf3593d5edf61f16c37ca9c285af0b47f4.tar.gz
rust-bb90c4bf3593d5edf61f16c37ca9c285af0b47f4.zip
Use targetted diagnostic for borrow across yield error
-rw-r--r--compiler/rustc_borrowck/src/borrowck_errors.rs3
-rw-r--r--tests/ui/coroutine/self_referential_gen_block.rs2
-rw-r--r--tests/ui/coroutine/self_referential_gen_block.stderr2
3 files changed, 4 insertions, 3 deletions
diff --git a/compiler/rustc_borrowck/src/borrowck_errors.rs b/compiler/rustc_borrowck/src/borrowck_errors.rs
index 2ceec1b5658..6731ef12306 100644
--- a/compiler/rustc_borrowck/src/borrowck_errors.rs
+++ b/compiler/rustc_borrowck/src/borrowck_errors.rs
@@ -373,11 +373,12 @@ impl<'cx, 'tcx> crate::MirBorrowckCtxt<'cx, 'tcx> {
         span: Span,
         yield_span: Span,
     ) -> DiagnosticBuilder<'tcx, ErrorGuaranteed> {
+        let coroutine_kind = self.body.coroutine.as_ref().unwrap().coroutine_kind;
         let mut err = struct_span_err!(
             self,
             span,
             E0626,
-            "borrow may still be in use when coroutine yields",
+            "borrow may still be in use when {coroutine_kind:#} yields",
         );
         err.span_label(yield_span, "possible yield occurs here");
         err
diff --git a/tests/ui/coroutine/self_referential_gen_block.rs b/tests/ui/coroutine/self_referential_gen_block.rs
index 538d436ed14..14daa2e9c35 100644
--- a/tests/ui/coroutine/self_referential_gen_block.rs
+++ b/tests/ui/coroutine/self_referential_gen_block.rs
@@ -6,7 +6,7 @@ fn main() {
     let mut x = {
         let mut x = gen {
             let y = 42;
-            let z = &y; //~ ERROR: borrow may still be in use when coroutine yields
+            let z = &y; //~ ERROR: borrow may still be in use when `gen` block yields
             yield 43;
             panic!("{z}");
         };
diff --git a/tests/ui/coroutine/self_referential_gen_block.stderr b/tests/ui/coroutine/self_referential_gen_block.stderr
index f9cadf8eb04..586f53df8f2 100644
--- a/tests/ui/coroutine/self_referential_gen_block.stderr
+++ b/tests/ui/coroutine/self_referential_gen_block.stderr
@@ -1,4 +1,4 @@
-error[E0626]: borrow may still be in use when coroutine yields
+error[E0626]: borrow may still be in use when `gen` block yields
   --> $DIR/self_referential_gen_block.rs:9:21
    |
 LL |             let z = &y;