diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 369d1424b7..88d6555d5f 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -1816,7 +1816,9 @@ export default class StatementParser extends ExpressionParser { } checkDeclaration(node: N.Pattern | N.ObjectProperty): void { - if (node.type === "ObjectPattern") { + if (node.type === "Identifier") { + this.checkDuplicateExports(node, node.name); + } else if (node.type === "ObjectPattern") { for (const prop of node.properties) { this.checkDeclaration(prop); } @@ -1830,8 +1832,8 @@ export default class StatementParser extends ExpressionParser { this.checkDeclaration(node.value); } else if (node.type === "RestElement") { this.checkDeclaration(node.argument); - } else if (node.type === "Identifier") { - this.checkDuplicateExports(node, node.name); + } else if (node.type === "AssignmentPattern") { + this.checkDeclaration(node.left); } } diff --git a/packages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring-assignment/input.js b/packages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring-assignment/input.js new file mode 100644 index 0000000000..9e0ccdcfd3 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring-assignment/input.js @@ -0,0 +1,2 @@ +export { foo }; +export const { foo = 1 } = bar; diff --git a/packages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring-assignment/options.json b/packages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring-assignment/options.json new file mode 100644 index 0000000000..d3d3a199e6 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring-assignment/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "throws": "`foo` has already been exported. Exported identifiers must be unique. (2:15)" +} \ No newline at end of file