diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/empty-array-pattern/exec.js b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/empty-array-pattern/exec.js index 4a74739479ba..55c2b9bad62f 100644 --- a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/empty-array-pattern/exec.js +++ b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/empty-array-pattern/exec.js @@ -24,6 +24,7 @@ expect(() => { var [] = { [Symbol.iterator]: async function*() {} }; }).not.toThrow(); +// iterator.return should be called var returnCalled = false; var [] = { [Symbol.iterator]: () => { @@ -36,3 +37,13 @@ var [] = { }, }; expect(returnCalled).toStrictEqual(true); + +// #15154 +expect(() => { + var [] = { [Symbol.iterator]: () => [] }; +}).not.toThrow(); + +// #15168 +expect(() => { + var [] = { [Symbol.iterator]: () => async function* () {} }; +}).not.toThrow(); diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/empty-array-pattern/input.js b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/empty-array-pattern/input.js index 064f8902399d..74c70fd8373f 100644 --- a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/empty-array-pattern/input.js +++ b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/empty-array-pattern/input.js @@ -11,6 +11,7 @@ var [] = { [Symbol.iterator]: () => ({}) }; var [] = { [Symbol.iterator]: () => () => {} }; var [] = { [Symbol.iterator]: async function*() {} }; +// iterator.return should be called var returnCalled = false; var [] = { [Symbol.iterator]: () => { @@ -22,3 +23,9 @@ var [] = { }; }, }; + +// #15154 +var [] = { [Symbol.iterator]: () => [] }; + +// #15168 +var [] = { [Symbol.iterator]: () => async function* () {} }; diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/empty-array-pattern/output.js b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/empty-array-pattern/output.js index a5f12c42ff7a..9f8606f40f82 100644 --- a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/empty-array-pattern/output.js +++ b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/empty-array-pattern/output.js @@ -47,6 +47,8 @@ var _Symbol$iterator7 = { }) }, _Symbol$iterator8 = babelHelpers.slicedToArray(_Symbol$iterator7, 0); + +// iterator.return should be called var returnCalled = false; var _Symbol$iterator9 = { [Symbol.iterator]: () => { @@ -59,3 +61,25 @@ var _Symbol$iterator9 = { } }, _Symbol$iterator10 = babelHelpers.slicedToArray(_Symbol$iterator9, 0); + +// #15154 +var _Symbol$iterator11 = { + [Symbol.iterator]: () => [] + }, + _Symbol$iterator12 = babelHelpers.slicedToArray(_Symbol$iterator11, 0); + +// #15168 +var _Symbol$iterator13 = { + [Symbol.iterator]: () => /*#__PURE__*/babelHelpers.regeneratorRuntime().mark(function _callee3() { + return babelHelpers.regeneratorRuntime().async(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + case "end": + return _context3.stop(); + } + } + }, _callee3, null, null, Promise); + }) + }, + _Symbol$iterator14 = babelHelpers.slicedToArray(_Symbol$iterator13, 0); diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15154/exec.js b/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15154/exec.js deleted file mode 100644 index 200fe886738f..000000000000 --- a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15154/exec.js +++ /dev/null @@ -1,3 +0,0 @@ -expect(() => { - var [] = { [Symbol.iterator]: () => [] }; -}).not.toThrow(); diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15154/input.js b/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15154/input.js deleted file mode 100644 index fa976372b57a..000000000000 --- a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15154/input.js +++ /dev/null @@ -1 +0,0 @@ -var [] = { [Symbol.iterator]: () => [] }; diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15154/options.json b/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15154/options.json deleted file mode 100644 index 84e28c07f51e..000000000000 --- a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15154/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["transform-destructuring"] -} diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15154/output.js b/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15154/output.js deleted file mode 100644 index 678e2655ef49..000000000000 --- a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15154/output.js +++ /dev/null @@ -1,4 +0,0 @@ -var _Symbol$iterator = { - [Symbol.iterator]: () => [] - }, - _Symbol$iterator2 = babelHelpers.slicedToArray(_Symbol$iterator, 0); diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15168/exec.js b/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15168/exec.js deleted file mode 100644 index d1a3ff74de70..000000000000 --- a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15168/exec.js +++ /dev/null @@ -1,3 +0,0 @@ -expect(() => { - var [] = { [Symbol.iterator]: () => async function* () {} }; -}).not.toThrow(); diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15168/input.js b/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15168/input.js deleted file mode 100644 index e7edfef99ff4..000000000000 --- a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15168/input.js +++ /dev/null @@ -1 +0,0 @@ -var [] = { [Symbol.iterator]: () => async function* () {} }; diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15168/output.js b/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15168/output.js deleted file mode 100644 index cf218b07135d..000000000000 --- a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15168/output.js +++ /dev/null @@ -1,12 +0,0 @@ -var _Symbol$iterator = { - [Symbol.iterator]: () => /*#__PURE__*/babelHelpers.regeneratorRuntime().mark(function _callee() { - return babelHelpers.regeneratorRuntime().async(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { - case 0: - case "end": - return _context.stop(); - } - }, _callee, null, null, Promise); - }) - }, - _Symbol$iterator2 = babelHelpers.slicedToArray(_Symbol$iterator, 0); diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15177/exec.js b/packages/babel-plugin-transform-regenerator/test/fixtures/misc/delegated-yield-invalid-iterator/exec.js similarity index 94% rename from packages/babel-plugin-transform-regenerator/test/fixtures/regression/15177/exec.js rename to packages/babel-plugin-transform-regenerator/test/fixtures/misc/delegated-yield-invalid-iterator/exec.js index 2535a6cd0a68..230e9f1b8cc3 100644 --- a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15177/exec.js +++ b/packages/babel-plugin-transform-regenerator/test/fixtures/misc/delegated-yield-invalid-iterator/exec.js @@ -1,3 +1,4 @@ +// #15177 expect(() => { var [x] = { [Symbol.iterator]: function* () { diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15177/input.js b/packages/babel-plugin-transform-regenerator/test/fixtures/misc/delegated-yield-invalid-iterator/input.js similarity index 91% rename from packages/babel-plugin-transform-regenerator/test/fixtures/regression/15177/input.js rename to packages/babel-plugin-transform-regenerator/test/fixtures/misc/delegated-yield-invalid-iterator/input.js index 70028b8953fc..bd0c6cf6ad67 100644 --- a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15177/input.js +++ b/packages/babel-plugin-transform-regenerator/test/fixtures/misc/delegated-yield-invalid-iterator/input.js @@ -1,3 +1,4 @@ +// #15177 var [x] = { [Symbol.iterator]: function* () { yield* { diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/regression/15168/options.json b/packages/babel-plugin-transform-regenerator/test/fixtures/misc/delegated-yield-invalid-iterator/options.json similarity index 100% rename from packages/babel-plugin-transform-destructuring/test/fixtures/regression/15168/options.json rename to packages/babel-plugin-transform-regenerator/test/fixtures/misc/delegated-yield-invalid-iterator/options.json diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/misc/delegated-yield-invalid-iterator/output.js b/packages/babel-plugin-transform-regenerator/test/fixtures/misc/delegated-yield-invalid-iterator/output.js new file mode 100644 index 000000000000..88b5892c6386 --- /dev/null +++ b/packages/babel-plugin-transform-regenerator/test/fixtures/misc/delegated-yield-invalid-iterator/output.js @@ -0,0 +1,18 @@ +// #15177 +var _Symbol$iterator = { + [Symbol.iterator]: /*#__PURE__*/babelHelpers.regeneratorRuntime().mark(function _callee() { + return babelHelpers.regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + return _context.delegateYield({ + [Symbol.iterator]: x => [] + }, "t0", 1); + case 1: + case "end": + return _context.stop(); + } + }, _callee); + }) + }, + _Symbol$iterator2 = babelHelpers.slicedToArray(_Symbol$iterator, 1), + x = _Symbol$iterator2[0]; diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15142/exec.js b/packages/babel-plugin-transform-regenerator/test/fixtures/misc/yield-sparse-array/exec.js similarity index 90% rename from packages/babel-plugin-transform-regenerator/test/fixtures/regression/15142/exec.js rename to packages/babel-plugin-transform-regenerator/test/fixtures/misc/yield-sparse-array/exec.js index f234bede5ee4..ed5dffa2880b 100644 --- a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15142/exec.js +++ b/packages/babel-plugin-transform-regenerator/test/fixtures/misc/yield-sparse-array/exec.js @@ -1,3 +1,4 @@ +// #15142 var f = async () => [await 0, , ]; f().then(result => { expect(result).toStrictEqual([0, , ]); diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15142/input.js b/packages/babel-plugin-transform-regenerator/test/fixtures/misc/yield-sparse-array/input.js similarity index 72% rename from packages/babel-plugin-transform-regenerator/test/fixtures/regression/15142/input.js rename to packages/babel-plugin-transform-regenerator/test/fixtures/misc/yield-sparse-array/input.js index 558fda0ce767..c7c2139c8a5b 100644 --- a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15142/input.js +++ b/packages/babel-plugin-transform-regenerator/test/fixtures/misc/yield-sparse-array/input.js @@ -1 +1,2 @@ +// #15142 async () => [await 0, , ]; diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15142/options.json b/packages/babel-plugin-transform-regenerator/test/fixtures/misc/yield-sparse-array/options.json similarity index 100% rename from packages/babel-plugin-transform-regenerator/test/fixtures/regression/15142/options.json rename to packages/babel-plugin-transform-regenerator/test/fixtures/misc/yield-sparse-array/options.json diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/misc/yield-sparse-array/output.js b/packages/babel-plugin-transform-regenerator/test/fixtures/misc/yield-sparse-array/output.js new file mode 100644 index 000000000000..8680b0749f82 --- /dev/null +++ b/packages/babel-plugin-transform-regenerator/test/fixtures/misc/yield-sparse-array/output.js @@ -0,0 +1,16 @@ +// #15142 +() => { + return babelHelpers.regeneratorRuntime().async(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return babelHelpers.regeneratorRuntime().awrap(0); + case 2: + _context.t0 = _context.sent; + return _context.abrupt("return", [_context.t0,,]); + case 4: + case "end": + return _context.stop(); + } + }, null, null, null, Promise); +}; diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15142/output.js b/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15142/output.js deleted file mode 100644 index 25a96137b48a..000000000000 --- a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15142/output.js +++ /dev/null @@ -1,17 +0,0 @@ -/*#__PURE__*/babelHelpers.asyncToGenerator( /*#__PURE__*/babelHelpers.regeneratorRuntime().mark(function _callee() { - return babelHelpers.regeneratorRuntime().wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return 0; - case 2: - _context.t0 = _context.sent; - return _context.abrupt("return", [_context.t0,,]); - case 4: - case "end": - return _context.stop(); - } - } - }, _callee); -})); diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15177/options.json b/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15177/options.json deleted file mode 100644 index bcd3c208a8bc..000000000000 --- a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15177/options.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "plugins": [ - "transform-destructuring", - "transform-regenerator" - ] -} diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15177/output.js b/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15177/output.js deleted file mode 100644 index 3795f7d39f8c..000000000000 --- a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/15177/output.js +++ /dev/null @@ -1,17 +0,0 @@ -var _Symbol$iterator = babelHelpers.defineProperty({}, Symbol.iterator, /*#__PURE__*/babelHelpers.regeneratorRuntime().mark(function _callee() { - return babelHelpers.regeneratorRuntime().wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - return _context.delegateYield(babelHelpers.defineProperty({}, Symbol.iterator, function (x) { - return []; - }), "t0", 1); - case 1: - case "end": - return _context.stop(); - } - } - }, _callee); - })), - _Symbol$iterator2 = babelHelpers.slicedToArray(_Symbol$iterator, 1), - x = _Symbol$iterator2[0];