diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp index f012823a5e..23b479bfbb 100644 --- a/js/src/frontend/Parser.cpp +++ b/js/src/frontend/Parser.cpp @@ -9392,7 +9392,7 @@ Parser::memberExpr(YieldHandling yieldHandling, TripledotHandling if (!lhs) return null(); } else if (tt == TOK_IMPORT) { - lhs = importExpr(yieldHandling); + lhs = importExpr(yieldHandling, allowCallSyntax); if (!lhs) return null(); } else { @@ -10579,7 +10579,7 @@ Parser::tryNewTarget(BinaryNodeType* newTarget) template typename ParseHandler::Node -Parser::importExpr(YieldHandling yieldHandling) +Parser::importExpr(YieldHandling yieldHandling, bool allowCallSyntax) { MOZ_ASSERT(tokenStream.isCurrentTokenType(TOK_IMPORT)); @@ -10609,7 +10609,7 @@ Parser::importExpr(YieldHandling yieldHandling) return null(); return handler.newImportMeta(importHolder, metaHolder); - } else if (next == TOK_LP) { + } else if (next == TOK_LP && allowCallSyntax) { Node arg = assignExpr(InAllowed, yieldHandling, TripledotProhibited); if (!arg) return null(); diff --git a/js/src/frontend/Parser.h b/js/src/frontend/Parser.h index 44f4aaf108..fce6ead17d 100644 --- a/js/src/frontend/Parser.h +++ b/js/src/frontend/Parser.h @@ -1421,7 +1421,7 @@ FOR_EACH_PARSENODE_SUBCLASS(DECLARE_TYPE) bool tryNewTarget(BinaryNodeType* newTarget); bool checkAndMarkSuperScope(); - Node importExpr(YieldHandling yieldHandling); + Node importExpr(YieldHandling yieldHandling, bool allowCallSyntax); FunctionNodeType methodDefinition(uint32_t toStringStart, PropertyType propType, HandleAtom funName);