| Index: test/mjsunit/harmony/generators-iteration.js
|
| diff --git a/test/mjsunit/harmony/generators-iteration.js b/test/mjsunit/harmony/generators-iteration.js
|
| index e54aeabd75cb2e9f3e93951a5ffd95358840c942..e60e2a94e2dab051a37525a7b3efad3e3ec907ea 100644
|
| --- a/test/mjsunit/harmony/generators-iteration.js
|
| +++ b/test/mjsunit/harmony/generators-iteration.js
|
| @@ -25,7 +25,7 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -// Flags: --harmony-generators --expose-gc
|
| +// Flags: --harmony-generators --expose-gc --harmony-iteration
|
|
|
| // Test generator iteration.
|
|
|
| @@ -355,6 +355,32 @@ TestGenerator(
|
| "foo",
|
| [undefined, undefined]);
|
|
|
| +// TODO(wingo): We should use TestGenerator for these, except that
|
| +// currently yield* will unconditionally propagate a throw() to the
|
| +// delegate iterator, which fails for these iterators that don't have
|
| +// throw(). See http://code.google.com/p/v8/issues/detail?id=3484.
|
| +(function() {
|
| + function* g28() {
|
| + yield* [1, 2, 3];
|
| + }
|
| + var iter = g28();
|
| + assertIteratorResult(1, false, iter.next());
|
| + assertIteratorResult(2, false, iter.next());
|
| + assertIteratorResult(3, false, iter.next());
|
| + assertIteratorResult(undefined, true, iter.next());
|
| +})();
|
| +
|
| +(function() {
|
| + function* g29() {
|
| + yield* "abc";
|
| + }
|
| + var iter = g29();
|
| + assertIteratorResult("a", false, iter.next());
|
| + assertIteratorResult("b", false, iter.next());
|
| + assertIteratorResult("c", false, iter.next());
|
| + assertIteratorResult(undefined, true, iter.next());
|
| +})();
|
| +
|
| // Generator function instances.
|
| TestGenerator(GeneratorFunction(),
|
| [undefined],
|
| @@ -393,12 +419,16 @@ function TestDelegatingYield() {
|
| function next() {
|
| return results[i++];
|
| }
|
| - return { next: next }
|
| + var iter = { next: next };
|
| + var ret = {};
|
| + ret[Symbol.iterator] = function() { return iter; };
|
| + return ret;
|
| }
|
| function* yield_results(expected) {
|
| return yield* results(expected);
|
| }
|
| - function collect_results(iter) {
|
| + function collect_results(iterable) {
|
| + var iter = iterable[Symbol.iterator]();
|
| var ret = [];
|
| var result;
|
| do {
|
|
|