Do not use lookahead when parsing dynamic import or import.meta (#9983)

This commit is contained in:
Daniel Tschinder 2019-05-15 16:34:16 -07:00 committed by GitHub
parent 9febf63882
commit 47eb1ddfe0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -875,19 +875,19 @@ export default class ExpressionParser extends LValParser {
return this.finishNode(node, "Super");
case tt._import:
if (this.lookahead().type === tt.dot) {
return this.parseImportMetaProperty();
}
this.expectPlugin("dynamicImport");
node = this.startNode();
this.next();
if (this.match(tt.dot)) {
return this.parseImportMetaProperty(node);
}
this.expectPlugin("dynamicImport", node.start);
if (!this.match(tt.parenL)) {
this.unexpected(null, tt.parenL);
}
return this.finishNode(node, "Import");
case tt._this:
node = this.startNode();
this.next();
@ -1125,12 +1125,10 @@ export default class ExpressionParser extends LValParser {
return this.finishNode(node, "MetaProperty");
}
parseImportMetaProperty(): N.MetaProperty {
const node = this.startNode();
const id = this.parseIdentifier(true);
parseImportMetaProperty(node: N.MetaProperty): N.MetaProperty {
const id = this.createIdentifier(this.startNodeAtNode(node), "import");
this.expect(tt.dot);
if (id.name === "import") {
if (this.isContextual("meta")) {
this.expectPlugin("importMeta");
} else if (!this.hasPlugin("importMeta")) {
@ -1139,7 +1137,6 @@ export default class ExpressionParser extends LValParser {
`Dynamic imports require a parameter: import('a.js')`,
);
}
}
if (!this.inModule) {
this.raise(