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;
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,
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,