Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(464)

Side by Side Diff: test/mjsunit/harmony/generators-iteration.js

Issue 132623005: A64: Synchronize with r18642. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/a64
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « test/cctest/test-heap.cc ('k') | test/mjsunit/regress/regress-2284.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 17 matching lines...) Expand all
28 // Flags: --harmony-generators --expose-gc 28 // Flags: --harmony-generators --expose-gc
29 29
30 // Test generator iteration. 30 // Test generator iteration.
31 31
32 var GeneratorFunction = (function*(){yield 1;}).__proto__.constructor; 32 var GeneratorFunction = (function*(){yield 1;}).__proto__.constructor;
33 33
34 function assertIteratorResult(value, done, result) { 34 function assertIteratorResult(value, done, result) {
35 assertEquals({ value: value, done: done}, result); 35 assertEquals({ value: value, done: done}, result);
36 } 36 }
37 37
38 function assertIteratorIsClosed(iter) {
39 assertIteratorResult(undefined, true, iter.next());
40 assertDoesNotThrow(function() { iter.next(); });
41 }
42
43 function assertThrownIteratorIsClosed(iter) {
44 // TODO(yusukesuzuki): Since status of a thrown generator is "executing",
45 // following tests are failed.
46 // https://code.google.com/p/v8/issues/detail?id=3096
47 // assertIteratorIsClosed(iter);
48 }
49
38 function TestGeneratorResultPrototype() { 50 function TestGeneratorResultPrototype() {
39 function* g() { yield 1; } 51 function* g() { yield 1; }
40 var iter = g(); 52 var iter = g();
41 var result = iter.next(); 53 var result = iter.next();
42 54
43 assertSame(Object.prototype, Object.getPrototypeOf(result)); 55 assertSame(Object.prototype, Object.getPrototypeOf(result));
44 property_names = Object.getOwnPropertyNames(result); 56 property_names = Object.getOwnPropertyNames(result);
45 property_names.sort(); 57 property_names.sort();
46 assertEquals(["done", "value"], property_names); 58 assertEquals(["done", "value"], property_names);
47 assertIteratorResult(1, false, result); 59 assertIteratorResult(1, false, result);
48 } 60 }
49 TestGeneratorResultPrototype() 61 TestGeneratorResultPrototype()
50 62
51 function TestGenerator(g, expected_values_for_next, 63 function TestGenerator(g, expected_values_for_next,
52 send_val, expected_values_for_send) { 64 send_val, expected_values_for_send) {
53 function testNext(thunk) { 65 function testNext(thunk) {
54 var iter = thunk(); 66 var iter = thunk();
55 for (var i = 0; i < expected_values_for_next.length; i++) { 67 for (var i = 0; i < expected_values_for_next.length; i++) {
56 var v1 = expected_values_for_next[i]; 68 var v1 = expected_values_for_next[i];
57 var v2 = i == expected_values_for_next.length - 1; 69 var v2 = i == expected_values_for_next.length - 1;
58 // var v3 = iter.next(); 70 // var v3 = iter.next();
59 assertIteratorResult(v1, v2, iter.next()); 71 assertIteratorResult(v1, v2, iter.next());
60 } 72 }
61 assertThrows(function() { iter.next(); }, Error); 73 assertIteratorIsClosed(iter);
62 } 74 }
63 function testSend(thunk) { 75 function testSend(thunk) {
64 var iter = thunk(); 76 var iter = thunk();
65 for (var i = 0; i < expected_values_for_send.length; i++) { 77 for (var i = 0; i < expected_values_for_send.length; i++) {
66 assertIteratorResult(expected_values_for_send[i], 78 assertIteratorResult(expected_values_for_send[i],
67 i == expected_values_for_send.length - 1, 79 i == expected_values_for_send.length - 1,
68 iter.next(send_val)); 80 iter.next(send_val));
69 } 81 }
70 assertThrows(function() { iter.next(send_val); }, Error); 82 assertIteratorIsClosed(iter);
71 } 83 }
72 function testThrow(thunk) { 84 function testThrow(thunk) {
73 for (var i = 0; i < expected_values_for_next.length; i++) { 85 for (var i = 0; i < expected_values_for_next.length; i++) {
74 var iter = thunk(); 86 var iter = thunk();
75 for (var j = 0; j < i; j++) { 87 for (var j = 0; j < i; j++) {
76 assertIteratorResult(expected_values_for_next[j], 88 assertIteratorResult(expected_values_for_next[j],
77 j == expected_values_for_next.length - 1, 89 j == expected_values_for_next.length - 1,
78 iter.next()); 90 iter.next());
79 } 91 }
80 function Sentinel() {} 92 function Sentinel() {}
81 assertThrows(function () { iter.throw(new Sentinel); }, Sentinel); 93 assertThrows(function () { iter.throw(new Sentinel); }, Sentinel);
82 assertThrows(function () { iter.next(); }, Error); 94 assertThrownIteratorIsClosed(iter);
83 } 95 }
84 } 96 }
85 97
86 testNext(g); 98 testNext(g);
87 testSend(g); 99 testSend(g);
88 testThrow(g); 100 testThrow(g);
89 101
90 testNext(function*() { return yield* g(); }); 102 testNext(function*() { return yield* g(); });
91 testSend(function*() { return yield* g(); }); 103 testSend(function*() { return yield* g(); });
92 testThrow(function*() { return yield* g(); }); 104 testThrow(function*() { return yield* g(); });
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 TestDelegatingYield(); 399 TestDelegatingYield();
388 400
389 function TestTryCatch(instantiate) { 401 function TestTryCatch(instantiate) {
390 function* g() { yield 1; try { yield 2; } catch (e) { yield e; } yield 3; } 402 function* g() { yield 1; try { yield 2; } catch (e) { yield e; } yield 3; }
391 function Sentinel() {} 403 function Sentinel() {}
392 404
393 function Test1(iter) { 405 function Test1(iter) {
394 assertIteratorResult(1, false, iter.next()); 406 assertIteratorResult(1, false, iter.next());
395 assertIteratorResult(2, false, iter.next()); 407 assertIteratorResult(2, false, iter.next());
396 assertIteratorResult(3, false, iter.next()); 408 assertIteratorResult(3, false, iter.next());
397 assertIteratorResult(undefined, true, iter.next()); 409 assertIteratorIsClosed(iter);
398 assertThrows(function() { iter.next(); }, Error);
399 } 410 }
400 Test1(instantiate(g)); 411 Test1(instantiate(g));
401 412
402 function Test2(iter) { 413 function Test2(iter) {
403 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); 414 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
404 assertThrows(function() { iter.next(); }, Error); 415 assertThrownIteratorIsClosed(iter);
405 } 416 }
406 Test2(instantiate(g)); 417 Test2(instantiate(g));
407 418
408 function Test3(iter) { 419 function Test3(iter) {
409 assertIteratorResult(1, false, iter.next()); 420 assertIteratorResult(1, false, iter.next());
410 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); 421 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
411 assertThrows(function() { iter.next(); }, Error); 422 assertThrownIteratorIsClosed(iter);
412 } 423 }
413 Test3(instantiate(g)); 424 Test3(instantiate(g));
414 425
415 function Test4(iter) { 426 function Test4(iter) {
416 assertIteratorResult(1, false, iter.next()); 427 assertIteratorResult(1, false, iter.next());
417 assertIteratorResult(2, false, iter.next()); 428 assertIteratorResult(2, false, iter.next());
418 var exn = new Sentinel; 429 var exn = new Sentinel;
419 assertIteratorResult(exn, false, iter.throw(exn)); 430 assertIteratorResult(exn, false, iter.throw(exn));
420 assertIteratorResult(3, false, iter.next()); 431 assertIteratorResult(3, false, iter.next());
421 assertIteratorResult(undefined, true, iter.next()); 432 assertIteratorIsClosed(iter);
422 assertThrows(function() { iter.next(); }, Error);
423 } 433 }
424 Test4(instantiate(g)); 434 Test4(instantiate(g));
425 435
426 function Test5(iter) { 436 function Test5(iter) {
427 assertIteratorResult(1, false, iter.next()); 437 assertIteratorResult(1, false, iter.next());
428 assertIteratorResult(2, false, iter.next()); 438 assertIteratorResult(2, false, iter.next());
429 var exn = new Sentinel; 439 var exn = new Sentinel;
430 assertIteratorResult(exn, false, iter.throw(exn)); 440 assertIteratorResult(exn, false, iter.throw(exn));
431 assertIteratorResult(3, false, iter.next()); 441 assertIteratorResult(3, false, iter.next());
432 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); 442 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
433 assertThrows(function() { iter.next(); }, Error); 443 assertThrownIteratorIsClosed(iter);
434
435 } 444 }
436 Test5(instantiate(g)); 445 Test5(instantiate(g));
437 446
438 function Test6(iter) { 447 function Test6(iter) {
439 assertIteratorResult(1, false, iter.next()); 448 assertIteratorResult(1, false, iter.next());
440 assertIteratorResult(2, false, iter.next()); 449 assertIteratorResult(2, false, iter.next());
441 var exn = new Sentinel; 450 var exn = new Sentinel;
442 assertIteratorResult(exn, false, iter.throw(exn)); 451 assertIteratorResult(exn, false, iter.throw(exn));
443 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); 452 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
444 assertThrows(function() { iter.next(); }, Error); 453 assertThrownIteratorIsClosed(iter);
445 } 454 }
446 Test6(instantiate(g)); 455 Test6(instantiate(g));
447 456
448 function Test7(iter) { 457 function Test7(iter) {
449 assertIteratorResult(1, false, iter.next()); 458 assertIteratorResult(1, false, iter.next());
450 assertIteratorResult(2, false, iter.next()); 459 assertIteratorResult(2, false, iter.next());
451 assertIteratorResult(3, false, iter.next()); 460 assertIteratorResult(3, false, iter.next());
452 assertIteratorResult(undefined, true, iter.next()); 461 assertIteratorIsClosed(iter);
453 assertThrows(function() { iter.next(); }, Error);
454 } 462 }
455 Test7(instantiate(g)); 463 Test7(instantiate(g));
456 } 464 }
457 TestTryCatch(function (g) { return g(); }); 465 TestTryCatch(function (g) { return g(); });
458 TestTryCatch(function* (g) { return yield* g(); }); 466 TestTryCatch(function* (g) { return yield* g(); });
459 467
460 function TestTryFinally(instantiate) { 468 function TestTryFinally(instantiate) {
461 function* g() { yield 1; try { yield 2; } finally { yield 3; } yield 4; } 469 function* g() { yield 1; try { yield 2; } finally { yield 3; } yield 4; }
462 function Sentinel() {} 470 function Sentinel() {}
463 function Sentinel2() {} 471 function Sentinel2() {}
464 472
465 function Test1(iter) { 473 function Test1(iter) {
466 assertIteratorResult(1, false, iter.next()); 474 assertIteratorResult(1, false, iter.next());
467 assertIteratorResult(2, false, iter.next()); 475 assertIteratorResult(2, false, iter.next());
468 assertIteratorResult(3, false, iter.next()); 476 assertIteratorResult(3, false, iter.next());
469 assertIteratorResult(4, false, iter.next()); 477 assertIteratorResult(4, false, iter.next());
470 assertIteratorResult(undefined, true, iter.next()); 478 assertIteratorIsClosed(iter);
471 assertThrows(function() { iter.next(); }, Error);
472 } 479 }
473 Test1(instantiate(g)); 480 Test1(instantiate(g));
474 481
475 function Test2(iter) { 482 function Test2(iter) {
476 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); 483 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
477 assertThrows(function() { iter.next(); }, Error); 484 assertThrownIteratorIsClosed(iter);
478 } 485 }
479 Test2(instantiate(g)); 486 Test2(instantiate(g));
480 487
481 function Test3(iter) { 488 function Test3(iter) {
482 assertIteratorResult(1, false, iter.next()); 489 assertIteratorResult(1, false, iter.next());
483 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); 490 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
484 assertThrows(function() { iter.next(); }, Error); 491 assertThrownIteratorIsClosed(iter);
485 } 492 }
486 Test3(instantiate(g)); 493 Test3(instantiate(g));
487 494
488 function Test4(iter) { 495 function Test4(iter) {
489 assertIteratorResult(1, false, iter.next()); 496 assertIteratorResult(1, false, iter.next());
490 assertIteratorResult(2, false, iter.next()); 497 assertIteratorResult(2, false, iter.next());
491 assertIteratorResult(3, false, iter.throw(new Sentinel)); 498 assertIteratorResult(3, false, iter.throw(new Sentinel));
492 assertThrows(function() { iter.next(); }, Sentinel); 499 assertThrows(function() { iter.next(); }, Sentinel);
493 assertThrows(function() { iter.next(); }, Error); 500 assertThrownIteratorIsClosed(iter);
494
495 } 501 }
496 Test4(instantiate(g)); 502 Test4(instantiate(g));
497 503
498 function Test5(iter) { 504 function Test5(iter) {
499 assertIteratorResult(1, false, iter.next()); 505 assertIteratorResult(1, false, iter.next());
500 assertIteratorResult(2, false, iter.next()); 506 assertIteratorResult(2, false, iter.next());
501 assertIteratorResult(3, false, iter.throw(new Sentinel)); 507 assertIteratorResult(3, false, iter.throw(new Sentinel));
502 assertThrows(function() { iter.throw(new Sentinel2); }, Sentinel2); 508 assertThrows(function() { iter.throw(new Sentinel2); }, Sentinel2);
503 assertThrows(function() { iter.next(); }, Error); 509 assertThrownIteratorIsClosed(iter);
504 } 510 }
505 Test5(instantiate(g)); 511 Test5(instantiate(g));
506 512
507 function Test6(iter) { 513 function Test6(iter) {
508 assertIteratorResult(1, false, iter.next()); 514 assertIteratorResult(1, false, iter.next());
509 assertIteratorResult(2, false, iter.next()); 515 assertIteratorResult(2, false, iter.next());
510 assertIteratorResult(3, false, iter.next()); 516 assertIteratorResult(3, false, iter.next());
511 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); 517 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
512 assertThrows(function() { iter.next(); }, Error); 518 assertThrownIteratorIsClosed(iter);
513 } 519 }
514 Test6(instantiate(g)); 520 Test6(instantiate(g));
515 521
516 function Test7(iter) { 522 function Test7(iter) {
517 assertIteratorResult(1, false, iter.next()); 523 assertIteratorResult(1, false, iter.next());
518 assertIteratorResult(2, false, iter.next()); 524 assertIteratorResult(2, false, iter.next());
519 assertIteratorResult(3, false, iter.next()); 525 assertIteratorResult(3, false, iter.next());
520 assertIteratorResult(4, false, iter.next()); 526 assertIteratorResult(4, false, iter.next());
521 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); 527 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
522 assertThrows(function() { iter.next(); }, Error); 528 assertThrownIteratorIsClosed(iter);
523 } 529 }
524 Test7(instantiate(g)); 530 Test7(instantiate(g));
525 531
526 function Test8(iter) { 532 function Test8(iter) {
527 assertIteratorResult(1, false, iter.next()); 533 assertIteratorResult(1, false, iter.next());
528 assertIteratorResult(2, false, iter.next()); 534 assertIteratorResult(2, false, iter.next());
529 assertIteratorResult(3, false, iter.next()); 535 assertIteratorResult(3, false, iter.next());
530 assertIteratorResult(4, false, iter.next()); 536 assertIteratorResult(4, false, iter.next());
531 assertIteratorResult(undefined, true, iter.next()); 537 assertIteratorIsClosed(iter);
532 assertThrows(function() { iter.next(); }, Error);
533
534 } 538 }
535 Test8(instantiate(g)); 539 Test8(instantiate(g));
536 } 540 }
537 TestTryFinally(function (g) { return g(); }); 541 TestTryFinally(function (g) { return g(); });
538 TestTryFinally(function* (g) { return yield* g(); }); 542 TestTryFinally(function* (g) { return yield* g(); });
539 543
540 function TestNestedTry(instantiate) { 544 function TestNestedTry(instantiate) {
541 function* g() { 545 function* g() {
542 try { 546 try {
543 yield 1; 547 yield 1;
544 try { yield 2; } catch (e) { yield e; } 548 try { yield 2; } catch (e) { yield e; }
545 yield 3; 549 yield 3;
546 } finally { 550 } finally {
547 yield 4; 551 yield 4;
548 } 552 }
549 yield 5; 553 yield 5;
550 } 554 }
551 function Sentinel() {} 555 function Sentinel() {}
552 function Sentinel2() {} 556 function Sentinel2() {}
553 557
554 function Test1(iter) { 558 function Test1(iter) {
555 assertIteratorResult(1, false, iter.next()); 559 assertIteratorResult(1, false, iter.next());
556 assertIteratorResult(2, false, iter.next()); 560 assertIteratorResult(2, false, iter.next());
557 assertIteratorResult(3, false, iter.next()); 561 assertIteratorResult(3, false, iter.next());
558 assertIteratorResult(4, false, iter.next()); 562 assertIteratorResult(4, false, iter.next());
559 assertIteratorResult(5, false, iter.next()); 563 assertIteratorResult(5, false, iter.next());
560 assertIteratorResult(undefined, true, iter.next()); 564 assertIteratorIsClosed(iter);
561 assertThrows(function() { iter.next(); }, Error);
562 } 565 }
563 Test1(instantiate(g)); 566 Test1(instantiate(g));
564 567
565 function Test2(iter) { 568 function Test2(iter) {
566 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel); 569 assertThrows(function() { iter.throw(new Sentinel); }, Sentinel);
567 assertThrows(function() { iter.next(); }, Error); 570 assertThrownIteratorIsClosed(iter);
568 } 571 }
569 Test2(instantiate(g)); 572 Test2(instantiate(g));
570 573
571 function Test3(iter) { 574 function Test3(iter) {
572 assertIteratorResult(1, false, iter.next()); 575 assertIteratorResult(1, false, iter.next());
573 assertIteratorResult(4, false, iter.throw(new Sentinel)); 576 assertIteratorResult(4, false, iter.throw(new Sentinel));
574 assertThrows(function() { iter.next(); }, Sentinel); 577 assertThrows(function() { iter.next(); }, Sentinel);
575 assertThrows(function() { iter.next(); }, Error); 578 assertThrownIteratorIsClosed(iter);
576 } 579 }
577 Test3(instantiate(g)); 580 Test3(instantiate(g));
578 581
579 function Test4(iter) { 582 function Test4(iter) {
580 assertIteratorResult(1, false, iter.next()); 583 assertIteratorResult(1, false, iter.next());
581 assertIteratorResult(4, false, iter.throw(new Sentinel)); 584 assertIteratorResult(4, false, iter.throw(new Sentinel));
582 assertThrows(function() { iter.throw(new Sentinel2); }, Sentinel2); 585 assertThrows(function() { iter.throw(new Sentinel2); }, Sentinel2);
583 assertThrows(function() { iter.next(); }, Error); 586 assertThrownIteratorIsClosed(iter);
584 } 587 }
585 Test4(instantiate(g)); 588 Test4(instantiate(g));
586 589
587 function Test5(iter) { 590 function Test5(iter) {
588 assertIteratorResult(1, false, iter.next()); 591 assertIteratorResult(1, false, iter.next());
589 assertIteratorResult(2, false, iter.next()); 592 assertIteratorResult(2, false, iter.next());
590 var exn = new Sentinel; 593 var exn = new Sentinel;
591 assertIteratorResult(exn, false, iter.throw(exn)); 594 assertIteratorResult(exn, false, iter.throw(exn));
592 assertIteratorResult(3, false, iter.next()); 595 assertIteratorResult(3, false, iter.next());
593 assertIteratorResult(4, false, iter.next()); 596 assertIteratorResult(4, false, iter.next());
594 assertIteratorResult(5, false, iter.next()); 597 assertIteratorResult(5, false, iter.next());
595 assertIteratorResult(undefined, true, iter.next()); 598 assertIteratorIsClosed(iter);
596 assertThrows(function() { iter.next(); }, Error);
597
598 } 599 }
599 Test5(instantiate(g)); 600 Test5(instantiate(g));
600 601
601 function Test6(iter) { 602 function Test6(iter) {
602 assertIteratorResult(1, false, iter.next()); 603 assertIteratorResult(1, false, iter.next());
603 assertIteratorResult(2, false, iter.next()); 604 assertIteratorResult(2, false, iter.next());
604 var exn = new Sentinel; 605 var exn = new Sentinel;
605 assertIteratorResult(exn, false, iter.throw(exn)); 606 assertIteratorResult(exn, false, iter.throw(exn));
606 assertIteratorResult(4, false, iter.throw(new Sentinel2)); 607 assertIteratorResult(4, false, iter.throw(new Sentinel2));
607 assertThrows(function() { iter.next(); }, Sentinel2); 608 assertThrows(function() { iter.next(); }, Sentinel2);
608 assertThrows(function() { iter.next(); }, Error); 609 assertThrownIteratorIsClosed(iter);
609 } 610 }
610 Test6(instantiate(g)); 611 Test6(instantiate(g));
611 612
612 function Test7(iter) { 613 function Test7(iter) {
613 assertIteratorResult(1, false, iter.next()); 614 assertIteratorResult(1, false, iter.next());
614 assertIteratorResult(2, false, iter.next()); 615 assertIteratorResult(2, false, iter.next());
615 var exn = new Sentinel; 616 var exn = new Sentinel;
616 assertIteratorResult(exn, false, iter.throw(exn)); 617 assertIteratorResult(exn, false, iter.throw(exn));
617 assertIteratorResult(3, false, iter.next()); 618 assertIteratorResult(3, false, iter.next());
618 assertIteratorResult(4, false, iter.throw(new Sentinel2)); 619 assertIteratorResult(4, false, iter.throw(new Sentinel2));
619 assertThrows(function() { iter.next(); }, Sentinel2); 620 assertThrows(function() { iter.next(); }, Sentinel2);
620 assertThrows(function() { iter.next(); }, Error); 621 assertThrownIteratorIsClosed(iter);
621
622 } 622 }
623 Test7(instantiate(g)); 623 Test7(instantiate(g));
624 624
625 // That's probably enough. 625 // That's probably enough.
626 } 626 }
627 TestNestedTry(function (g) { return g(); }); 627 TestNestedTry(function (g) { return g(); });
628 TestNestedTry(function* (g) { return yield* g(); }); 628 TestNestedTry(function* (g) { return yield* g(); });
629 629
630 function TestRecursion() { 630 function TestRecursion() {
631 function TestNextRecursion() { 631 function TestNextRecursion() {
632 function* g() { yield iter.next(); } 632 function* g() { yield iter.next(); }
633 var iter = g(); 633 var iter = g();
634 return iter.next(); 634 return iter.next();
635 } 635 }
636 function TestSendRecursion() { 636 function TestSendRecursion() {
637 function* g() { yield iter.next(42); } 637 function* g() { yield iter.next(42); }
638 var iter = g(); 638 var iter = g();
639 return iter.next(); 639 return iter.next();
640 } 640 }
641 function TestThrowRecursion() { 641 function TestThrowRecursion() {
642 function* g() { yield iter.throw(1); } 642 function* g() { yield iter.throw(1); }
643 var iter = g(); 643 var iter = g();
644 return iter.next(); 644 return iter.next();
645 } 645 }
646 assertThrows(TestNextRecursion, Error); 646 assertThrows(TestNextRecursion, Error);
647 assertThrows(TestSendRecursion, Error); 647 assertThrows(TestSendRecursion, Error);
648 assertThrows(TestThrowRecursion, Error); 648 assertThrows(TestThrowRecursion, Error);
649 } 649 }
650 TestRecursion(); 650 TestRecursion();
OLDNEW
« no previous file with comments | « test/cctest/test-heap.cc ('k') | test/mjsunit/regress/regress-2284.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698