blob: 7a8e0dcc3b80fc42bb0e0a71bcf0f654254e5040 [file] [log] [blame]
description(
"This test checks the behavior of Arguments object iteration."
);
var arguments = null;
shouldThrow("(function (arguments) { for (var argument of arguments) {}})()")
function test() {
var i = 0;
for (arg of arguments) {
realArg = arguments[i++];
shouldBeTrue("arg === realArg");
}
iteratedArgumentsLength = i;
actualArgumentsLength = arguments.length;
shouldBe("actualArgumentsLength", "iteratedArgumentsLength");
}
test();
test("a");
test("a", "b");
test({})
function testAlias() {
var i = 0;
var a = arguments;
for (arg of a) {
realArg = arguments[i++];
shouldBeTrue("arg === realArg");
}
iteratedArgumentsLength = i;
actualArgumentsLength = arguments.length;
shouldBe("actualArgumentsLength", "iteratedArgumentsLength");
}
testAlias();
testAlias("a");
testAlias("a", "b");
testAlias({})
function testStrict() {
"use strict";
var i = 0;
for (arg of arguments) {
realArg = arguments[i++];
shouldBeTrue("arg === realArg");
}
iteratedArgumentsLength = i;
actualArgumentsLength = arguments.length;
shouldBe("actualArgumentsLength", "iteratedArgumentsLength");
}
testStrict();
testStrict("a");
testStrict("a", "b");
testStrict({})
function testReifiedArguments() {
var i = 0;
arguments.expando = 1;
for (arg of arguments) {
realArg = arguments[i++];
shouldBeTrue("arg === realArg");
}
iteratedArgumentsLength = i;
actualArgumentsLength = arguments.length;
shouldBe("actualArgumentsLength", "iteratedArgumentsLength");
}
testReifiedArguments();
testReifiedArguments("a");
testReifiedArguments("a", "b");
testReifiedArguments({})
function testEmptyArrayArguments() {
arguments = [];
for (arg of arguments) {
fail("nothing to iterate");
return false;
}
return true;
}
shouldBeTrue("testEmptyArrayArguments('a')");
shouldBeTrue("testEmptyArrayArguments()");
function testArrayArguments() {
var i = 0;
arguments = [1, 2, 3];
for (arg of arguments) {
realArg = arguments[i++];
shouldBeTrue("arg === realArg");
}
iteratedArgumentsLength = i;
actualArgumentsLength = arguments.length;
shouldBe("actualArgumentsLength", "iteratedArgumentsLength");
}
testArrayArguments();
testArrayArguments("a");
testArrayArguments("a", "b");
testArrayArguments({});