This commit is contained in:
Ayaz Hafiz 2022-08-10 14:56:15 -07:00
parent 6bcd682dde
commit 991b99250c
No known key found for this signature in database
GPG Key ID: 0E2A37416A25EF58

View File

@ -838,23 +838,21 @@ fn fix_values_captured_in_closure_defs(
// Really unfortunate we make a lot of clones here, can this be done more efficiently? // Really unfortunate we make a lot of clones here, can this be done more efficiently?
let mut total_capture_set = Vec::default(); let mut total_capture_set = Vec::default();
for def in defs.iter_mut() { for def in defs.iter_mut() {
match &def.loc_expr.value { if let Expr::Closure(ClosureData {
Expr::Closure(ClosureData { captured_symbols, ..
captured_symbols, .. }) = &def.loc_expr.value
}) => total_capture_set.extend(captured_symbols.iter().copied()), {
_ => {} total_capture_set.extend(captured_symbols.iter().copied());
} }
} }
total_capture_set.sort_by_key(|(sym, _)| *sym); total_capture_set.sort_by_key(|(sym, _)| *sym);
total_capture_set.dedup_by_key(|(sym, _)| *sym); total_capture_set.dedup_by_key(|(sym, _)| *sym);
for def in defs.iter_mut() { for def in defs.iter_mut() {
match &mut def.loc_expr.value { if let Expr::Closure(ClosureData {
Expr::Closure(ClosureData { captured_symbols, ..
captured_symbols, .. }) = &mut def.loc_expr.value
}) => { {
*captured_symbols = total_capture_set.clone(); *captured_symbols = total_capture_set.clone();
}
_ => {}
} }
} }
} }