diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js b/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js index 8fd67773c6..58ee8e97e4 100644 --- a/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js @@ -321,15 +321,15 @@ export default function () { for (let i = 0; i < id.node.elements.length; i++) { let elem = id.node.elements[i]; if (!elem) continue; - if (!t.isRestElement(elem)) { - if (t.isAssignmentPattern(elem)) { - elem = elem.left; - } - const name = elem.name; - addTo(exports, name, elem); - exportsToInsert.push(buildExportsAssignment(elem, elem)); - nonHoistedExportNames[name] = true; + if (t.isAssignmentPattern(elem)) { + elem = elem.left; + } else if (t.isRestElement(elem)) { + elem = elem.argument; } + const name = elem.name; + addTo(exports, name, elem); + exportsToInsert.push(buildExportsAssignment(elem, elem)); + nonHoistedExportNames[name] = true; } } path.insertAfter(exportsToInsert); diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array-default-params/actual.js b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array-default-params/actual.js new file mode 100644 index 0000000000..15f05d97e4 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array-default-params/actual.js @@ -0,0 +1 @@ +export const [foo, bar = 2] = []; diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array-default-params/expected.js b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array-default-params/expected.js new file mode 100644 index 0000000000..124bbfcc78 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array-default-params/expected.js @@ -0,0 +1,5 @@ +"use strict"; + +const [foo, bar = 2] = []; +exports.foo = foo; +exports.bar = bar; diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array-rest/actual.js b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array-rest/actual.js new file mode 100644 index 0000000000..0a9d393da8 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array-rest/actual.js @@ -0,0 +1 @@ +export const [foo, bar, ...baz] = []; diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array-rest/expected.js b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array-rest/expected.js new file mode 100644 index 0000000000..7f0d3ab179 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array-rest/expected.js @@ -0,0 +1,6 @@ +"use strict"; + +const [foo, bar, ...baz] = []; +exports.foo = foo; +exports.bar = bar; +exports.bar = baz; diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array/actual.js b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array/actual.js index ae9b52c168..17971b0e11 100644 --- a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array/actual.js +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array/actual.js @@ -1 +1 @@ -export const [foo, bar = 2] = [1]; +export const [foo, bar] = []; diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array/expected.js b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array/expected.js index 62eda5c150..e2fafbd5ca 100644 --- a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-const-destructuring-array/expected.js @@ -1,5 +1,5 @@ "use strict"; -const [foo, bar = 2] = [1]; +const [foo, bar] = []; exports.foo = foo; exports.bar = bar;