fix top_retain on hoist_props (#2474)

fixes #2473
This commit is contained in:
Alex Lam S.L
2017-11-13 00:59:41 +08:00
committed by GitHub
parent c6cfa04d10
commit 2ac5086831
2 changed files with 91 additions and 0 deletions

View File

@@ -2769,6 +2769,7 @@ merge(Compressor.prototype, {
AST_Scope.DEFMETHOD("hoist_properties", function(compressor){
var self = this;
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);
var var_names = Object.create(null);
self.enclosed.forEach(function(def) {
@@ -2784,6 +2785,7 @@ merge(Compressor.prototype, {
&& !(def = sym.definition()).escaped
&& !def.single_use
&& !def.direct_access
&& !top_retain(def)
&& (value = sym.fixed_value()) === node.value
&& value instanceof AST_Object) {
var defs = new Dictionary();