blob: 52426115fe6e468d965debb6ed9a02f203e18a9d [file] [log] [blame]
// Interaction of eval with generator expressions.
function a1() {
var a = 10;
var g = (for (y of [0]) eval('var a=42;'));
g.next();
return a;
}
assertEq(a1(), 10);
function a2() {
var a = 10;
(for (y of [0]) eval('a=42')).next();
return a;
}
assertEq(a2(), 42)
// Arguments and this.
function b1() {
return [for (arg of (for (i of [0, 1, 2]) arguments[i])) arg];
}
assertDeepEq(b1('a', 'b', 'c'), ['a', 'b', 'c']);
function b2() {
return [for (x of (for (i of [0]) this)) x];
}
var b2o = { b2: b2 }
assertDeepEq(b2o.b2(), [b2o])
// Assignment to eval or arguments.
function c1() {
return [for (arg of (for (i of [0, 1, 2]) arguments = i)) arg];
}
assertDeepEq(c1(), [0, 1, 2]);
function c2() {
"use strict";
return eval('[for (arg of (for (i of [0, 1, 2]) arguments = i)) arg]');
}
assertThrows(c2, SyntaxError);
function c3() {
return [for (arg of (for (i of [0, 1, 2]) eval = i)) arg];
}
assertDeepEq(c3(), [0, 1, 2]);
function c4() {
"use strict";
return eval('[for (arg of (for (i of [0, 1, 2]) eval = i)) arg]');
}
assertThrows(c4, SyntaxError);
reportCompare(null, null, "test");