diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 8ff7643dd788..e201cfcd36cc 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -1931,7 +1931,8 @@ export default class StatementParser extends ExpressionParser { if ( declaration.type === "Identifier" && declaration.name === "from" && - declaration.end - declaration.start === 4 // does not contain escape + declaration.end - declaration.start === 4 && // does not contain escape + !declaration.extra?.parenthesized ) { this.raise(declaration.start, Errors.ExportDefaultFromAsIdentifier); } diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-parenthesized/input.js b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-parenthesized/input.js new file mode 100644 index 000000000000..74c7cb934c5d --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-parenthesized/input.js @@ -0,0 +1 @@ +export default (from); diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-parenthesized/options.json b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-parenthesized/options.json new file mode 100644 index 000000000000..fb17f33a28b5 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-parenthesized/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["exportDefaultFrom"], + "sourceType": "module" +} diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-parenthesized/output.json b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-parenthesized/output.json new file mode 100644 index 000000000000..215a4df47bb6 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-parenthesized/output.json @@ -0,0 +1,26 @@ +{ + "type": "File", + "start":0,"end":22,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":22}}, + "program": { + "type": "Program", + "start":0,"end":22,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":22}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "ExportDefaultDeclaration", + "start":0,"end":22,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":22}}, + "declaration": { + "type": "Identifier", + "start":16,"end":20,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":20},"identifierName":"from"}, + "name": "from", + "extra": { + "parenthesized": true, + "parenStart": 15 + } + } + } + ], + "directives": [] + } +} \ No newline at end of file