function foo(args)
{
var result = 0;
for (var i = 0; i < args.length; ++i) {
result += args[i];
args[i] += i;
}
return result;
}
function bar(a, b, c, d)
{
return [foo(arguments), a, b, c, d];
}
for (var i = 0; i < 10000; ++i) {
var result = bar(i, i + 1, i + 2, i + 3);
if (result.length != 5)
throw "Bad result length in " + result;
if (result[0] != i * 4 + 6)
throw "Bad first element in " + result + "; expected " + (i * 3 + 6);
if (result[1] != i)
throw "Bad second element in " + result + "; expected " + i;
if (result[2] != i + 1 + 1)
throw "Bad third element in " + result + "; expected " + (i + 1 + 1);
if (result[3] != i + 2 + 2)
throw "Bad fourth element in " + result + "; expected " + (i + 2 + 2);
if (result[4] != i + 3 + 3)
throw "Bad fifth element in " + result + "; expected " + (i + 3 + 3);
}