if (prop.key != key) continue;
if (!all(props, can_hoist_property)) break;
if (!safe_to_flatten(prop.value, compressor)) break;
+ props = props.map(function(prop) {
+ return prop.value;
+ });
+ if (prop instanceof AST_ObjectMethod && prop.value instanceof AST_Function) {
+ props[i] = make_node(AST_Arrow, prop.value, prop.value);
+ }
return make_node(AST_Sub, this, {
- expression: make_node(AST_Array, expr, {
- elements: props.map(function(prop) {
- return prop.value;
- })
- }),
- property: make_node(AST_Number, this, {
- value: i
- })
+ expression: make_node(AST_Array, expr, { elements: props }),
+ property: make_node(AST_Number, this, { value: i }),
});
}
}
expect_stdout: "function"
node_version: ">=12"
}
+
+issue_4829: {
+ options = {
+ properties: true,
+ }
+ input: {
+ "use strict";
+ try {
+ class A extends { f(){} }.f {}
+ } catch (e) {
+ console.log("PASS");
+ }
+ }
+ expect: {
+ "use strict";
+ try {
+ class A extends [ () => {} ][0] {}
+ } catch (e) {
+ console.log("PASS");
+ }
+ }
+ expect_stdout: "PASS"
+ node_version: ">=4"
+}