diff options
| author | Oli Scherer <git-spam-no-reply9815368754983@oli-obk.de> | 2023-10-24 10:12:49 +0000 |
|---|---|---|
| committer | Oli Scherer <git-spam-no-reply9815368754983@oli-obk.de> | 2023-10-27 13:05:49 +0000 |
| commit | bb90c4bf3593d5edf61f16c37ca9c285af0b47f4 (patch) | |
| tree | 41e0a934f6b321e394440e896ea5dfe420c64c8e | |
| parent | 62237440782574b47f2a325c804e4b8cf77569e7 (diff) | |
| download | rust-bb90c4bf3593d5edf61f16c37ca9c285af0b47f4.tar.gz rust-bb90c4bf3593d5edf61f16c37ca9c285af0b47f4.zip | |
Use targetted diagnostic for borrow across yield error
| -rw-r--r-- | compiler/rustc_borrowck/src/borrowck_errors.rs | 3 | ||||
| -rw-r--r-- | tests/ui/coroutine/self_referential_gen_block.rs | 2 | ||||
| -rw-r--r-- | tests/ui/coroutine/self_referential_gen_block.stderr | 2 |
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; |
