aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2021-04-01 00:05:50 +0100
committerGitHub <noreply@github.com>2021-04-01 07:05:50 +0800
commit1947a21824f3cbbb7a3c8267a15fa9c80b91fc59 (patch)
treea0444c947b3aa53ee0791d2ad728264498a8016b
parent6335b5fd8a6bb874e1c15e83abcaf86a1304fa1a (diff)
downloadtracifyjs-1947a21824f3cbbb7a3c8267a15fa9c80b91fc59.tar.gz
tracifyjs-1947a21824f3cbbb7a3c8267a15fa9c80b91fc59.zip
fix corner case in `properties` (#4830)
fixes #4829
-rw-r--r--lib/compress.js16
-rw-r--r--test/compress/classes.js24
2 files changed, 32 insertions, 8 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 24446b25..5aeb910e 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -11457,15 +11457,15 @@ merge(Compressor.prototype, {
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 }),
});
}
}
diff --git a/test/compress/classes.js b/test/compress/classes.js
index a940e708..b428e0e1 100644
--- a/test/compress/classes.js
+++ b/test/compress/classes.js
@@ -1344,3 +1344,27 @@ issue_4821_2: {
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"
+}