fix: 闭包捕获对象键与循环变量绑定

This commit is contained in:
2026-08-11 14:17:45 +08:00
parent 0d75e901ff
commit 33dae0a8c2
8 changed files with 77 additions and 10 deletions
+20 -4
View File
@@ -589,8 +589,16 @@ impl Emitter {
}
Expression::ObjectExpression(o) => {
for prop in &o.properties {
if let oxide_parser::ObjectPropertyKind::ObjectProperty(p) = prop {
self.collect_capture_names_expr(&p.value, ref_set, shadow, out);
match prop {
oxide_parser::ObjectPropertyKind::ObjectProperty(p) => {
if p.computed {
self.collect_capture_names_expr(p.key.to_expression(), ref_set, shadow, out);
}
self.collect_capture_names_expr(&p.value, ref_set, shadow, out);
}
oxide_parser::ObjectPropertyKind::SpreadProperty(spread) => {
self.collect_capture_names_expr(&spread.argument, ref_set, shadow, out);
}
}
}
}
@@ -884,8 +892,16 @@ impl Emitter {
}
Expression::ObjectExpression(o) => {
for prop in &o.properties {
if let oxide_parser::ObjectPropertyKind::ObjectProperty(p) = prop {
self.collect_captured_expr(&p.value, own, out);
match prop {
oxide_parser::ObjectPropertyKind::ObjectProperty(p) => {
if p.computed {
self.collect_captured_expr(p.key.to_expression(), own, out);
}
self.collect_captured_expr(&p.value, own, out);
}
oxide_parser::ObjectPropertyKind::SpreadProperty(spread) => {
self.collect_captured_expr(&spread.argument, own, out);
}
}
}
}