From 455d782ef0b50a6693969fdbe08869c712d6e4a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 3 Jan 2020 17:08:59 -0500 Subject: [PATCH] test: add invalid-lone-import test (#10950) * test: add lone import test * polish: raise recoverable error --- .../babel-parser/src/parser/expression.js | 5 +- .../invalid-lone-import/input.js | 1 + .../invalid-lone-import/options.json | 3 + .../invalid-lone-import/output.json | 72 +++++++++++++++++++ 4 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 packages/babel-parser/test/fixtures/experimental/dynamic-import/invalid-lone-import/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/dynamic-import/invalid-lone-import/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/dynamic-import/invalid-lone-import/output.json diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index a2826e139f..202d7cc7e0 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -919,7 +919,10 @@ export default class ExpressionParser extends LValParser { this.expectPlugin("dynamicImport", node.start); if (!this.match(tt.parenL)) { - this.unexpected(null, tt.parenL); + this.raise( + this.state.lastTokStart, + "import can only be used in import() or import.meta", + ); } return this.finishNode(node, "Import"); case tt._this: diff --git a/packages/babel-parser/test/fixtures/experimental/dynamic-import/invalid-lone-import/input.js b/packages/babel-parser/test/fixtures/experimental/dynamic-import/invalid-lone-import/input.js new file mode 100644 index 0000000000..477eec2654 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/dynamic-import/invalid-lone-import/input.js @@ -0,0 +1 @@ +(import) diff --git a/packages/babel-parser/test/fixtures/experimental/dynamic-import/invalid-lone-import/options.json b/packages/babel-parser/test/fixtures/experimental/dynamic-import/invalid-lone-import/options.json new file mode 100644 index 0000000000..1629df1f36 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/dynamic-import/invalid-lone-import/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["dynamicImport"] +} diff --git a/packages/babel-parser/test/fixtures/experimental/dynamic-import/invalid-lone-import/output.json b/packages/babel-parser/test/fixtures/experimental/dynamic-import/invalid-lone-import/output.json new file mode 100644 index 0000000000..fe56e0811a --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/dynamic-import/invalid-lone-import/output.json @@ -0,0 +1,72 @@ +{ + "type": "File", + "start": 0, + "end": 8, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 8 + } + }, + "errors": [ + "SyntaxError: import can only be used in import() or import.meta (1:1)" + ], + "program": { + "type": "Program", + "start": 0, + "end": 8, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 8 + } + }, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start": 0, + "end": 8, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 8 + } + }, + "expression": { + "type": "Import", + "start": 1, + "end": 7, + "loc": { + "start": { + "line": 1, + "column": 1 + }, + "end": { + "line": 1, + "column": 7 + } + }, + "extra": { + "parenthesized": true, + "parenStart": 0 + } + } + } + ], + "directives": [] + } +} \ No newline at end of file