| Index: src/parsing/parser.cc
|
| diff --git a/src/parsing/parser.cc b/src/parsing/parser.cc
|
| index 12ea1e285ee1ac70dc8fe2291039c897fa5d8732..09c9be4b41c2903c1584b5f44bb975fad177d822 100644
|
| --- a/src/parsing/parser.cc
|
| +++ b/src/parsing/parser.cc
|
| @@ -4750,8 +4750,7 @@ ClassLiteral* Parser::ParseClassLiteral(const AstRawString* name,
|
| block_scope->set_start_position(scanner()->location().end_pos);
|
| ExpressionClassifier classifier;
|
| extends = ParseLeftHandSideExpression(&classifier, CHECK_OK);
|
| - ValidateExpression(&classifier, CHECK_OK);
|
| - extends = ParserTraits::RewriteExpression(extends);
|
| + extends = ParserTraits::RewriteExpression(extends, &classifier, CHECK_OK);
|
| } else {
|
| block_scope->set_start_position(scanner()->location().end_pos);
|
| }
|
| @@ -4777,8 +4776,8 @@ ClassLiteral* Parser::ParseClassLiteral(const AstRawString* name,
|
| ObjectLiteral::Property* property = ParsePropertyDefinition(
|
| &checker, in_class, has_extends, is_static, &is_computed_name,
|
| &has_seen_constructor, &classifier, &name, CHECK_OK);
|
| - ValidateExpression(&classifier, CHECK_OK);
|
| - property = ParserTraits::RewriteObjectLiteralProperty(property);
|
| + property = ParserTraits::RewriteObjectLiteralProperty(property, &classifier,
|
| + CHECK_OK);
|
|
|
| if (has_seen_constructor && constructor == NULL) {
|
| constructor = GetPropertyValue(property)->AsFunctionLiteral();
|
| @@ -5393,29 +5392,35 @@ void ParserTraits::RewriteDestructuringAssignments() {
|
| }
|
|
|
|
|
| -Expression* ParserTraits::RewriteExpression(Expression* expr) {
|
| - return parser_->RewriteExpression(expr);
|
| +Expression* ParserTraits::RewriteExpression(
|
| + Expression* expr, const ExpressionClassifier* classifier, bool* ok) {
|
| + return parser_->RewriteExpression(expr, classifier, ok);
|
| }
|
|
|
|
|
| ObjectLiteralProperty* ParserTraits::RewriteObjectLiteralProperty(
|
| - ObjectLiteralProperty* property) {
|
| - return parser_->RewriteObjectLiteralProperty(property);
|
| + ObjectLiteralProperty* property, const ExpressionClassifier* classifier,
|
| + bool* ok) {
|
| + return parser_->RewriteObjectLiteralProperty(property, classifier, ok);
|
| }
|
|
|
|
|
| -Expression* Parser::RewriteExpression(Expression* expr) {
|
| - // TODO(nikolaos): For the time being, this does no rewriting at all.
|
| +Expression* Parser::RewriteExpression(Expression* expr,
|
| + const ExpressionClassifier* classifier,
|
| + bool* ok) {
|
| + // For the time being, this does no rewriting at all.
|
| + ValidateExpression(classifier, ok);
|
| return expr;
|
| }
|
|
|
|
|
| ObjectLiteralProperty* Parser::RewriteObjectLiteralProperty(
|
| - ObjectLiteralProperty* property) {
|
| + ObjectLiteralProperty* property, const ExpressionClassifier* classifier,
|
| + bool* ok) {
|
| if (property != nullptr) {
|
| - Expression* key = RewriteExpression(property->key());
|
| + Expression* key = RewriteExpression(property->key(), classifier, ok);
|
| property->set_key(key);
|
| - Expression* value = RewriteExpression(property->value());
|
| + Expression* value = RewriteExpression(property->value(), classifier, ok);
|
| property->set_value(value);
|
| }
|
| return property;
|
|
|