diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-after/exec.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-after/exec.js new file mode 100644 index 000000000000..18a3b07a8cb5 --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-after/exec.js @@ -0,0 +1,15 @@ +"use strict"; + +const results = [0, 1, 2]; +const fns = []; + +for (let result of results) { + result = result * 2; + fns.push(() => { + return result; + }); +} + +expect(fns[0]()).toBe(0); +expect(fns[1]()).toBe(2); +expect(fns[2]()).toBe(4); diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-after/input.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-after/input.js new file mode 100644 index 000000000000..bd369896a5c3 --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-after/input.js @@ -0,0 +1,6 @@ +for (let result of results) { + result = otherValue; + fn(() => { + result; + }); +} diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-after/options.json b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-after/options.json new file mode 100644 index 000000000000..4830b713117e --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-after/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + ["transform-block-scoping", { "loose": true }], + "transform-for-of" + ] +} diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-after/output.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-after/output.js new file mode 100644 index 000000000000..e8ebf2e84e89 --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-after/output.js @@ -0,0 +1,22 @@ +var _loop = function (_result) { + _result = otherValue; + fn(() => { + _result; + }); + result = _result; +}; + +var _iterator = babelHelpers.createForOfIteratorHelper(results), + _step; + +try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var result = _step.value; + + _loop(result); + } +} catch (err) { + _iterator.e(err); +} finally { + _iterator.f(); +} diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-before/exec.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-before/exec.js new file mode 100644 index 000000000000..18a3b07a8cb5 --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-before/exec.js @@ -0,0 +1,15 @@ +"use strict"; + +const results = [0, 1, 2]; +const fns = []; + +for (let result of results) { + result = result * 2; + fns.push(() => { + return result; + }); +} + +expect(fns[0]()).toBe(0); +expect(fns[1]()).toBe(2); +expect(fns[2]()).toBe(4); diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-before/input.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-before/input.js new file mode 100644 index 000000000000..bd369896a5c3 --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-before/input.js @@ -0,0 +1,6 @@ +for (let result of results) { + result = otherValue; + fn(() => { + result; + }); +} diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-before/options.json b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-before/options.json new file mode 100644 index 000000000000..cd7397f15a8a --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-before/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "transform-for-of", + ["transform-block-scoping", { "loose": true }] + ] +} diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-before/output.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-before/output.js new file mode 100644 index 000000000000..18072d8f626b --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-before/output.js @@ -0,0 +1,20 @@ +var _iterator = babelHelpers.createForOfIteratorHelper(results), + _step; + +try { + var _loop = function () { + var result = _step.value; + result = otherValue; + fn(() => { + result; + }); + }; + + for (_iterator.s(); !(_step = _iterator.n()).done;) { + _loop(); + } +} catch (err) { + _iterator.e(err); +} finally { + _iterator.f(); +} diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-after/exec.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-after/exec.js new file mode 100644 index 000000000000..18a3b07a8cb5 --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-after/exec.js @@ -0,0 +1,15 @@ +"use strict"; + +const results = [0, 1, 2]; +const fns = []; + +for (let result of results) { + result = result * 2; + fns.push(() => { + return result; + }); +} + +expect(fns[0]()).toBe(0); +expect(fns[1]()).toBe(2); +expect(fns[2]()).toBe(4); diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-after/input.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-after/input.js new file mode 100644 index 000000000000..bd369896a5c3 --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-after/input.js @@ -0,0 +1,6 @@ +for (let result of results) { + result = otherValue; + fn(() => { + result; + }); +} diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-after/options.json b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-after/options.json new file mode 100644 index 000000000000..fe50de04b18d --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-after/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + ["transform-block-scoping", { "loose": true }], + ["transform-for-of", { "loose": true }] + ] +} diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-after/output.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-after/output.js new file mode 100644 index 000000000000..2cc12e89c676 --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-after/output.js @@ -0,0 +1,13 @@ +var _loop = function (_result) { + _result = otherValue; + fn(() => { + _result; + }); + result = _result; +}; + +for (var _iterator = babelHelpers.createForOfIteratorHelperLoose(results), _step; !(_step = _iterator()).done;) { + var result = _step.value; + + _loop(result); +} diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-before/exec.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-before/exec.js new file mode 100644 index 000000000000..18a3b07a8cb5 --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-before/exec.js @@ -0,0 +1,15 @@ +"use strict"; + +const results = [0, 1, 2]; +const fns = []; + +for (let result of results) { + result = result * 2; + fns.push(() => { + return result; + }); +} + +expect(fns[0]()).toBe(0); +expect(fns[1]()).toBe(2); +expect(fns[2]()).toBe(4); diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-before/input.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-before/input.js new file mode 100644 index 000000000000..bd369896a5c3 --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-before/input.js @@ -0,0 +1,6 @@ +for (let result of results) { + result = otherValue; + fn(() => { + result; + }); +} diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-before/options.json b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-before/options.json new file mode 100644 index 000000000000..741abfaf85da --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-before/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + ["transform-for-of", { "loose": true }], + ["transform-block-scoping", { "loose": true }] + ] +} diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-before/output.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-before/output.js new file mode 100644 index 000000000000..ef31604d8090 --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-8128-for-of-loose-before/output.js @@ -0,0 +1,11 @@ +var _loop = function () { + var result = _step.value; + result = otherValue; + fn(() => { + result; + }); +}; + +for (var _iterator = babelHelpers.createForOfIteratorHelperLoose(results), _step; !(_step = _iterator()).done;) { + _loop(); +}