enable collapse_vars & reduce_vars by default

- fix corner cases in `const` optimisation
- deprecate `/*@const*/`

fixes #1497
closes #1498
This commit is contained in:
alexlamsl
2017-02-24 01:46:57 +08:00
parent 1e51586996
commit 4e49302916
8 changed files with 56 additions and 25 deletions

View File

@@ -69,8 +69,8 @@ function Compressor(options, false_by_default) {
hoist_vars : false,
if_return : !false_by_default,
join_vars : !false_by_default,
collapse_vars : false,
reduce_vars : false,
collapse_vars : !false_by_default,
reduce_vars : !false_by_default,
cascade : !false_by_default,
side_effects : !false_by_default,
pure_getters : false,
@@ -1252,7 +1252,7 @@ merge(Compressor.prototype, {
this._evaluating = true;
try {
var d = this.definition();
if ((d.constant || compressor.option("reduce_vars") && !d.modified) && d.init) {
if (compressor.option("reduce_vars") && !d.modified && d.init) {
if (compressor.option("unsafe")) {
if (!HOP(d.init, '_evaluated')) {
d.init._evaluated = ev(d.init, compressor);
@@ -3025,9 +3025,11 @@ merge(Compressor.prototype, {
return make_node(AST_Infinity, self).transform(compressor);
}
}
if (compressor.option("evaluate") && !isLHS(self, compressor.parent())) {
if (compressor.option("evaluate")
&& compressor.option("reduce_vars")
&& !isLHS(self, compressor.parent())) {
var d = self.definition();
if (d && d.constant && d.init && d.init.is_constant(compressor)) {
if (d.constant && !d.modified && d.init && d.init.is_constant(compressor)) {
var original_as_string = self.print_to_string();
var const_node = make_node_from_constant(compressor, d.init.constant_value(compressor), self);
var const_node_as_string = const_node.print_to_string();