aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2021-04-03 15:06:05 +0100
committerGitHub <noreply@github.com>2021-04-03 22:06:05 +0800
commitaed758ed5cc4ac180c92551ba80f4997f81d1dc4 (patch)
tree468cfa133f734df674767df9e065f6cc763e7e3b
parent0df028187d20b83e52d1829e14783284c5d09ad5 (diff)
downloadtracifyjs-aed758ed5cc4ac180c92551ba80f4997f81d1dc4.tar.gz
tracifyjs-aed758ed5cc4ac180c92551ba80f4997f81d1dc4.zip
enhance `comparisons` & `reduce_vars` (#4841)
-rw-r--r--lib/compress.js1
-rw-r--r--test/compress/classes.js51
2 files changed, 52 insertions, 0 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 0150ba3d..5a9c8b78 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -9674,6 +9674,7 @@ merge(Compressor.prototype, {
if (node instanceof AST_Sequence) return is_object(node.tail_node());
if (node instanceof AST_SymbolRef) return is_object(node.fixed_value());
return node instanceof AST_Array
+ || node instanceof AST_Class
|| node instanceof AST_Lambda
|| node instanceof AST_New
|| node instanceof AST_Object;
diff --git a/test/compress/classes.js b/test/compress/classes.js
index 44bb2786..fe8c7e3c 100644
--- a/test/compress/classes.js
+++ b/test/compress/classes.js
@@ -583,6 +583,31 @@ single_use_6: {
node_version: ">=4"
}
+single_use_7: {
+ options = {
+ passes: 2,
+ reduce_vars: true,
+ toplevel: true,
+ unused: true,
+ }
+ input: {
+ "use strict";
+ class A {
+ static foo() {}
+ }
+ var a = "foo" in A;
+ console.log(a);
+ }
+ expect: {
+ "use strict";
+ console.log("foo" in class {
+ static foo() {}
+ });
+ }
+ expect_stdout: "true"
+ node_version: ">=4"
+}
+
collapse_non_strict: {
options = {
collapse_vars: true,
@@ -654,6 +679,32 @@ collapse_rhs_static: {
node_version: ">=12"
}
+self_comparison: {
+ options = {
+ booleans: true,
+ comparisons: true,
+ reduce_vars: true,
+ toplevel: true,
+ unused: true,
+ }
+ input: {
+ "use strict";
+ class A {}
+ console.log(A == A, A != A);
+ console.log(A === A, A !== A);
+ }
+ expect: {
+ "use strict";
+ console.log(!0, !1);
+ console.log(!0, !1);
+ }
+ expect_stdout: [
+ "true false",
+ "true false",
+ ]
+ node_version: ">=4"
+}
+
property_side_effects: {
options = {
inline: true,