diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 74a15bf18fd1..82cf21a5ca13 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -1906,6 +1906,10 @@ export default class StatementParser extends ExpressionParser { if (this.eatContextual("from")) { node.source = this.parseImportSource(); this.checkExport(node); + const assertions = this.maybeParseImportAssertions(); + if (assertions) { + node.assertions = assertions; + } } else { if (expect) { this.unexpected(); @@ -1914,11 +1918,6 @@ export default class StatementParser extends ExpressionParser { } } - const assertions = this.maybeParseImportAssertions(); - if (assertions) { - node.assertions = assertions; - } - this.semicolon(); } diff --git a/packages/babel-parser/test/fixtures/experimental/import-assertions/invalid-export-without-from/input.js b/packages/babel-parser/test/fixtures/experimental/import-assertions/invalid-export-without-from/input.js new file mode 100644 index 000000000000..cf94fe6e3cf3 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/import-assertions/invalid-export-without-from/input.js @@ -0,0 +1,2 @@ +const foo = 1; +export { foo } assert { type: "json" }; diff --git a/packages/babel-parser/test/fixtures/experimental/import-assertions/invalid-export-without-from/options.json b/packages/babel-parser/test/fixtures/experimental/import-assertions/invalid-export-without-from/options.json new file mode 100644 index 000000000000..83c4e5f4a864 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/import-assertions/invalid-export-without-from/options.json @@ -0,0 +1,9 @@ +{ + "plugins": [ + [ + "importAssertions" + ] + ], + "sourceType": "module", + "throws": "Unexpected token, expected \";\" (2:15)" +} \ No newline at end of file