js/src/tests/ecma_6/Comprehensions/generator-semantics.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:e9b85a57f73b
1 // Interaction of eval with generator expressions.
2 function a1() {
3 var a = 10;
4 var g = (for (y of [0]) eval('var a=42;'));
5 g.next();
6 return a;
7 }
8 assertEq(a1(), 10);
9
10 function a2() {
11 var a = 10;
12 (for (y of [0]) eval('a=42')).next();
13 return a;
14 }
15 assertEq(a2(), 42)
16
17 // Arguments and this.
18 function b1() {
19 return [for (arg of (for (i of [0, 1, 2]) arguments[i])) arg];
20 }
21 assertDeepEq(b1('a', 'b', 'c'), ['a', 'b', 'c']);
22
23 function b2() {
24 return [for (x of (for (i of [0]) this)) x];
25 }
26 var b2o = { b2: b2 }
27 assertDeepEq(b2o.b2(), [b2o])
28
29 // Assignment to eval or arguments.
30 function c1() {
31 return [for (arg of (for (i of [0, 1, 2]) arguments = i)) arg];
32 }
33 assertDeepEq(c1(), [0, 1, 2]);
34
35 function c2() {
36 "use strict";
37 return eval('[for (arg of (for (i of [0, 1, 2]) arguments = i)) arg]');
38 }
39 assertThrows(c2, SyntaxError);
40
41 function c3() {
42 return [for (arg of (for (i of [0, 1, 2]) eval = i)) arg];
43 }
44 assertDeepEq(c3(), [0, 1, 2]);
45
46 function c4() {
47 "use strict";
48 return eval('[for (arg of (for (i of [0, 1, 2]) eval = i)) arg]');
49 }
50 assertThrows(c4, SyntaxError);
51
52 reportCompare(null, null, "test");

mercurial