mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-04 02:54:00 +00:00
Rollup merge of #78121 - LeSeulArtichaut:issue-78115, r=tmandry
Do not ICE on pattern that uses a binding multiple times in generator Fixes #78115. r? @tmandry
This commit is contained in:
commit
21df410a62
@ -250,10 +250,7 @@ impl<'a, 'tcx> Visitor<'tcx> for InteriorVisitor<'a, 'tcx> {
|
||||
let mut scope_var_ids =
|
||||
self.guard_bindings.pop().expect("should have pushed at least one earlier");
|
||||
for var_id in scope_var_ids.drain(..) {
|
||||
assert!(
|
||||
self.guard_bindings_set.remove(&var_id),
|
||||
"variable should be placed in scope earlier"
|
||||
);
|
||||
self.guard_bindings_set.remove(&var_id);
|
||||
}
|
||||
}
|
||||
self.visit_expr(body);
|
||||
|
19
src/test/ui/issues/issue-78115.rs
Normal file
19
src/test/ui/issues/issue-78115.rs
Normal file
@ -0,0 +1,19 @@
|
||||
// Regression test for issue #78115: "ICE: variable should be placed in scope earlier"
|
||||
|
||||
// check-pass
|
||||
// edition:2018
|
||||
|
||||
#[allow(dead_code)]
|
||||
struct Foo {
|
||||
a: ()
|
||||
}
|
||||
|
||||
async fn _bar() {
|
||||
let foo = Foo { a: () };
|
||||
match foo {
|
||||
Foo { a: _a } | Foo { a: _a } if true => {}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
Loading…
Reference in New Issue
Block a user