return typeof function(){};
}
if (!non_converting_unary[this.operator]) depth++;
- e = e._eval(compressor, cached, depth);
- if (e === this.expression) return this;
+ var v = e._eval(compressor, cached, depth);
+ if (v === this.expression) return this;
switch (this.operator) {
- case "!": return !e;
+ case "!": return !v;
case "typeof":
// typeof <RegExp> returns "object" or "function" on different platforms
// so cannot evaluate reliably
- if (e instanceof RegExp) return this;
- return typeof e;
- case "void": return void e;
- case "~": return ~e;
- case "-": return -e;
- case "+": return +e;
+ if (v instanceof RegExp) return this;
+ return typeof v;
+ case "void": return void v;
+ case "~": return ~v;
+ case "-": return -v;
+ case "+": return +v;
+ case "++":
+ case "--":
+ if (e instanceof AST_SymbolRef) {
+ var refs = e.definition().references;
+ if (refs[refs.length - 1] === e) return v;
+ }
}
return this;
});
function f8() { var b = window.a * window.z; return b + (b + 5) }
function f9() { var b = window.a * window.z; return bar() || b }
function f10(x) { var a = 5; return a += 3; }
- function f11(x) { var a = 5, b = 3; return a += --b; }
+ function f11(x) { var a = 5; return a += 2; }
}
}