Skip to content

Commit

Permalink
Rollup merge of #125054 - nnethercote:fix-124973, r=compiler-errors
Browse files Browse the repository at this point in the history
Handle `ReVar` in `note_and_explain_region`

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

r? `@lcnr`
  • Loading branch information
matthiaskrgr committed May 23, 2024
2 parents 96134e1 + 5f4424b commit 72fd85c
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 72fd85c

Please sign in to comment.