mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-06-25 20:29:33 +00:00
38 lines
922 B
JavaScript
38 lines
922 B
JavaScript
// Test that yield* can appear in a loop, and inside yield.
|
|
|
|
function* countdown(n) {
|
|
while (n > 0) {
|
|
yield (yield* countdown(--n));
|
|
}
|
|
return 34;
|
|
}
|
|
|
|
function collect_results(iter) {
|
|
var ret = [];
|
|
var result;
|
|
do {
|
|
result = iter.next();
|
|
ret.push(result);
|
|
} while (!result.done);
|
|
return ret;
|
|
}
|
|
|
|
var expected = [
|
|
// Only 34 yielded from the "yield" and the last return make it out.
|
|
// Three yields in countdown(3), two in countdown(2), and one in
|
|
// countdown(1) (called twice).
|
|
{value: 34, done: false},
|
|
{value: 34, done: false},
|
|
{value: 34, done: false},
|
|
{value: 34, done: false},
|
|
{value: 34, done: false},
|
|
{value: 34, done: false},
|
|
{value: 34, done: false},
|
|
{value: 34, done: true}, // final
|
|
];
|
|
|
|
assertDeepEq(collect_results(countdown(3)), expected);
|
|
|
|
if (typeof reportCompare == "function")
|
|
reportCompare(true, true);
|