aboutsummaryrefslogtreecommitdiff
path: root/lib/compress.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/compress.js')
-rw-r--r--lib/compress.js17
1 files changed, 7 insertions, 10 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 7c2077b7..9420d8d2 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -460,7 +460,7 @@ merge(Compressor.prototype, {
return def.fixed instanceof AST_Defun;
}
- function safe_to_assign(tw, def, scope, value) {
+ function safe_to_assign(tw, def, value) {
if (def.fixed === undefined) return true;
if (def.fixed === null && def.safe_ids) {
def.safe_ids[def.id] = false;
@@ -471,11 +471,8 @@ merge(Compressor.prototype, {
if (!safe_to_read(tw, def)) return false;
if (def.fixed === false) return false;
if (def.fixed != null && (!value || def.references.length > def.assignments)) return false;
- if (def.fixed instanceof AST_Defun) {
- return value instanceof AST_Node && def.fixed.parent_scope === scope;
- }
return all(def.orig, function(sym) {
- return !(sym instanceof AST_SymbolDefun || sym instanceof AST_SymbolLambda);
+ return !(sym instanceof AST_SymbolLambda);
});
}
@@ -557,7 +554,7 @@ merge(Compressor.prototype, {
}
if (sym.fixed) delete sym.fixed;
var d = sym.definition();
- var safe = safe_to_assign(tw, d, sym.scope, node.right);
+ var safe = safe_to_assign(tw, d, node.right);
d.assignments++;
var fixed = d.fixed;
if (!fixed && node.operator != "=") return;
@@ -820,7 +817,7 @@ merge(Compressor.prototype, {
}
if (exp.fixed) delete exp.fixed;
var d = exp.definition();
- var safe = safe_to_assign(tw, d, exp.scope, true);
+ var safe = safe_to_assign(tw, d, true);
d.assignments++;
var fixed = d.fixed;
if (!fixed) return;
@@ -846,7 +843,7 @@ merge(Compressor.prototype, {
var node = this;
var d = node.name.definition();
if (node.value) {
- if (safe_to_assign(tw, d, node.name.scope, node.value)) {
+ if (safe_to_assign(tw, d, node.value)) {
d.fixed = function() {
return node.value;
};
@@ -3195,7 +3192,7 @@ merge(Compressor.prototype, {
def(AST_Statement, function() {
throw new Error(string_template("Cannot evaluate a statement [{file}:{line},{col}]", this.start));
});
- def(AST_Lambda, return_this);
+ def(AST_Accessor, return_this);
def(AST_Node, return_this);
def(AST_Constant, function() {
return this.value;
@@ -3213,7 +3210,7 @@ merge(Compressor.prototype, {
var value = node._eval(compressor, ignore_side_effects, cached, depth);
return value === node ? this : value;
});
- def(AST_Function, function(compressor) {
+ def(AST_Lambda, function(compressor) {
if (compressor.option("unsafe")) {
var fn = function() {};
fn.node = this;