[Pkg-javascript-commits] [uglifyjs] 28/228: evaluate AST_SymbolRef as parameter fix invalid boolean conversion now exposed in `make_node_from_constant()`
Jonas Smedegaard
dr at jones.dk
Sat Apr 15 14:25:13 UTC 2017
This is an automated email from the git hooks/post-receive script.
js pushed a commit to branch master
in repository uglifyjs.
commit 974247c8c0e57901ef776e86784c8c9a1b87b5de
Author: alexlamsl <alexlamsl at gmail.com>
Date: Sat Feb 18 19:22:24 2017 +0800
evaluate AST_SymbolRef as parameter
fix invalid boolean conversion now exposed in `make_node_from_constant()`
closes #1477
---
lib/compress.js | 15 +++++++++------
test/compress/evaluate.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 56 insertions(+), 6 deletions(-)
diff --git a/lib/compress.js b/lib/compress.js
index 72afe92..a60ba1a 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -234,7 +234,7 @@ merge(Compressor.prototype, {
case "string":
return make_node(AST_String, orig, {
value: val
- }).optimize(compressor);
+ });
case "number":
if (isNaN(val)) {
return make_node(AST_NaN, orig);
@@ -247,17 +247,17 @@ merge(Compressor.prototype, {
});
}
- return make_node(AST_Number, orig, { value: val }).optimize(compressor);
+ return make_node(AST_Number, orig, { value: val });
case "boolean":
- return make_node(val ? AST_True : AST_False, orig).optimize(compressor);
+ return make_node(val ? AST_True : AST_False, orig).transform(compressor);
case "undefined":
- return make_node(AST_Undefined, orig).optimize(compressor);
+ return make_node(AST_Undefined, orig).transform(compressor);
default:
if (val === null) {
- return make_node(AST_Null, orig, { value: null }).optimize(compressor);
+ return make_node(AST_Null, orig, { value: null });
}
if (val instanceof RegExp) {
- return make_node(AST_RegExp, orig, { value: val }).optimize(compressor);
+ return make_node(AST_RegExp, orig, { value: val });
}
throw new Error(string_template("Can't handle constant of type: {type}", {
type: typeof val
@@ -2179,6 +2179,9 @@ merge(Compressor.prototype, {
});
OPT(AST_Call, function(self, compressor){
+ self.args = self.args.map(function(arg) {
+ return arg.evaluate(compressor)[0];
+ });
if (compressor.option("unsafe")) {
var exp = self.expression;
if (exp instanceof AST_SymbolRef && exp.undeclared()) {
diff --git a/test/compress/evaluate.js b/test/compress/evaluate.js
index 0ff157d..f88bc53 100644
--- a/test/compress/evaluate.js
+++ b/test/compress/evaluate.js
@@ -598,3 +598,50 @@ unsafe_prototype_function: {
var h = "" + ({toString: 0});
}
}
+
+call_args: {
+ options = {
+ evaluate: true,
+ }
+ input: {
+ const a = 1;
+ console.log(a);
+ +function(a) {
+ return a;
+ }(a);
+ }
+ expect: {
+ const a = 1;
+ console.log(1);
+ +function(a) {
+ return a;
+ }(1);
+ }
+}
+
+in_boolean_context: {
+ options = {
+ booleans: true,
+ evaluate: true,
+ }
+ input: {
+ !42;
+ !"foo";
+ ![1, 2];
+ !/foo/;
+ !b(42);
+ !b("foo");
+ !b([1, 2]);
+ !b(/foo/);
+ }
+ expect: {
+ !1;
+ !1;
+ !1;
+ !1;
+ !b(42);
+ !b("foo");
+ !b([1, 2]);
+ !b(/foo/);
+ }
+}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/uglifyjs.git
More information about the Pkg-javascript-commits
mailing list