Changeset 223232 in webkit for trunk/Source/JavaScriptCore/parser/Parser.cpp
- Timestamp:
- Oct 11, 2017, 11:45:23 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/parser/Parser.cpp
r223175 r223232 3586 3586 return parseAssignmentExpression(context, classifier); 3587 3587 } 3588 3589 3590 template <typename LexerType> 3591 template <typename TreeBuilder> NEVER_INLINE const char* Parser<LexerType>::metaPropertyName(TreeBuilder& context, TreeExpression expr) 3592 { 3593 if (context.isNewTarget(expr)) 3594 return "new.target"; 3595 if (context.isImportMeta(expr)) 3596 return "import.meta"; 3597 RELEASE_ASSERT_NOT_REACHED(); 3598 return "error"; 3599 } 3588 3600 3589 3601 template <typename LexerType> … … 3691 3703 m_parserState.nonTrivialExpressionCount++; 3692 3704 hadAssignment = true; 3693 if (UNLIKELY(context.is NewTarget(lhs)))3694 internalFailWithMessage(false, "new.targetcan't be the left hand side of an assignment expression");3705 if (UNLIKELY(context.isMetaProperty(lhs))) 3706 internalFailWithMessage(false, metaPropertyName(context, lhs), " can't be the left hand side of an assignment expression"); 3695 3707 context.assignmentStackAppend(assignmentStack, lhs, start, tokenStartPosition(), m_parserState.assignmentCount, op); 3696 3708 start = tokenStartPosition(); … … 4699 4711 4700 4712 JSTokenLocation location(tokenLocation()); 4701 base = c reateResolveAndUseVariable(context, &m_vm->propertyNames->builtinNames().metaPrivateName(), false, expressionStart, location);4713 base = context.createImportMetaExpr(location, createResolveAndUseVariable(context, &m_vm->propertyNames->builtinNames().metaPrivateName(), false, expressionStart, location)); 4702 4714 next(); 4703 4715 } else { … … 4925 4937 failWithMessage("Cannot parse member expression"); 4926 4938 } 4927 if (UNLIKELY(isUpdateOp(static_cast<JSTokenType>(lastOperator)) && context.is NewTarget(expr)))4928 internalFailWithMessage(false, "new.targetcan't come after a prefix operator");4939 if (UNLIKELY(isUpdateOp(static_cast<JSTokenType>(lastOperator)) && context.isMetaProperty(expr))) 4940 internalFailWithMessage(false, metaPropertyName(context, expr), " can't come after a prefix operator"); 4929 4941 bool isEvalOrArguments = false; 4930 4942 if (strictMode() && !m_syntaxAlreadyValidated) { … … 4935 4947 switch (m_token.m_type) { 4936 4948 case PLUSPLUS: 4937 if (UNLIKELY(context.is NewTarget(expr)))4938 internalFailWithMessage(false, "new.targetcan't come before a postfix operator");4949 if (UNLIKELY(context.isMetaProperty(expr))) 4950 internalFailWithMessage(false, metaPropertyName(context, expr), " can't come before a postfix operator"); 4939 4951 m_parserState.nonTrivialExpressionCount++; 4940 4952 m_parserState.nonLHSCount++; … … 4947 4959 break; 4948 4960 case MINUSMINUS: 4949 if (UNLIKELY(context.is NewTarget(expr)))4950 internalFailWithMessage(false, "new.targetcan't come before a postfix operator");4961 if (UNLIKELY(context.isMetaProperty(expr))) 4962 internalFailWithMessage(false, metaPropertyName(context, expr), " can't come before a postfix operator"); 4951 4963 m_parserState.nonTrivialExpressionCount++; 4952 4964 m_parserState.nonLHSCount++;
Note:
See TracChangeset
for help on using the changeset viewer.