| Index: test/mjsunit/harmony/generators-iteration.js
|
| diff --git a/test/mjsunit/harmony/generators-iteration.js b/test/mjsunit/harmony/generators-iteration.js
|
| index 18bfc505197ac3f51250e697bae1c523aa0f7a4b..d86a20f9e7da2cd52a59dd3cb15eb4bcfea76ec8 100644
|
| --- a/test/mjsunit/harmony/generators-iteration.js
|
| +++ b/test/mjsunit/harmony/generators-iteration.js
|
| @@ -35,6 +35,18 @@ function assertIteratorResult(value, done, result) {
|
| assertEquals({ value: value, done: done}, result);
|
| }
|
|
|
| +function assertIteratorIsClosed(iter) {
|
| + assertIteratorResult(undefined, true, iter.next());
|
| + assertDoesNotThrow(function() { iter.next(); });
|
| +}
|
| +
|
| +function assertThrownIteratorIsClosed(iter) {
|
| + // TODO(yusukesuzuki): Since status of a thrown generator is "executing",
|
| + // following tests are failed.
|
| + // https://code.google.com/p/v8/issues/detail?id=3096
|
| + // assertIteratorIsClosed(iter);
|
| +}
|
| +
|
| function TestGeneratorResultPrototype() {
|
| function* g() { yield 1; }
|
| var iter = g();
|
| @@ -58,7 +70,7 @@ function TestGenerator(g, expected_values_for_next,
|
| // var v3 = iter.next();
|
| assertIteratorResult(v1, v2, iter.next());
|
| }
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertIteratorIsClosed(iter);
|
| }
|
| function testSend(thunk) {
|
| var iter = thunk();
|
| @@ -67,7 +79,7 @@ function TestGenerator(g, expected_values_for_next,
|
| i == expected_values_for_send.length - 1,
|
| iter.next(send_val));
|
| }
|
| - assertThrows(function() { iter.next(send_val); }, Error);
|
| + assertIteratorIsClosed(iter);
|
| }
|
| function testThrow(thunk) {
|
| for (var i = 0; i < expected_values_for_next.length; i++) {
|
| @@ -79,7 +91,7 @@ function TestGenerator(g, expected_values_for_next,
|
| }
|
| function Sentinel() {}
|
| assertThrows(function () { iter.throw(new Sentinel); }, Sentinel);
|
| - assertThrows(function () { iter.next(); }, Error);
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| }
|
|
|
| @@ -394,21 +406,20 @@ function TestTryCatch(instantiate) {
|
| assertIteratorResult(1, false, iter.next());
|
| assertIteratorResult(2, false, iter.next());
|
| assertIteratorResult(3, false, iter.next());
|
| - assertIteratorResult(undefined, true, iter.next());
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertIteratorIsClosed(iter);
|
| }
|
| Test1(instantiate(g));
|
|
|
| function Test2(iter) {
|
| assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test2(instantiate(g));
|
|
|
| function Test3(iter) {
|
| assertIteratorResult(1, false, iter.next());
|
| assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test3(instantiate(g));
|
|
|
| @@ -418,8 +429,7 @@ function TestTryCatch(instantiate) {
|
| var exn = new Sentinel;
|
| assertIteratorResult(exn, false, iter.throw(exn));
|
| assertIteratorResult(3, false, iter.next());
|
| - assertIteratorResult(undefined, true, iter.next());
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertIteratorIsClosed(iter);
|
| }
|
| Test4(instantiate(g));
|
|
|
| @@ -430,8 +440,7 @@ function TestTryCatch(instantiate) {
|
| assertIteratorResult(exn, false, iter.throw(exn));
|
| assertIteratorResult(3, false, iter.next());
|
| assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| -
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test5(instantiate(g));
|
|
|
| @@ -441,7 +450,7 @@ function TestTryCatch(instantiate) {
|
| var exn = new Sentinel;
|
| assertIteratorResult(exn, false, iter.throw(exn));
|
| assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test6(instantiate(g));
|
|
|
| @@ -449,8 +458,7 @@ function TestTryCatch(instantiate) {
|
| assertIteratorResult(1, false, iter.next());
|
| assertIteratorResult(2, false, iter.next());
|
| assertIteratorResult(3, false, iter.next());
|
| - assertIteratorResult(undefined, true, iter.next());
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertIteratorIsClosed(iter);
|
| }
|
| Test7(instantiate(g));
|
| }
|
| @@ -467,21 +475,20 @@ function TestTryFinally(instantiate) {
|
| assertIteratorResult(2, false, iter.next());
|
| assertIteratorResult(3, false, iter.next());
|
| assertIteratorResult(4, false, iter.next());
|
| - assertIteratorResult(undefined, true, iter.next());
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertIteratorIsClosed(iter);
|
| }
|
| Test1(instantiate(g));
|
|
|
| function Test2(iter) {
|
| assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test2(instantiate(g));
|
|
|
| function Test3(iter) {
|
| assertIteratorResult(1, false, iter.next());
|
| assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test3(instantiate(g));
|
|
|
| @@ -490,8 +497,7 @@ function TestTryFinally(instantiate) {
|
| assertIteratorResult(2, false, iter.next());
|
| assertIteratorResult(3, false, iter.throw(new Sentinel));
|
| assertThrows(function() { iter.next(); }, Sentinel);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| -
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test4(instantiate(g));
|
|
|
| @@ -500,7 +506,7 @@ function TestTryFinally(instantiate) {
|
| assertIteratorResult(2, false, iter.next());
|
| assertIteratorResult(3, false, iter.throw(new Sentinel));
|
| assertThrows(function() { iter.throw(new Sentinel2); }, Sentinel2);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test5(instantiate(g));
|
|
|
| @@ -509,7 +515,7 @@ function TestTryFinally(instantiate) {
|
| assertIteratorResult(2, false, iter.next());
|
| assertIteratorResult(3, false, iter.next());
|
| assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test6(instantiate(g));
|
|
|
| @@ -519,7 +525,7 @@ function TestTryFinally(instantiate) {
|
| assertIteratorResult(3, false, iter.next());
|
| assertIteratorResult(4, false, iter.next());
|
| assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test7(instantiate(g));
|
|
|
| @@ -528,9 +534,7 @@ function TestTryFinally(instantiate) {
|
| assertIteratorResult(2, false, iter.next());
|
| assertIteratorResult(3, false, iter.next());
|
| assertIteratorResult(4, false, iter.next());
|
| - assertIteratorResult(undefined, true, iter.next());
|
| - assertThrows(function() { iter.next(); }, Error);
|
| -
|
| + assertIteratorIsClosed(iter);
|
| }
|
| Test8(instantiate(g));
|
| }
|
| @@ -557,14 +561,13 @@ function TestNestedTry(instantiate) {
|
| assertIteratorResult(3, false, iter.next());
|
| assertIteratorResult(4, false, iter.next());
|
| assertIteratorResult(5, false, iter.next());
|
| - assertIteratorResult(undefined, true, iter.next());
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertIteratorIsClosed(iter);
|
| }
|
| Test1(instantiate(g));
|
|
|
| function Test2(iter) {
|
| assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test2(instantiate(g));
|
|
|
| @@ -572,7 +575,7 @@ function TestNestedTry(instantiate) {
|
| assertIteratorResult(1, false, iter.next());
|
| assertIteratorResult(4, false, iter.throw(new Sentinel));
|
| assertThrows(function() { iter.next(); }, Sentinel);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test3(instantiate(g));
|
|
|
| @@ -580,7 +583,7 @@ function TestNestedTry(instantiate) {
|
| assertIteratorResult(1, false, iter.next());
|
| assertIteratorResult(4, false, iter.throw(new Sentinel));
|
| assertThrows(function() { iter.throw(new Sentinel2); }, Sentinel2);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test4(instantiate(g));
|
|
|
| @@ -592,9 +595,7 @@ function TestNestedTry(instantiate) {
|
| assertIteratorResult(3, false, iter.next());
|
| assertIteratorResult(4, false, iter.next());
|
| assertIteratorResult(5, false, iter.next());
|
| - assertIteratorResult(undefined, true, iter.next());
|
| - assertThrows(function() { iter.next(); }, Error);
|
| -
|
| + assertIteratorIsClosed(iter);
|
| }
|
| Test5(instantiate(g));
|
|
|
| @@ -605,7 +606,7 @@ function TestNestedTry(instantiate) {
|
| assertIteratorResult(exn, false, iter.throw(exn));
|
| assertIteratorResult(4, false, iter.throw(new Sentinel2));
|
| assertThrows(function() { iter.next(); }, Sentinel2);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test6(instantiate(g));
|
|
|
| @@ -617,8 +618,7 @@ function TestNestedTry(instantiate) {
|
| assertIteratorResult(3, false, iter.next());
|
| assertIteratorResult(4, false, iter.throw(new Sentinel2));
|
| assertThrows(function() { iter.next(); }, Sentinel2);
|
| - assertThrows(function() { iter.next(); }, Error);
|
| -
|
| + assertThrownIteratorIsClosed(iter);
|
| }
|
| Test7(instantiate(g));
|
|
|
|
|