diff --git a/packages/babylon/src/parser/expression.js b/packages/babylon/src/parser/expression.js index 04c4bc8db7..d17cdf01e4 100644 --- a/packages/babylon/src/parser/expression.js +++ b/packages/babylon/src/parser/expression.js @@ -957,6 +957,8 @@ export default class ExpressionParser extends LValParser { { code: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED" }, ); } + this.sawUnambiguousESM = true; + return this.parseMetaProperty(node, id, "meta"); } diff --git a/packages/babylon/test/fixtures/core/sourcetype-unambiguous/import-meta/input.js b/packages/babylon/test/fixtures/core/sourcetype-unambiguous/import-meta/input.js new file mode 100644 index 0000000000..e7313a090f --- /dev/null +++ b/packages/babylon/test/fixtures/core/sourcetype-unambiguous/import-meta/input.js @@ -0,0 +1 @@ +console.log(import.meta); diff --git a/packages/babylon/test/fixtures/core/sourcetype-unambiguous/import-meta/options.json b/packages/babylon/test/fixtures/core/sourcetype-unambiguous/import-meta/options.json new file mode 100644 index 0000000000..6fdc0a23b6 --- /dev/null +++ b/packages/babylon/test/fixtures/core/sourcetype-unambiguous/import-meta/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "unambiguous", + "plugins": ["importMeta"] +} diff --git a/packages/babylon/test/fixtures/core/sourcetype-unambiguous/import-meta/output.json b/packages/babylon/test/fixtures/core/sourcetype-unambiguous/import-meta/output.json new file mode 100644 index 0000000000..1fe4795f64 --- /dev/null +++ b/packages/babylon/test/fixtures/core/sourcetype-unambiguous/import-meta/output.json @@ -0,0 +1,165 @@ +{ + "type": "File", + "start": 0, + "end": 25, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 25 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 25, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 25 + } + }, + "sourceType": "module", + "body": [ + { + "type": "ExpressionStatement", + "start": 0, + "end": 25, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 25 + } + }, + "expression": { + "type": "CallExpression", + "start": 0, + "end": 24, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 24 + } + }, + "callee": { + "type": "MemberExpression", + "start": 0, + "end": 11, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 11 + } + }, + "object": { + "type": "Identifier", + "start": 0, + "end": 7, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 7 + }, + "identifierName": "console" + }, + "name": "console" + }, + "property": { + "type": "Identifier", + "start": 8, + "end": 11, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 11 + }, + "identifierName": "log" + }, + "name": "log" + }, + "computed": false + }, + "arguments": [ + { + "type": "MetaProperty", + "start": 12, + "end": 23, + "loc": { + "start": { + "line": 1, + "column": 12 + }, + "end": { + "line": 1, + "column": 23 + } + }, + "meta": { + "type": "Identifier", + "start": 12, + "end": 18, + "loc": { + "start": { + "line": 1, + "column": 12 + }, + "end": { + "line": 1, + "column": 18 + }, + "identifierName": "import" + }, + "name": "import" + }, + "property": { + "type": "Identifier", + "start": 19, + "end": 23, + "loc": { + "start": { + "line": 1, + "column": 19 + }, + "end": { + "line": 1, + "column": 23 + }, + "identifierName": "meta" + }, + "name": "meta" + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file