function foo(x) {
    Object.defineProperty(arguments, 0, {configurable: true, enumerable: true, writable:true, value:42});
    return [x, arguments[0], arguments]
}

var result = foo(1);

if (result[0] !== 42)
    throw new Error();

if (result[1] !== 42)
    throw new Error();

if (Array.prototype.join.call(result[2], ",") != "42")
    throw new Error();

var array = [];
for (var s in result[2])
    array.push(s);

if (array.join(",") != "0")
    throw new Error();

if (Object.keys(result[2]).join(",") != "0")
    throw new Error();
