aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2018-01-06 06:16:51 +0800
committerGitHub <noreply@github.com>2018-01-06 06:16:51 +0800
commit3505a3604a682138512a7e03964fb68c861b5cbd (patch)
tree65c12a07e280d5f9e63d580e9363f59ad26567b2
parent9b1bc6c014338422047479365a28b27f1988d353 (diff)
downloadtracifyjs-3505a3604a682138512a7e03964fb68c861b5cbd.tar.gz
tracifyjs-3505a3604a682138512a7e03964fb68c861b5cbd.zip
enhance `unsafe_proto` (#2733)
-rw-r--r--lib/compress.js16
-rw-r--r--test/compress/properties.js6
2 files changed, 22 insertions, 0 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 7f33b53b..0f15eb7e 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -5484,11 +5484,27 @@ merge(Compressor.prototype, {
elements: []
});
break;
+ case "Function":
+ self.expression = make_node(AST_Function, self.expression, {
+ argnames: [],
+ body: []
+ });
+ break;
+ case "Number":
+ self.expression = make_node(AST_Number, self.expression, {
+ value: 0
+ });
+ break;
case "Object":
self.expression = make_node(AST_Object, self.expression, {
properties: []
});
break;
+ case "RegExp":
+ self.expression = make_node(AST_RegExp, self.expression, {
+ value: /t/
+ });
+ break;
case "String":
self.expression = make_node(AST_String, self.expression, {
value: ""
diff --git a/test/compress/properties.js b/test/compress/properties.js
index 16374ef8..b2ce5f61 100644
--- a/test/compress/properties.js
+++ b/test/compress/properties.js
@@ -567,12 +567,18 @@ native_prototype: {
}
input: {
Array.prototype.splice.apply(a, [1, 2, b, c]);
+ Function.prototype.call.apply(console.log, console, [ "foo" ]);
+ Number.prototype.toFixed.call(Math.PI, 2);
Object.prototype.hasOwnProperty.call(d, "foo");
+ RegExp.prototype.test.call(/foo/, "bar");
String.prototype.indexOf.call(e, "bar");
}
expect: {
[].splice.apply(a, [1, 2, b, c]);
+ (function() {}).call.apply(console.log, console, [ "foo" ]);
+ 0..toFixed.call(Math.PI, 2);
({}).hasOwnProperty.call(d, "foo");
+ /t/.test.call(/foo/, "bar");
"".indexOf.call(e, "bar");
}
}