if (expr instanceof AST_Unary) return false;
if (side_effects) return false;
if (value_def) return true;
- if (lhs instanceof AST_SymbolRef) {
- var def = lhs.definition();
- if (def.references.length - def.replaced == (candidate instanceof AST_VarDef ? 1 : 2)) {
- return true;
- }
+ if (!(lhs instanceof AST_SymbolRef)) return false;
+ var referenced;
+ if (expr instanceof AST_VarDef) {
+ referenced = 1;
+ } else if (expr.operator == "=") {
+ referenced = 2;
+ } else {
+ return false;
}
- return false;
+ var def = lhs.definition();
+ return def.references.length - def.replaced == referenced;
}
function symbol_in_lvalues(sym, parent) {
expect_stdout: "number"
}
-cond_sequence_return: {
+cond_sequence_return_1: {
options = {
collapse_vars: true,
}
expect_stdout: "2"
}
+cond_sequence_return_2: {
+ options = {
+ collapse_vars: true,
+ }
+ input: {
+ console.log(function(n) {
+ var c = 0;
+ for (var k in [0, 1])
+ if (c += 1, k == n) return c;
+ }(1));
+ }
+ expect: {
+ console.log(function(n) {
+ var c = 0;
+ for (var k in [0, 1])
+ if (c += 1, k == n) return c;
+ }(1));
+ }
+ expect_stdout: "2"
+}
+
issue_3520: {
options = {
collapse_vars: true,
it("Should produce a functional build when using --self", function(done) {
this.timeout(30000);
var command = uglifyjscmd + ' --self -cm --wrap WrappedUglifyJS';
- exec(command, function(err, stdout) {
+ exec(command, {
+ maxBuffer: 1048576
+ }, function(err, stdout) {
if (err) throw err;
eval(stdout);
assert.strictEqual(typeof WrappedUglifyJS, "object");
var command = uglifyjs + " --self -cm --wrap SpiderUglify -o spidermonkey | " +
uglifyjs + " -p spidermonkey -cm";
- exec(command, function(err, stdout) {
+ exec(command, {
+ maxBuffer: 1048576
+ }, function(err, stdout) {
if (err) throw err;
eval(stdout);