Make the unambiguous grammar select module when import.meta is used.

This commit is contained in:
Logan Smyth 2018-03-09 14:44:06 -08:00
parent 958551fd89
commit 3c8e9acd4a
4 changed files with 172 additions and 0 deletions

View File

@ -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");
}

View File

@ -0,0 +1 @@
console.log(import.meta);

View File

@ -0,0 +1,4 @@
{
"sourceType": "unambiguous",
"plugins": ["importMeta"]
}

View File

@ -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": []
}
}