diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2017-04-08 16:46:25 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-08 16:46:25 +0800 |
commit | 0479ff0c54e8eea90ff5471bd9f77cb7f2e355c3 (patch) | |
tree | 539a0a54ad70a0792e58d7b22578234ac6cf36b2 /lib | |
parent | cf72fe552f5a51ccfe40c32e0fb86d549e0ca848 (diff) | |
download | tracifyjs-0479ff0c54e8eea90ff5471bd9f77cb7f2e355c3.tar.gz tracifyjs-0479ff0c54e8eea90ff5471bd9f77cb7f2e355c3.zip |
fix a couple of bugs in `global_defs` (#1802)
- `optimize()` substituted expression
- compute nested property string correctly
fixes #1801
Miscellaneous
- reset optimisation flags on all node types
Diffstat (limited to 'lib')
-rw-r--r-- | lib/compress.js | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/lib/compress.js b/lib/compress.js index de0ff387..5b405ec1 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -260,10 +260,8 @@ merge(Compressor.prototype, { } }); var tw = new TreeWalker(function(node, descend){ - if (!(node instanceof AST_Directive || node instanceof AST_Constant)) { - node._squeezed = false; - node._optimized = false; - } + node._squeezed = false; + node._optimized = false; if (reduce_vars) { if (node instanceof AST_Toplevel) node.globals.each(reset_def); if (node instanceof AST_Scope) node.variables.each(reset_def); @@ -1346,7 +1344,7 @@ merge(Compressor.prototype, { } def(AST_Node, noop); def(AST_Dot, function(compressor, suffix){ - return this.expression._find_defs(compressor, suffix + "." + this.property); + return this.expression._find_defs(compressor, "." + this.property + suffix); }); def(AST_SymbolRef, function(compressor, suffix){ if (!this.global()) return; @@ -3582,7 +3580,7 @@ merge(Compressor.prototype, { OPT(AST_SymbolRef, function(self, compressor){ var def = self.resolve_defines(compressor); if (def) { - return def; + return def.optimize(compressor); } // testing against !self.scope.uses_with first is an optimization if (compressor.option("screw_ie8") @@ -3932,7 +3930,7 @@ merge(Compressor.prototype, { OPT(AST_Dot, function(self, compressor){ var def = self.resolve_defines(compressor); if (def) { - return def; + return def.optimize(compressor); } var prop = self.property; if (RESERVED_WORDS(prop) && !compressor.option("screw_ie8")) { |