[Pkg-javascript-commits] [uglifyjs] 296/491: fix nested `hoist_props` substitution (#2523)
Jonas Smedegaard
dr at jones.dk
Wed Feb 14 19:51:46 UTC 2018
This is an automated email from the git hooks/post-receive script.
js pushed a commit to annotated tag debian/3.3.10-1
in repository uglifyjs.
commit 206a54a7461b76683d690fd7016943fcb461a4fa
Author: Alex Lam S.L <alexlamsl at gmail.com>
Date: Tue Nov 28 14:39:00 2017 +0800
fix nested `hoist_props` substitution (#2523)
fixes #2519
---
lib/compress.js | 3 ++-
test/compress/hoist_props.js | 31 +++++++++++++++++++++++++++++++
2 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/lib/compress.js b/lib/compress.js
index f49f0b2..5b26de8 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -2797,7 +2797,7 @@ merge(Compressor.prototype, {
if (!compressor.option("hoist_props") || compressor.has_directive("use asm")) return self;
var top_retain = self instanceof AST_Toplevel && compressor.top_retain || return_false;
var defs_by_id = Object.create(null);
- return self.transform(new TreeTransformer(function(node) {
+ return self.transform(new TreeTransformer(function(node, descend) {
if (node instanceof AST_VarDef) {
var sym = node.name, def, value;
if (sym.scope === self
@@ -2807,6 +2807,7 @@ merge(Compressor.prototype, {
&& !top_retain(def)
&& (value = sym.fixed_value()) === node.value
&& value instanceof AST_Object) {
+ descend(node, this);
var defs = new Dictionary();
var assignments = [];
value.properties.forEach(function(prop) {
diff --git a/test/compress/hoist_props.js b/test/compress/hoist_props.js
index b2dd027..a46033d 100644
--- a/test/compress/hoist_props.js
+++ b/test/compress/hoist_props.js
@@ -633,3 +633,34 @@ issue_2508_5: {
}
expect_stdout: true
}
+
+issue_2519: {
+ options = {
+ collapse_vars: true,
+ evaluate: true,
+ hoist_props: true,
+ reduce_vars: true,
+ unused: true,
+ }
+ input: {
+ function testFunc() {
+ var dimensions = {
+ minX: 5,
+ maxX: 6,
+ };
+ var scale = 1;
+ var d = {
+ x: (dimensions.maxX + dimensions.minX) / 2,
+ };
+ return d.x * scale;
+ }
+ console.log(testFunc());
+ }
+ expect: {
+ function testFunc() {
+ return 1 * ((6 + 5) / 2);
+ }
+ console.log(testFunc());
+ }
+ expect_stdout: "5.5"
+}
--
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