From b7754d3c82f6a8ab6b4a1b03007f098deed0a591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 28 Oct 2020 02:07:20 -0400 Subject: [PATCH] fix: disallow import assertionts in export without from (#12264) --- packages/babel-parser/src/parser/statement.js | 9 ++++----- .../invalid-export-without-from/input.js | 2 ++ .../invalid-export-without-from/options.json | 9 +++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 packages/babel-parser/test/fixtures/experimental/import-assertions/invalid-export-without-from/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/import-assertions/invalid-export-without-from/options.json 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