Index: src/parsing/parser-base.h |
diff --git a/src/parsing/parser-base.h b/src/parsing/parser-base.h |
index 93dea7c565ef876ad61463fbdebfd9d74949f7ea..7712fd3dc4539ae5a7d88608b4b9b0e080e4cd18 100644 |
--- a/src/parsing/parser-base.h |
+++ b/src/parsing/parser-base.h |
@@ -161,10 +161,6 @@ struct FormalParametersBase { |
// |
// class Parser : public ParserBase<Parser> { ... }; |
// |
-// TODO(nikolaos): Currently the traits objects contain many things |
-// that will be moved to the implementation objects or to the parser |
-// base. The following comments will have to change, when this happens. |
- |
// The traits class template encapsulates the differences between |
// parser/pre-parser implementations. In particular: |
@@ -179,15 +175,14 @@ struct FormalParametersBase { |
// interface as AstNodeFactory, so ParserBase doesn't need to care which one is |
// used. |
-// - Miscellaneous other tasks interleaved with the recursive descent. For |
-// example, Parser keeps track of which function literals should be marked as |
-// pretenured, and PreParser doesn't care. |
- |
// The traits are expected to contain the following typedefs: |
// template <> |
// class ParserBaseTraits<Impl> { |
// // In particular... |
// struct Type { |
+// // Synonyms for ParserBase<Impl> and Impl, respectively. |
+// typedef Base; |
+// typedef Impl; |
// typedef GeneratorVariable; |
// typedef AstProperties; |
// typedef ExpressionClassifier; |
@@ -280,6 +275,8 @@ class ParserBase : public ParserBaseTraits<Impl> { |
void set_stack_limit(uintptr_t stack_limit) { stack_limit_ = stack_limit; } |
+ Zone* zone() const { return zone_; } |
+ |
protected: |
enum AllowRestrictedIdentifiers { |
kAllowRestrictedIdentifiers, |
@@ -696,7 +693,6 @@ class ParserBase : public ParserBaseTraits<Impl> { |
bool stack_overflow() const { return stack_overflow_; } |
void set_stack_overflow() { stack_overflow_ = true; } |
Mode mode() const { return mode_; } |
- Zone* zone() const { return zone_; } |
INLINE(Token::Value peek()) { |
if (stack_overflow_) return Token::ILLEGAL; |
@@ -1469,7 +1465,7 @@ ParserBase<Impl>::ParseAndClassifyIdentifier(ExpressionClassifier* classifier, |
} |
return impl()->GetSymbol(); |
} else { |
- this->ReportUnexpectedToken(next); |
+ ReportUnexpectedToken(next); |
*ok = false; |
return impl()->EmptyIdentifier(); |
} |
@@ -1507,7 +1503,7 @@ typename ParserBase<Impl>::IdentifierT ParserBase<Impl>::ParseIdentifierName( |
next != Token::FUTURE_STRICT_RESERVED_WORD && |
next != Token::ESCAPED_KEYWORD && |
next != Token::ESCAPED_STRICT_RESERVED_WORD && !Token::IsKeyword(next)) { |
- this->ReportUnexpectedToken(next); |
+ ReportUnexpectedToken(next); |
*ok = false; |
return impl()->EmptyIdentifier(); |
} |
@@ -1610,13 +1606,13 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParsePrimaryExpression( |
case Token::DIV: |
classifier->RecordBindingPatternError( |
scanner()->peek_location(), MessageTemplate::kUnexpectedTokenRegExp); |
- return this->ParseRegExpLiteral(ok); |
+ return ParseRegExpLiteral(ok); |
case Token::LBRACK: |
- return this->ParseArrayLiteral(classifier, ok); |
+ return ParseArrayLiteral(classifier, ok); |
case Token::LBRACE: |
- return this->ParseObjectLiteral(classifier, ok); |
+ return ParseObjectLiteral(classifier, ok); |
case Token::LPAREN: { |
// Arrow function formal parameters are either a single identifier or a |
@@ -1647,8 +1643,8 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParsePrimaryExpression( |
Token::String(Token::ELLIPSIS)); |
classifier->RecordNonSimpleParameter(); |
ExpressionClassifier binding_classifier(this); |
- ExpressionT expr = this->ParseAssignmentExpression( |
- true, &binding_classifier, CHECK_OK); |
+ ExpressionT expr = |
+ ParseAssignmentExpression(true, &binding_classifier, CHECK_OK); |
classifier->Accumulate(&binding_classifier, |
ExpressionClassifier::AllProductions); |
if (!impl()->IsIdentifier(expr) && !IsValidPattern(expr)) { |
@@ -1669,7 +1665,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParsePrimaryExpression( |
// seeing the call parentheses. |
function_state_->set_next_function_is_parenthesized(peek() == |
Token::FUNCTION); |
- ExpressionT expr = this->ParseExpression(true, classifier, CHECK_OK); |
+ ExpressionT expr = ParseExpression(true, classifier, CHECK_OK); |
Expect(Token::RPAREN, CHECK_OK); |
return expr; |
} |
@@ -1694,8 +1690,8 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParsePrimaryExpression( |
case Token::TEMPLATE_SPAN: |
case Token::TEMPLATE_TAIL: |
BindingPatternUnexpectedToken(classifier); |
- return this->ParseTemplateLiteral(Traits::NoTemplateTag(), beg_pos, |
- classifier, ok); |
+ return ParseTemplateLiteral(impl()->NoTemplateTag(), beg_pos, classifier, |
+ ok); |
case Token::MOD: |
if (allow_natives() || extension_ != NULL) { |
@@ -1739,8 +1735,8 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseExpression( |
ExpressionT result; |
{ |
ExpressionClassifier binding_classifier(this); |
- result = this->ParseAssignmentExpression(accept_IN, &binding_classifier, |
- CHECK_OK); |
+ result = |
+ ParseAssignmentExpression(accept_IN, &binding_classifier, CHECK_OK); |
classifier->Accumulate(&binding_classifier, |
ExpressionClassifier::AllProductions); |
} |
@@ -1771,8 +1767,8 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseExpression( |
} |
int pos = position(), expr_pos = peek_position(); |
ExpressionClassifier binding_classifier(this); |
- ExpressionT right = this->ParseAssignmentExpression( |
- accept_IN, &binding_classifier, CHECK_OK); |
+ ExpressionT right = |
+ ParseAssignmentExpression(accept_IN, &binding_classifier, CHECK_OK); |
classifier->Accumulate(&binding_classifier, |
ExpressionClassifier::AllProductions); |
if (is_rest) { |
@@ -1813,7 +1809,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseArrayLiteral( |
Consume(Token::ELLIPSIS); |
int expr_pos = peek_position(); |
ExpressionT argument = |
- this->ParseAssignmentExpression(true, classifier, CHECK_OK); |
+ ParseAssignmentExpression(true, classifier, CHECK_OK); |
CheckNoTailCallExpressions(classifier, CHECK_OK); |
elem = factory()->NewSpread(argument, start_pos, expr_pos); |
@@ -1837,7 +1833,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseArrayLiteral( |
} |
} else { |
int beg_pos = peek_position(); |
- elem = this->ParseAssignmentExpression(true, classifier, CHECK_OK); |
+ elem = ParseAssignmentExpression(true, classifier, CHECK_OK); |
CheckNoTailCallExpressions(classifier, CHECK_OK); |
CheckDestructuringElement(elem, classifier, beg_pos, |
scanner()->location().end_pos); |
@@ -1972,7 +1968,7 @@ ParserBase<Impl>::ParsePropertyDefinition( |
} |
Consume(Token::COLON); |
int beg_pos = peek_position(); |
- ExpressionT value = this->ParseAssignmentExpression( |
+ ExpressionT value = ParseAssignmentExpression( |
true, classifier, CHECK_OK_CUSTOM(EmptyObjectLiteralProperty)); |
CheckDestructuringElement(value, classifier, beg_pos, |
scanner()->location().end_pos); |
@@ -2019,7 +2015,7 @@ ParserBase<Impl>::ParsePropertyDefinition( |
if (peek() == Token::ASSIGN) { |
Consume(Token::ASSIGN); |
ExpressionClassifier rhs_classifier(this); |
- ExpressionT rhs = this->ParseAssignmentExpression( |
+ ExpressionT rhs = ParseAssignmentExpression( |
true, &rhs_classifier, CHECK_OK_CUSTOM(EmptyObjectLiteralProperty)); |
impl()->RewriteNonPattern(&rhs_classifier, |
CHECK_OK_CUSTOM(EmptyObjectLiteralProperty)); |
@@ -2031,7 +2027,7 @@ ParserBase<Impl>::ParsePropertyDefinition( |
Scanner::Location(next_beg_pos, scanner()->location().end_pos), |
MessageTemplate::kInvalidCoverInitializedName); |
- Traits::SetFunctionNameFromIdentifierRef(rhs, lhs); |
+ impl()->SetFunctionNameFromIdentifierRef(rhs, lhs); |
} else { |
value = lhs; |
} |
@@ -2165,7 +2161,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseObjectLiteral( |
const bool has_extends = false; |
bool is_computed_name = false; |
IdentifierT name = impl()->EmptyIdentifier(); |
- ObjectLiteralPropertyT property = this->ParsePropertyDefinition( |
+ ObjectLiteralPropertyT property = ParsePropertyDefinition( |
&checker, in_class, has_extends, MethodKind::kNormal, &is_computed_name, |
NULL, classifier, &name, CHECK_OK); |
@@ -2186,7 +2182,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseObjectLiteral( |
if (fni_ != nullptr) fni_->Infer(); |
- Traits::SetFunctionNameFromPropertyName(property, name); |
+ impl()->SetFunctionNameFromPropertyName(property, name); |
} |
Expect(Token::RBRACE, CHECK_OK); |
@@ -2218,7 +2214,7 @@ ParserBase<Impl>::ParseArguments(Scanner::Location* first_spread_arg_loc, |
bool is_spread = Check(Token::ELLIPSIS); |
int expr_pos = peek_position(); |
- ExpressionT argument = this->ParseAssignmentExpression( |
+ ExpressionT argument = ParseAssignmentExpression( |
true, classifier, CHECK_OK_CUSTOM(NullExpressionList)); |
CheckNoTailCallExpressions(classifier, CHECK_OK_CUSTOM(NullExpressionList)); |
if (!maybe_arrow) { |
@@ -2274,7 +2270,7 @@ ParserBase<Impl>::ParseArguments(Scanner::Location* first_spread_arg_loc, |
// Unspread parameter sequences are translated into array literals in the |
// parser. Ensure that the number of materialized literals matches between |
// the parser and preparser |
- Traits::MaterializeUnspreadArgumentsLiterals(unspread_sequences_count); |
+ impl()->MaterializeUnspreadArgumentsLiterals(unspread_sequences_count); |
} |
} |
@@ -2295,7 +2291,7 @@ ParserBase<Impl>::ParseAssignmentExpression(bool accept_IN, |
int lhs_beg_pos = peek_position(); |
if (peek() == Token::YIELD && is_generator()) { |
- return this->ParseYieldExpression(accept_IN, classifier, ok); |
+ return ParseYieldExpression(accept_IN, classifier, ok); |
} |
FuncNameInferrer::State fni_state(fni_); |
@@ -2318,10 +2314,10 @@ ParserBase<Impl>::ParseAssignmentExpression(bool accept_IN, |
// that we have only a trivial expression to parse. |
ExpressionT expression; |
if (IsTrivialExpression()) { |
- expression = this->ParsePrimaryExpression(&arrow_formals_classifier, |
- &is_async, CHECK_OK); |
+ expression = |
+ ParsePrimaryExpression(&arrow_formals_classifier, &is_async, CHECK_OK); |
} else { |
- expression = this->ParseConditionalExpression( |
+ expression = ParseConditionalExpression( |
accept_IN, &arrow_formals_classifier, CHECK_OK); |
} |
@@ -2352,8 +2348,8 @@ ParserBase<Impl>::ParseAssignmentExpression(bool accept_IN, |
Scanner::Location loc(lhs_beg_pos, scanner()->location().end_pos); |
DeclarationScope* scope = |
- this->NewFunctionScope(is_async ? FunctionKind::kAsyncArrowFunction |
- : FunctionKind::kArrowFunction); |
+ NewFunctionScope(is_async ? FunctionKind::kAsyncArrowFunction |
+ : FunctionKind::kArrowFunction); |
// Because the arrow's parameters were parsed in the outer scope, any |
// usage flags that might have been triggered there need to be copied |
// to the arrow scope. |
@@ -2368,14 +2364,14 @@ ParserBase<Impl>::ParseAssignmentExpression(bool accept_IN, |
scope->set_start_position(lhs_beg_pos); |
Scanner::Location duplicate_loc = Scanner::Location::invalid(); |
- this->ParseArrowFunctionFormalParameterList( |
+ impl()->ParseArrowFunctionFormalParameterList( |
¶meters, expression, loc, &duplicate_loc, scope_snapshot, CHECK_OK); |
if (duplicate_loc.IsValid()) { |
arrow_formals_classifier.RecordDuplicateFormalParameterError( |
duplicate_loc); |
} |
- expression = this->ParseArrowFunctionLiteral( |
- accept_IN, parameters, is_async, arrow_formals_classifier, CHECK_OK); |
+ expression = ParseArrowFunctionLiteral(accept_IN, parameters, is_async, |
+ arrow_formals_classifier, CHECK_OK); |
arrow_formals_classifier.Discard(); |
classifier->RecordPatternError(arrow_loc, |
MessageTemplate::kUnexpectedToken, |
@@ -2433,7 +2429,7 @@ ParserBase<Impl>::ParseAssignmentExpression(bool accept_IN, |
if (is_destructuring_assignment) { |
ValidateAssignmentPattern(classifier, CHECK_OK); |
} else { |
- expression = this->CheckAndRewriteReferenceExpression( |
+ expression = CheckAndRewriteReferenceExpression( |
expression, lhs_beg_pos, scanner()->location().end_pos, |
MessageTemplate::kInvalidLhsInAssignment, CHECK_OK); |
} |
@@ -2451,7 +2447,7 @@ ParserBase<Impl>::ParseAssignmentExpression(bool accept_IN, |
ExpressionClassifier rhs_classifier(this); |
ExpressionT right = |
- this->ParseAssignmentExpression(accept_IN, &rhs_classifier, CHECK_OK); |
+ ParseAssignmentExpression(accept_IN, &rhs_classifier, CHECK_OK); |
CheckNoTailCallExpressions(&rhs_classifier, CHECK_OK); |
impl()->RewriteNonPattern(&rhs_classifier, CHECK_OK); |
classifier->Accumulate( |
@@ -2484,7 +2480,7 @@ ParserBase<Impl>::ParseAssignmentExpression(bool accept_IN, |
} |
if (op == Token::ASSIGN) { |
- Traits::SetFunctionNameFromIdentifierRef(right, expression); |
+ impl()->SetFunctionNameFromIdentifierRef(right, expression); |
} |
if (op == Token::ASSIGN_EXP) { |
@@ -2565,8 +2561,7 @@ ParserBase<Impl>::ParseTailCallExpression(ExpressionClassifier* classifier, |
Expect(Token::CONTINUE, CHECK_OK); |
int pos = position(); |
int sub_expression_pos = peek_position(); |
- ExpressionT expression = |
- this->ParseLeftHandSideExpression(classifier, CHECK_OK); |
+ ExpressionT expression = ParseLeftHandSideExpression(classifier, CHECK_OK); |
CheckNoTailCallExpressions(classifier, CHECK_OK); |
Scanner::Location loc(pos, scanner()->location().end_pos); |
@@ -2630,7 +2625,7 @@ ParserBase<Impl>::ParseConditionalExpression(bool accept_IN, |
int pos = peek_position(); |
// We start using the binary expression parser for prec >= 4 only! |
ExpressionT expression = |
- this->ParseBinaryExpression(4, accept_IN, classifier, CHECK_OK); |
+ ParseBinaryExpression(4, accept_IN, classifier, CHECK_OK); |
if (peek() != Token::CONDITIONAL) return expression; |
CheckNoTailCallExpressions(classifier, CHECK_OK); |
impl()->RewriteNonPattern(classifier, CHECK_OK); |
@@ -2655,7 +2650,7 @@ template <typename Impl> |
typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseBinaryExpression( |
int prec, bool accept_IN, ExpressionClassifier* classifier, bool* ok) { |
DCHECK(prec >= 4); |
- ExpressionT x = this->ParseUnaryExpression(classifier, CHECK_OK); |
+ ExpressionT x = ParseUnaryExpression(classifier, CHECK_OK); |
for (int prec1 = Precedence(peek(), accept_IN); prec1 >= prec; prec1--) { |
// prec1 >= 4 |
while (Precedence(peek(), accept_IN) == prec1) { |
@@ -2755,9 +2750,9 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseUnaryExpression( |
ArrowFormalParametersUnexpectedToken(classifier); |
op = Next(); |
int beg_pos = peek_position(); |
- ExpressionT expression = this->ParseUnaryExpression(classifier, CHECK_OK); |
+ ExpressionT expression = ParseUnaryExpression(classifier, CHECK_OK); |
CheckNoTailCallExpressions(classifier, CHECK_OK); |
- expression = this->CheckAndRewriteReferenceExpression( |
+ expression = CheckAndRewriteReferenceExpression( |
expression, beg_pos, scanner()->location().end_pos, |
MessageTemplate::kInvalidLhsInPrefixOp, CHECK_OK); |
expression = impl()->MarkExpressionAsAssigned(expression); |
@@ -2780,7 +2775,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseUnaryExpression( |
return impl()->RewriteAwaitExpression(value, await_pos); |
} else { |
- return this->ParsePostfixExpression(classifier, ok); |
+ return ParsePostfixExpression(classifier, ok); |
} |
} |
@@ -2791,15 +2786,14 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParsePostfixExpression( |
// LeftHandSideExpression ('++' | '--')? |
int lhs_beg_pos = peek_position(); |
- ExpressionT expression = |
- this->ParseLeftHandSideExpression(classifier, CHECK_OK); |
+ ExpressionT expression = ParseLeftHandSideExpression(classifier, CHECK_OK); |
if (!scanner()->HasAnyLineTerminatorBeforeNext() && |
Token::IsCountOp(peek())) { |
CheckNoTailCallExpressions(classifier, CHECK_OK); |
BindingPatternUnexpectedToken(classifier); |
ArrowFormalParametersUnexpectedToken(classifier); |
- expression = this->CheckAndRewriteReferenceExpression( |
+ expression = CheckAndRewriteReferenceExpression( |
expression, lhs_beg_pos, scanner()->location().end_pos, |
MessageTemplate::kInvalidLhsInPostfixOp, CHECK_OK); |
expression = impl()->MarkExpressionAsAssigned(expression); |
@@ -2823,12 +2817,12 @@ ParserBase<Impl>::ParseLeftHandSideExpression(ExpressionClassifier* classifier, |
// (NewExpression | MemberExpression) ... |
if (FLAG_harmony_explicit_tailcalls && peek() == Token::CONTINUE) { |
- return this->ParseTailCallExpression(classifier, ok); |
+ return ParseTailCallExpression(classifier, ok); |
} |
bool is_async = false; |
- ExpressionT result = this->ParseMemberWithNewPrefixesExpression( |
- classifier, &is_async, CHECK_OK); |
+ ExpressionT result = |
+ ParseMemberWithNewPrefixesExpression(classifier, &is_async, CHECK_OK); |
while (true) { |
switch (peek()) { |
@@ -2890,7 +2884,7 @@ ParserBase<Impl>::ParseLeftHandSideExpression(ExpressionClassifier* classifier, |
} |
if (args->length()) { |
// async ( Arguments ) => ... |
- return Traits::ExpressionListToExpression(args); |
+ return impl()->ExpressionListToExpression(args); |
} |
// async () => ... |
return factory()->NewEmptyParentheses(pos); |
@@ -3000,15 +2994,15 @@ ParserBase<Impl>::ParseMemberWithNewPrefixesExpression( |
} else if (peek() == Token::PERIOD) { |
return ParseNewTargetExpression(CHECK_OK); |
} else { |
- result = this->ParseMemberWithNewPrefixesExpression(classifier, is_async, |
- CHECK_OK); |
+ result = |
+ ParseMemberWithNewPrefixesExpression(classifier, is_async, CHECK_OK); |
} |
impl()->RewriteNonPattern(classifier, CHECK_OK); |
if (peek() == Token::LPAREN) { |
// NewExpression with arguments. |
Scanner::Location spread_pos; |
typename Traits::Type::ExpressionList args = |
- this->ParseArguments(&spread_pos, classifier, CHECK_OK); |
+ ParseArguments(&spread_pos, classifier, CHECK_OK); |
if (spread_pos.IsValid()) { |
args = impl()->PrepareSpreadArguments(args); |
@@ -3017,15 +3011,15 @@ ParserBase<Impl>::ParseMemberWithNewPrefixesExpression( |
result = factory()->NewCallNew(result, args, new_pos); |
} |
// The expression can still continue with . or [ after the arguments. |
- result = this->ParseMemberExpressionContinuation(result, is_async, |
- classifier, CHECK_OK); |
+ result = ParseMemberExpressionContinuation(result, is_async, classifier, |
+ CHECK_OK); |
return result; |
} |
// NewExpression without arguments. |
return factory()->NewCallNew(result, impl()->NewExpressionList(0), new_pos); |
} |
// No 'new' or 'super' keyword. |
- return this->ParseMemberExpression(classifier, is_async, ok); |
+ return ParseMemberExpression(classifier, is_async, ok); |
} |
template <typename Impl> |
@@ -3172,7 +3166,7 @@ ParserBase<Impl>::ParseMemberExpressionContinuation( |
Consume(Token::LBRACK); |
int pos = position(); |
- ExpressionT index = this->ParseExpression(true, classifier, CHECK_OK); |
+ ExpressionT index = ParseExpression(true, classifier, CHECK_OK); |
impl()->RewriteNonPattern(classifier, CHECK_OK); |
expression = factory()->NewProperty(expression, index, pos); |
if (fni_ != NULL) { |
@@ -3260,10 +3254,10 @@ void ParserBase<Impl>::ParseFormalParameter(FormalParametersT* parameters, |
init_classifier.Discard(); |
classifier->RecordNonSimpleParameter(); |
- Traits::SetFunctionNameFromIdentifierRef(initializer, pattern); |
+ impl()->SetFunctionNameFromIdentifierRef(initializer, pattern); |
} |
- Traits::AddFormalParameter(parameters, pattern, initializer, |
+ impl()->AddFormalParameter(parameters, pattern, initializer, |
scanner()->location().end_pos, is_rest); |
} |
@@ -3314,7 +3308,7 @@ void ParserBase<Impl>::ParseFormalParameterList( |
for (int i = 0; i < parameters->Arity(); ++i) { |
auto parameter = parameters->at(i); |
- Traits::DeclareFormalParameter(parameters->scope, parameter, classifier); |
+ impl()->DeclareFormalParameter(parameters->scope, parameter, classifier); |
} |
} |
@@ -3417,7 +3411,7 @@ ParserBase<Impl>::ParseArrowFunctionLiteral( |
function_state.SkipMaterializedLiterals( |
formal_parameters.materialized_literals_count); |
- this->ReindexLiterals(formal_parameters); |
+ impl()->ReindexLiterals(formal_parameters); |
Expect(Token::ARROW, CHECK_OK); |
@@ -3451,8 +3445,8 @@ ParserBase<Impl>::ParseArrowFunctionLiteral( |
ReturnExprScope allow_tail_calls( |
function_state_, ReturnExprContext::kInsideValidReturnStatement); |
body = impl()->NewStatementList(1); |
- this->AddParameterInitializationBlock(formal_parameters, body, is_async, |
- CHECK_OK); |
+ impl()->AddParameterInitializationBlock(formal_parameters, body, is_async, |
+ CHECK_OK); |
ExpressionClassifier classifier(this); |
if (is_async) { |
impl()->ParseAsyncArrowSingleExpressionBody(body, accept_IN, |
@@ -3480,8 +3474,8 @@ ParserBase<Impl>::ParseArrowFunctionLiteral( |
// that duplicates are not allowed. Of course, the arrow function may |
// itself be strict as well. |
const bool allow_duplicate_parameters = false; |
- this->ValidateFormalParameters(&formals_classifier, language_mode(), |
- allow_duplicate_parameters, CHECK_OK); |
+ ValidateFormalParameters(&formals_classifier, language_mode(), |
+ allow_duplicate_parameters, CHECK_OK); |
// Validate strict mode. |
if (is_strict(language_mode())) { |
@@ -3563,7 +3557,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseTemplateLiteral( |
} |
int expr_pos = peek_position(); |
- ExpressionT expression = this->ParseExpression(true, classifier, CHECK_OK); |
+ ExpressionT expression = ParseExpression(true, classifier, CHECK_OK); |
CheckNoTailCallExpressions(classifier, CHECK_OK); |
impl()->RewriteNonPattern(classifier, CHECK_OK); |
impl()->AddTemplateExpression(&ts, expression); |
@@ -3608,8 +3602,8 @@ typename ParserBase<Impl>::ExpressionT |
ParserBase<Impl>::CheckAndRewriteReferenceExpression( |
ExpressionT expression, int beg_pos, int end_pos, |
MessageTemplate::Template message, bool* ok) { |
- return this->CheckAndRewriteReferenceExpression(expression, beg_pos, end_pos, |
- message, kReferenceError, ok); |
+ return CheckAndRewriteReferenceExpression(expression, beg_pos, end_pos, |
+ message, kReferenceError, ok); |
} |
template <typename Impl> |