OLD | NEW |
---|---|
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
94 | 94 |
95 testNext(g); | 95 testNext(g); |
96 testSend(g); | 96 testSend(g); |
97 testThrow(g); | 97 testThrow(g); |
98 | 98 |
99 testNext(function*() { return yield* g(); }); | 99 testNext(function*() { return yield* g(); }); |
100 testSend(function*() { return yield* g(); }); | 100 testSend(function*() { return yield* g(); }); |
101 testThrow(function*() { return yield* g(); }); | 101 testThrow(function*() { return yield* g(); }); |
102 | 102 |
103 if (g instanceof GeneratorFunction) { | 103 if (g instanceof GeneratorFunction) { |
104 testNext(function() { return new g(); }); | 104 testNext(function() { return g(); }); |
neis
2016/01/14 10:55:23
testNext(g) etc
| |
105 testSend(function() { return new g(); }); | 105 testSend(function() { return g(); }); |
106 testThrow(function() { return new g(); }); | 106 testThrow(function() { return g(); }); |
107 } | 107 } |
108 } | 108 } |
109 | 109 |
110 TestGenerator(function* g1() { }, | 110 TestGenerator(function* g1() { }, |
111 [undefined], | 111 [undefined], |
112 "foo", | 112 "foo", |
113 [undefined]); | 113 [undefined]); |
114 | 114 |
115 TestGenerator(function* g2() { yield 1; }, | 115 TestGenerator(function* g2() { yield 1; }, |
116 [1, undefined], | 116 [1, undefined], |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
240 ["fee", "fi", "fo", "fum", undefined], | 240 ["fee", "fi", "fo", "fum", undefined], |
241 "foo", | 241 "foo", |
242 ["fee", "fi", "fo", "fum", undefined]); | 242 ["fee", "fi", "fo", "fum", undefined]); |
243 | 243 |
244 // GC. | 244 // GC. |
245 TestGenerator(function* g16() { yield "baz"; gc(); yield "qux"; }, | 245 TestGenerator(function* g16() { yield "baz"; gc(); yield "qux"; }, |
246 ["baz", "qux", undefined], | 246 ["baz", "qux", undefined], |
247 "foo", | 247 "foo", |
248 ["baz", "qux", undefined]); | 248 ["baz", "qux", undefined]); |
249 | 249 |
250 // Receivers. | |
251 TestGenerator( | |
neis
2016/01/14 10:55:23
This one should still be fine, shouldn't it?
| |
252 function g17() { | |
253 function* g() { yield this.x; yield this.y; } | |
254 var o = { start: g, x: 1, y: 2 }; | |
255 return o.start(); | |
256 }, | |
257 [1, 2, undefined], | |
258 "foo", | |
259 [1, 2, undefined]); | |
260 | |
261 TestGenerator( | |
262 function g18() { | |
263 function* g() { yield this.x; yield this.y; } | |
264 var iter = new g; | |
265 iter.x = 1; | |
266 iter.y = 2; | |
267 return iter; | |
268 }, | |
269 [1, 2, undefined], | |
270 "foo", | |
271 [1, 2, undefined]); | |
272 | |
273 TestGenerator( | 250 TestGenerator( |
274 function* g19() { | 251 function* g19() { |
275 var x = 1; | 252 var x = 1; |
276 yield x; | 253 yield x; |
277 with({x:2}) { yield x; } | 254 with({x:2}) { yield x; } |
278 yield x; | 255 yield x; |
279 }, | 256 }, |
280 [1, 2, 1, undefined], | 257 [1, 2, 1, undefined], |
281 "foo", | 258 "foo", |
282 [1, 2, 1, undefined]); | 259 [1, 2, 1, undefined]); |
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
686 function TestThrowRecursion() { | 663 function TestThrowRecursion() { |
687 function* g() { yield iter.throw(1); } | 664 function* g() { yield iter.throw(1); } |
688 var iter = g(); | 665 var iter = g(); |
689 return iter.next(); | 666 return iter.next(); |
690 } | 667 } |
691 assertThrows(TestNextRecursion, Error); | 668 assertThrows(TestNextRecursion, Error); |
692 assertThrows(TestSendRecursion, Error); | 669 assertThrows(TestSendRecursion, Error); |
693 assertThrows(TestThrowRecursion, Error); | 670 assertThrows(TestThrowRecursion, Error); |
694 } | 671 } |
695 TestRecursion(); | 672 TestRecursion(); |
OLD | NEW |