From 6491018c21308b5e85544f7c219243b0b4c47e57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Mlad=C3=BD?= Date: Wed, 8 Apr 2015 14:14:45 +0200 Subject: [PATCH] Add failing tests that document ES 6 generators bug --- .../regenerator/destructuring/exec.js | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) 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);