Skip to content

Commit

Permalink
Unrolled build for rust-lang#125054
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#125054 - nnethercote:fix-124973, r=compiler-errors

Handle `ReVar` in `note_and_explain_region`

PR rust-lang#124918 made this path abort. The added test, from fuzzing, identified that it is reachable.

r? `@lcnr`
  • Loading branch information
rust-timer committed May 23, 2024
2 parents 5293c6a + 5f4424b commit 9297e29
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 1 deletion.
5 changes: 4 additions & 1 deletion compiler/rustc_infer/src/infer/error_reporting/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,10 @@ pub(super) fn note_and_explain_region<'tcx>(

ty::ReError(_) => return,

ty::ReVar(_) | ty::ReBound(..) | ty::ReErased => {
// FIXME(#125431): `ReVar` shouldn't reach here.
ty::ReVar(_) => (format!("lifetime `{region}`"), alt_span),

ty::ReBound(..) | ty::ReErased => {
bug!("unexpected region for note_and_explain_region: {:?}", region);
}
};
Expand Down
8 changes: 8 additions & 0 deletions tests/ui/inference/note-and-explain-ReVar-124973.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
//@ edition:2018

#![feature(c_variadic)]

async unsafe extern "C" fn multiple_named_lifetimes<'a, 'b>(_: u8, ...) {}
//~^ ERROR hidden type for `impl Future<Output = ()>` captures lifetime that does not appear in bounds

fn main() {}
13 changes: 13 additions & 0 deletions tests/ui/inference/note-and-explain-ReVar-124973.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
error[E0700]: hidden type for `impl Future<Output = ()>` captures lifetime that does not appear in bounds
--> $DIR/note-and-explain-ReVar-124973.rs:5:73
|
LL | async unsafe extern "C" fn multiple_named_lifetimes<'a, 'b>(_: u8, ...) {}
| ----------------------------------------------------------------------- ^^
| |
| opaque type defined here
|
= note: hidden type `{async fn body of multiple_named_lifetimes<'a, 'b>()}` captures lifetime `'_`

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0700`.

0 comments on commit 9297e29

Please sign in to comment.