1055 lines
22 KiB
JavaScript
1055 lines
22 KiB
JavaScript
replace_index: {
|
|
options = {
|
|
arguments: true,
|
|
evaluate: true,
|
|
properties: true,
|
|
}
|
|
input: {
|
|
var arguments = [];
|
|
console.log(arguments[0]);
|
|
(function() {
|
|
console.log(arguments[1], arguments["1"], arguments["foo"]);
|
|
})("bar", 42);
|
|
(function(a, b) {
|
|
console.log(arguments[1], arguments["1"], arguments["foo"]);
|
|
})("bar", 42);
|
|
(function(arguments) {
|
|
console.log(arguments[1], arguments["1"], arguments["foo"]);
|
|
})("bar", 42);
|
|
(function() {
|
|
var arguments;
|
|
console.log(arguments[1], arguments["1"], arguments["foo"]);
|
|
})("bar", 42);
|
|
}
|
|
expect: {
|
|
var arguments = [];
|
|
console.log(arguments[0]);
|
|
(function() {
|
|
console.log(arguments[1], arguments[1], arguments.foo);
|
|
})("bar", 42);
|
|
(function(a, b) {
|
|
console.log(b, b, arguments.foo);
|
|
})("bar", 42);
|
|
(function(arguments) {
|
|
console.log(arguments[1], arguments[1], arguments.foo);
|
|
})("bar", 42);
|
|
(function() {
|
|
var arguments;
|
|
console.log(arguments[1], arguments[1], arguments.foo);
|
|
})("bar", 42);
|
|
}
|
|
expect_stdout: [
|
|
"undefined",
|
|
"42 42 undefined",
|
|
"42 42 undefined",
|
|
"a a undefined",
|
|
"42 42 undefined",
|
|
]
|
|
}
|
|
|
|
replace_index_strict: {
|
|
options = {
|
|
arguments: true,
|
|
evaluate: true,
|
|
properties: true,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
"use strict";
|
|
(function() {
|
|
console.log(arguments[1], arguments["1"], arguments["foo"]);
|
|
})("bar", 42);
|
|
(function(a, b) {
|
|
console.log(arguments[1], arguments["1"], arguments["foo"]);
|
|
})("bar", 42);
|
|
}
|
|
expect: {
|
|
"use strict";
|
|
(function() {
|
|
console.log(arguments[1], arguments[1], arguments.foo);
|
|
})("bar", 42);
|
|
(function(a, b) {
|
|
console.log(b, b, arguments.foo);
|
|
})("bar", 42);
|
|
}
|
|
expect_stdout: [
|
|
"42 42 undefined",
|
|
"42 42 undefined",
|
|
]
|
|
}
|
|
|
|
replace_index_drop_fargs_1: {
|
|
options = {
|
|
arguments: true,
|
|
evaluate: true,
|
|
keep_fargs: false,
|
|
properties: true,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
var arguments = [];
|
|
console.log(arguments[0]);
|
|
(function() {
|
|
console.log(arguments[1], arguments["1"], arguments["foo"]);
|
|
})("bar", 42);
|
|
(function(a, b) {
|
|
console.log(arguments[1], arguments["1"], arguments["foo"]);
|
|
})("bar", 42);
|
|
(function(arguments) {
|
|
console.log(arguments[1], arguments["1"], arguments["foo"]);
|
|
})("bar", 42);
|
|
(function() {
|
|
var arguments;
|
|
console.log(arguments[1], arguments["1"], arguments["foo"]);
|
|
})("bar", 42);
|
|
(function() {
|
|
var arguments = {
|
|
1: "foo",
|
|
foo: "bar",
|
|
};
|
|
console.log(arguments[1], arguments["1"], arguments["foo"]);
|
|
})("bar", 42);
|
|
}
|
|
expect: {
|
|
var arguments = [];
|
|
console.log(arguments[0]);
|
|
(function(argument_0, argument_1) {
|
|
console.log(argument_1, argument_1, arguments.foo);
|
|
})("bar", 42);
|
|
(function(a, b) {
|
|
console.log(b, b, arguments.foo);
|
|
})("bar", 42);
|
|
(function(arguments) {
|
|
console.log("bar"[1], "bar"[1], "bar".foo);
|
|
})("bar", 42);
|
|
(function(argument_0, argument_1) {
|
|
var arguments;
|
|
console.log(argument_1, argument_1, arguments.foo);
|
|
})("bar", 42);
|
|
(function() {
|
|
var arguments = {
|
|
1: "foo",
|
|
foo: "bar",
|
|
};
|
|
console.log(arguments[1], arguments[1], arguments.foo);
|
|
})("bar", 42);
|
|
}
|
|
expect_stdout: [
|
|
"undefined",
|
|
"42 42 undefined",
|
|
"42 42 undefined",
|
|
"a a undefined",
|
|
"42 42 undefined",
|
|
"foo foo bar",
|
|
]
|
|
}
|
|
|
|
replace_index_drop_fargs_2: {
|
|
options = {
|
|
arguments: true,
|
|
evaluate: true,
|
|
keep_fargs: false,
|
|
properties: true,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
"use strict";
|
|
(function() {
|
|
console.log(arguments[1], arguments["1"], arguments["foo"]);
|
|
})("bar", 42);
|
|
(function(a, b) {
|
|
console.log(arguments[1], arguments["1"], arguments["foo"]);
|
|
})("bar", 42);
|
|
}
|
|
expect: {
|
|
"use strict";
|
|
(function(argument_0, argument_1) {
|
|
console.log(argument_1, argument_1, arguments.foo);
|
|
})("bar", 42);
|
|
(function(a, b) {
|
|
console.log(b, b, arguments.foo);
|
|
})("bar", 42);
|
|
}
|
|
expect_stdout: [
|
|
"42 42 undefined",
|
|
"42 42 undefined",
|
|
]
|
|
}
|
|
|
|
modified: {
|
|
options = {
|
|
arguments: true,
|
|
}
|
|
input: {
|
|
(function(a, b) {
|
|
var c = arguments[0];
|
|
var d = arguments[1];
|
|
var a = "foo";
|
|
b++;
|
|
arguments[0] = "moo";
|
|
arguments[1] *= 2;
|
|
console.log(a, b, c, d, arguments[0], arguments[1]);
|
|
})("bar", 42);
|
|
}
|
|
expect: {
|
|
(function(a, b) {
|
|
var c = a;
|
|
var d = b;
|
|
var a = "foo";
|
|
b++;
|
|
a = "moo";
|
|
b *= 2;
|
|
console.log(a, b, c, d, a, b);
|
|
})("bar", 42);
|
|
}
|
|
expect_stdout: "moo 86 bar 42 moo 86"
|
|
}
|
|
|
|
modified_strict: {
|
|
options = {
|
|
arguments: true,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
"use strict";
|
|
(function(a, b) {
|
|
var c = arguments[0];
|
|
var d = arguments[1];
|
|
var a = "foo";
|
|
b++;
|
|
arguments[0] = "moo";
|
|
arguments[1] *= 2;
|
|
console.log(a, b, c, d, arguments[0], arguments[1]);
|
|
})("bar", 42);
|
|
}
|
|
expect: {
|
|
"use strict";
|
|
(function(a, b) {
|
|
var c = arguments[0];
|
|
var d = arguments[1];
|
|
var a = "foo";
|
|
b++;
|
|
arguments[0] = "moo";
|
|
arguments[1] *= 2;
|
|
console.log(a, b, c, d, arguments[0], arguments[1]);
|
|
})("bar", 42);
|
|
}
|
|
expect_stdout: "foo 43 bar 42 moo 84"
|
|
}
|
|
|
|
duplicate_argname: {
|
|
options = {
|
|
arguments: true,
|
|
}
|
|
input: {
|
|
(function(a, b, a) {
|
|
console.log(a, b, arguments[0], arguments[1], arguments[2]);
|
|
})("foo", 42, "bar");
|
|
}
|
|
expect: {
|
|
(function(a, b, a) {
|
|
console.log(a, b, arguments[0], b, a);
|
|
})("foo", 42, "bar");
|
|
}
|
|
expect_stdout: "bar 42 foo 42 bar"
|
|
}
|
|
|
|
fraction: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
console.log(function() {
|
|
return arguments[0.3];
|
|
}("FAIL") || "PASS");
|
|
}
|
|
expect: {
|
|
console.log(function() {
|
|
return arguments[0.3];
|
|
}("FAIL") || "PASS");
|
|
}
|
|
expect_stdout: "PASS"
|
|
}
|
|
|
|
issue_3273: {
|
|
options = {
|
|
arguments: true,
|
|
}
|
|
input: {
|
|
(function(a) {
|
|
console.log(arguments[0], a);
|
|
arguments[0]++;
|
|
console.log(arguments[0], a);
|
|
})(0);
|
|
}
|
|
expect: {
|
|
(function(a) {
|
|
console.log(a, a);
|
|
a++;
|
|
console.log(a, a);
|
|
})(0);
|
|
}
|
|
expect_stdout: [
|
|
"0 0",
|
|
"1 1",
|
|
]
|
|
}
|
|
|
|
issue_3273_no_call_arg: {
|
|
options = {
|
|
arguments: true,
|
|
}
|
|
input: {
|
|
(function(a) {
|
|
arguments[0] = "FAIL";
|
|
console.log(a);
|
|
})();
|
|
}
|
|
expect: {
|
|
(function(a) {
|
|
arguments[0] = "FAIL";
|
|
console.log(a);
|
|
})();
|
|
}
|
|
expect_stdout: "undefined"
|
|
}
|
|
|
|
issue_3273_reduce_vars: {
|
|
options = {
|
|
arguments: true,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
(function(a) {
|
|
console.log(arguments[0], a);
|
|
arguments[0]++;
|
|
console.log(arguments[0], a);
|
|
})(0);
|
|
}
|
|
expect: {
|
|
(function(a) {
|
|
console.log(a, a);
|
|
a++;
|
|
console.log(a, a);
|
|
})(0);
|
|
}
|
|
expect_stdout: [
|
|
"0 0",
|
|
"1 1",
|
|
]
|
|
}
|
|
|
|
issue_3273_local_strict: {
|
|
options = {
|
|
arguments: true,
|
|
}
|
|
input: {
|
|
(function(a) {
|
|
"use strict";
|
|
console.log(arguments[0], a);
|
|
arguments[0]++;
|
|
console.log(arguments[0], a);
|
|
})(0);
|
|
}
|
|
expect: {
|
|
(function(a) {
|
|
"use strict";
|
|
console.log(arguments[0], a);
|
|
arguments[0]++;
|
|
console.log(arguments[0], a);
|
|
})(0);
|
|
}
|
|
expect_stdout: [
|
|
"0 0",
|
|
"1 0",
|
|
]
|
|
}
|
|
|
|
issue_3273_local_strict_reduce_vars: {
|
|
options = {
|
|
arguments: true,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
(function(a) {
|
|
"use strict";
|
|
console.log(arguments[0], a);
|
|
arguments[0]++;
|
|
console.log(arguments[0], a);
|
|
})(0);
|
|
}
|
|
expect: {
|
|
(function(a) {
|
|
"use strict";
|
|
console.log(arguments[0], a);
|
|
arguments[0]++;
|
|
console.log(arguments[0], a);
|
|
})(0);
|
|
}
|
|
expect_stdout: [
|
|
"0 0",
|
|
"1 0",
|
|
]
|
|
}
|
|
|
|
issue_3273_global_strict: {
|
|
options = {
|
|
arguments: true,
|
|
}
|
|
input: {
|
|
"use strict";
|
|
(function(a) {
|
|
console.log(arguments[0], a);
|
|
arguments[0]++;
|
|
console.log(arguments[0], a);
|
|
})(0);
|
|
}
|
|
expect: {
|
|
"use strict";
|
|
(function(a) {
|
|
console.log(arguments[0], a);
|
|
arguments[0]++;
|
|
console.log(arguments[0], a);
|
|
})(0);
|
|
}
|
|
expect_stdout: [
|
|
"0 0",
|
|
"1 0",
|
|
]
|
|
}
|
|
|
|
issue_3273_global_strict_reduce_vars: {
|
|
options = {
|
|
arguments: true,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
"use strict";
|
|
(function(a) {
|
|
console.log(arguments[0], a);
|
|
arguments[0]++;
|
|
console.log(arguments[0], a);
|
|
})(0);
|
|
}
|
|
expect: {
|
|
"use strict";
|
|
(function(a) {
|
|
console.log(arguments[0], a);
|
|
arguments[0]++;
|
|
console.log(arguments[0], a);
|
|
})(0);
|
|
}
|
|
expect_stdout: [
|
|
"0 0",
|
|
"1 0",
|
|
]
|
|
}
|
|
|
|
issue_3273_drop_fargs_1: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
(function() {
|
|
"use strict";
|
|
arguments[0]++;
|
|
console.log(arguments[0]);
|
|
})(0);
|
|
}
|
|
expect: {
|
|
(function(argument_0) {
|
|
"use strict";
|
|
argument_0++;
|
|
console.log(argument_0);
|
|
})(0);
|
|
}
|
|
expect_stdout: "1"
|
|
}
|
|
|
|
issue_3273_drop_fargs_2: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
(function() {
|
|
"use strict";
|
|
arguments[0]++;
|
|
console.log(arguments[0]);
|
|
})(0);
|
|
}
|
|
expect: {
|
|
(function(argument_0) {
|
|
"use strict";
|
|
argument_0++;
|
|
console.log(argument_0);
|
|
})(0);
|
|
}
|
|
expect_stdout: "1"
|
|
}
|
|
|
|
issue_3282_1: {
|
|
options = {
|
|
arguments: true,
|
|
reduce_funcs: true,
|
|
reduce_vars: true,
|
|
keep_fargs: false,
|
|
unused: true,
|
|
}
|
|
input: {
|
|
(function(t) {
|
|
return function() {
|
|
t();
|
|
};
|
|
})(function() {
|
|
'use strict';
|
|
function e() {
|
|
return arguments[0];
|
|
}
|
|
e();
|
|
e();
|
|
})();
|
|
}
|
|
expect: {
|
|
(function() {
|
|
return function() {
|
|
(function() {
|
|
"use strict";
|
|
function e() {
|
|
return arguments[0];
|
|
}
|
|
e();
|
|
e();
|
|
})();
|
|
};
|
|
})()();
|
|
}
|
|
expect_stdout: true
|
|
}
|
|
|
|
issue_3282_1_passes: {
|
|
options = {
|
|
arguments: true,
|
|
passes: 2,
|
|
reduce_funcs: true,
|
|
reduce_vars: true,
|
|
keep_fargs: false,
|
|
unused: true,
|
|
}
|
|
input: {
|
|
(function(t) {
|
|
return function() {
|
|
t();
|
|
};
|
|
})(function() {
|
|
'use strict';
|
|
function e() {
|
|
return arguments[0];
|
|
}
|
|
e();
|
|
e();
|
|
})();
|
|
}
|
|
expect: {
|
|
(function() {
|
|
return function() {
|
|
(function() {
|
|
"use strict";
|
|
function e(argument_0) {
|
|
return argument_0;
|
|
}
|
|
e();
|
|
e();
|
|
})();
|
|
};
|
|
})()();
|
|
}
|
|
expect_stdout: true
|
|
}
|
|
|
|
issue_3282_2: {
|
|
options = {
|
|
arguments: true,
|
|
reduce_vars: true,
|
|
keep_fargs: false,
|
|
unused: true,
|
|
}
|
|
input: {
|
|
(function(f) {
|
|
f();
|
|
})(function() {
|
|
return (function(t) {
|
|
return function() {
|
|
t();
|
|
};
|
|
})(function() {
|
|
'use strict';
|
|
function e() {
|
|
return arguments[0];
|
|
}
|
|
e();
|
|
e();
|
|
})();
|
|
});
|
|
}
|
|
expect: {
|
|
(function() {
|
|
(function() {
|
|
return function(t) {
|
|
return function() {
|
|
t();
|
|
};
|
|
}(function() {
|
|
"use strict";
|
|
function e() {
|
|
return arguments[0];
|
|
}
|
|
e();
|
|
e();
|
|
})();
|
|
})();
|
|
})();
|
|
}
|
|
expect_stdout: true
|
|
}
|
|
|
|
issue_3282_2_passes: {
|
|
options = {
|
|
arguments: true,
|
|
passes: 2,
|
|
reduce_vars: true,
|
|
keep_fargs: false,
|
|
unused: true,
|
|
}
|
|
input: {
|
|
(function(f) {
|
|
f();
|
|
})(function() {
|
|
return (function(t) {
|
|
return function() {
|
|
t();
|
|
};
|
|
})(function() {
|
|
'use strict';
|
|
function e() {
|
|
return arguments[0];
|
|
}
|
|
e();
|
|
e();
|
|
})();
|
|
});
|
|
}
|
|
expect: {
|
|
(function() {
|
|
(function() {
|
|
return function(t) {
|
|
return function() {
|
|
t();
|
|
};
|
|
}(function() {
|
|
"use strict";
|
|
function e(argument_0) {
|
|
return argument_0;
|
|
}
|
|
e();
|
|
e();
|
|
})();
|
|
})();
|
|
})();
|
|
}
|
|
expect_stdout: true
|
|
}
|
|
|
|
issue_3420_1: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
console.log(function() {
|
|
return function() {
|
|
return arguments[0];
|
|
};
|
|
}().length);
|
|
}
|
|
expect: {
|
|
console.log(function() {
|
|
return function() {
|
|
return arguments[0];
|
|
};
|
|
}().length);
|
|
}
|
|
expect_stdout: "0"
|
|
}
|
|
|
|
issue_3420_2: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
var foo = function() {
|
|
delete arguments[0];
|
|
};
|
|
foo();
|
|
}
|
|
expect: {
|
|
var foo = function() {
|
|
delete arguments[0];
|
|
};
|
|
foo();
|
|
}
|
|
expect_stdout: true
|
|
}
|
|
|
|
issue_3420_3: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
"use strict";
|
|
var foo = function() {
|
|
delete arguments[0];
|
|
};
|
|
foo();
|
|
}
|
|
expect: {
|
|
"use strict";
|
|
var foo = function() {
|
|
delete arguments[0];
|
|
};
|
|
foo();
|
|
}
|
|
expect_stdout: true
|
|
}
|
|
|
|
issue_3420_4: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
!function() {
|
|
console.log(arguments[0]);
|
|
delete arguments[0];
|
|
console.log(arguments[0]);
|
|
}(42);
|
|
}
|
|
expect: {
|
|
!function(argument_0) {
|
|
console.log(argument_0);
|
|
delete arguments[0];
|
|
console.log(arguments[0]);
|
|
}(42);
|
|
}
|
|
expect_stdout: [
|
|
"42",
|
|
"undefined",
|
|
]
|
|
}
|
|
|
|
issue_3420_5: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
"use strict";
|
|
!function() {
|
|
console.log(arguments[0]);
|
|
delete arguments[0];
|
|
console.log(arguments[0]);
|
|
}(42);
|
|
}
|
|
expect: {
|
|
"use strict";
|
|
!function(argument_0) {
|
|
console.log(argument_0);
|
|
delete arguments[0];
|
|
console.log(arguments[0]);
|
|
}(42);
|
|
}
|
|
expect_stdout: [
|
|
"42",
|
|
"undefined",
|
|
]
|
|
}
|
|
|
|
issue_3420_6: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
console.log(function() {
|
|
return delete arguments[0];
|
|
}());
|
|
}
|
|
expect: {
|
|
console.log(function() {
|
|
return delete arguments[0];
|
|
}());
|
|
}
|
|
expect_stdout: "true"
|
|
}
|
|
|
|
issue_3420_7: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
"use strict";
|
|
console.log(function() {
|
|
return delete arguments[0];
|
|
}());
|
|
}
|
|
expect: {
|
|
"use strict";
|
|
console.log(function() {
|
|
return delete arguments[0];
|
|
}());
|
|
}
|
|
expect_stdout: "true"
|
|
}
|
|
|
|
issue_4200: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
}
|
|
input: {
|
|
var o = {
|
|
get p() {
|
|
return arguments[0];
|
|
},
|
|
};
|
|
console.log(o.p);
|
|
}
|
|
expect: {
|
|
var o = {
|
|
get p() {
|
|
return arguments[0];
|
|
},
|
|
};
|
|
console.log(o.p);
|
|
}
|
|
expect_stdout: "undefined"
|
|
}
|
|
|
|
issue_4291_1: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
console.log(function() {
|
|
arguments[0] = "PASS";
|
|
return arguments;
|
|
}()[0]);
|
|
}
|
|
expect: {
|
|
console.log(function() {
|
|
arguments[0] = "PASS";
|
|
return arguments;
|
|
}()[0]);
|
|
}
|
|
expect_stdout: "PASS"
|
|
}
|
|
|
|
issue_4291_2: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
var a = function() {
|
|
if (arguments[0])
|
|
arguments[1] = "PASS";
|
|
return arguments;
|
|
}(42);
|
|
console.log(a[1], a[0], a.length);
|
|
}
|
|
expect: {
|
|
var a = function() {
|
|
if (arguments[0])
|
|
arguments[1] = "PASS";
|
|
return arguments;
|
|
}(42);
|
|
console.log(a[1], a[0], a.length);
|
|
}
|
|
expect_stdout: "PASS 42 1"
|
|
}
|
|
|
|
issue_4397: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
console.log(typeof function() {
|
|
arguments += 0;
|
|
return arguments[0];
|
|
}());
|
|
}
|
|
expect: {
|
|
console.log(typeof function() {
|
|
arguments += 0;
|
|
return arguments[0];
|
|
}());
|
|
}
|
|
expect_stdout: "string"
|
|
}
|
|
|
|
issue_4410_1: {
|
|
options = {
|
|
arguments: true,
|
|
conditionals: true,
|
|
evaluate: true,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
(function(a) {
|
|
console.log(arguments[0] === (a = 0) ? "FAIL" : "PASS");
|
|
})(1);
|
|
}
|
|
expect: {
|
|
(function(a) {
|
|
console.log(a === (a = 0) ? "FAIL" : "PASS");
|
|
})(1);
|
|
}
|
|
expect_stdout: "PASS"
|
|
}
|
|
|
|
issue_4410_2: {
|
|
options = {
|
|
arguments: true,
|
|
conditionals: true,
|
|
evaluate: true,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
(function f(a) {
|
|
console.log(arguments[0] === (a = 0) ? "FAIL" : "PASS");
|
|
})(1);
|
|
}
|
|
expect: {
|
|
(function f(a) {
|
|
console.log(arguments[0] === (a = 0) ? "FAIL" : "PASS");
|
|
})(1);
|
|
}
|
|
expect_stdout: "PASS"
|
|
}
|
|
|
|
issue_4410_3: {
|
|
options = {
|
|
arguments: true,
|
|
}
|
|
input: {
|
|
var a = 1;
|
|
(function f(b) {
|
|
a-- && f();
|
|
for (var c = 2; c--;)
|
|
switch (arguments[0]) {
|
|
case b = 42:
|
|
case 42:
|
|
console.log("PASS");
|
|
}
|
|
})(null);
|
|
}
|
|
expect: {
|
|
var a = 1;
|
|
(function f(b) {
|
|
a-- && f();
|
|
for (var c = 2; c--;)
|
|
switch (arguments[0]) {
|
|
case b = 42:
|
|
case 42:
|
|
console.log("PASS");
|
|
}
|
|
})(null);
|
|
}
|
|
expect_stdout: "PASS"
|
|
}
|
|
|
|
issue_4432: {
|
|
options = {
|
|
arguments: true,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
console.log(function(a) {
|
|
for (a in { FAIL: 42 });
|
|
return arguments[0];
|
|
}() || "PASS");
|
|
}
|
|
expect: {
|
|
console.log(function(a) {
|
|
for (a in { FAIL: 42 });
|
|
return arguments[0];
|
|
}() || "PASS");
|
|
}
|
|
expect_stdout: "PASS"
|
|
}
|
|
|
|
issue_4696: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
}
|
|
input: {
|
|
console.log(function() {
|
|
for (arguments in [ 42 ]);
|
|
for (var a in arguments[0])
|
|
return "PASS";
|
|
}());
|
|
}
|
|
expect: {
|
|
console.log(function() {
|
|
for (arguments in [ 42 ]);
|
|
for (var a in arguments[0])
|
|
return "PASS";
|
|
}());
|
|
}
|
|
expect_stdout: "PASS"
|
|
}
|
|
|
|
issue_4809: {
|
|
options = {
|
|
arguments: true,
|
|
keep_fargs: false,
|
|
reduce_vars: true,
|
|
}
|
|
input: {
|
|
A = 0;
|
|
(function() {
|
|
arguments[A] = "PASS";
|
|
console.log(arguments[0]);
|
|
})();
|
|
}
|
|
expect: {
|
|
A = 0;
|
|
(function() {
|
|
arguments[A] = "PASS";
|
|
console.log(arguments[0]);
|
|
})();
|
|
}
|
|
expect_stdout: "PASS"
|
|
}
|