diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2018-01-06 06:16:51 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-06 06:16:51 +0800 |
commit | 3505a3604a682138512a7e03964fb68c861b5cbd (patch) | |
tree | 65c12a07e280d5f9e63d580e9363f59ad26567b2 | |
parent | 9b1bc6c014338422047479365a28b27f1988d353 (diff) | |
download | tracifyjs-3505a3604a682138512a7e03964fb68c861b5cbd.tar.gz tracifyjs-3505a3604a682138512a7e03964fb68c861b5cbd.zip |
enhance `unsafe_proto` (#2733)
-rw-r--r-- | lib/compress.js | 16 | ||||
-rw-r--r-- | test/compress/properties.js | 6 |
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"); } } |