diff --git a/test/core/fixtures/transformation/regenerator/destructuring/exec.js b/test/core/fixtures/transformation/regenerator/destructuring/exec.js index 74452f773a..32890be3aa 100644 --- a/test/core/fixtures/transformation/regenerator/destructuring/exec.js +++ b/test/core/fixtures/transformation/regenerator/destructuring/exec.js @@ -11,3 +11,41 @@ function* foo2({ bar = 0 }) { assert.equal(foo2({ bar: undefined }).next().value, 0); assert.equal(foo2({ bar: 3 }).next().value, 3); + +function* foo3() { + loop: + while(true) { + // Changing "let" to "var" makes the tests pass. + let { what, value } = yield "iteration"; + + switch(what) { + case "one": + // Removing these 5 lines makes the tests pass. + if(value === 1) { + break; + } else if(value === 2) { + break; + } + + case "two": + // Removing these 3 lines makes the tests pass. + ["a", "b"].map(function(v) { + return value + v; + }); + + break; + + case "three": + break loop; + } + } +} + +var gen3 = foo3(); + +assert.equal(gen3.next().value, "iteration"); +assert.equal(gen3.next({what: "one", value: 3}).done, false); +assert.equal(gen3.next({what: "one", value: 2}).done, false); +assert.equal(gen3.next({what: "one", value: 1}).done, false); +assert.equal(gen3.next({what: "two", value: "sometext"}).done, false); +assert.equal(gen3.next({what: "three"}).done, true);