summaryrefslogtreecommitdiffstats
path: root/js/src/tests/ecma_6/Generators/delegating-yield-4.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/ecma_6/Generators/delegating-yield-4.js')
-rw-r--r--js/src/tests/ecma_6/Generators/delegating-yield-4.js18
1 files changed, 18 insertions, 0 deletions
diff --git a/js/src/tests/ecma_6/Generators/delegating-yield-4.js b/js/src/tests/ecma_6/Generators/delegating-yield-4.js
new file mode 100644
index 000000000..c07673172
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/delegating-yield-4.js
@@ -0,0 +1,18 @@
+// With yield*, inner and outer iterators can be invoked separately.
+
+function* g(n) { for (var i=0; i<n; i++) yield i; }
+function* delegate(iter) { return yield* iter; }
+
+var inner = g(20);
+var outer1 = delegate(inner);
+var outer2 = delegate(inner);
+
+assertIteratorNext(outer1, 0);
+assertIteratorNext(outer2, 1);
+assertIteratorNext(inner, 2);
+assertIteratorNext(outer1, 3);
+assertIteratorNext(outer2, 4);
+assertIteratorNext(inner, 5);
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);