fix nested hoist_props substitution (#2523)

fixes #2519
This commit is contained in:
Alex Lam S.L
2017-11-28 14:39:00 +08:00
committed by GitHub
parent 32def5ebf5
commit 206a54a746
2 changed files with 33 additions and 1 deletions

View File

@@ -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) {