Chromium Code Reviews| Index: src/parsing/parser-base.h |
| diff --git a/src/parsing/parser-base.h b/src/parsing/parser-base.h |
| index f8a15a47961075986405fa5bd4781a47eca0e490..3ad904b30d5495b29c60aa02db33129141736b2b 100644 |
| --- a/src/parsing/parser-base.h |
| +++ b/src/parsing/parser-base.h |
| @@ -2160,7 +2160,10 @@ typename Traits::Type::ExpressionList ParserBase<Traits>::ParseArguments( |
| ExpressionT argument = this->ParseAssignmentExpression( |
| true, classifier, CHECK_OK_CUSTOM(NullExpressionList)); |
| CheckNoTailCallExpressions(classifier, CHECK_OK_CUSTOM(NullExpressionList)); |
| - Traits::RewriteNonPattern(classifier, CHECK_OK_CUSTOM(NullExpressionList)); |
| + if (!maybe_arrow) { |
| + Traits::RewriteNonPattern(classifier, |
| + CHECK_OK_CUSTOM(NullExpressionList)); |
| + } |
| if (is_spread) { |
| if (!spread_arg.IsValid()) { |
| spread_arg.beg_pos = start_pos; |
| @@ -2197,11 +2200,17 @@ typename Traits::Type::ExpressionList ParserBase<Traits>::ParseArguments( |
| } |
| *first_spread_arg_loc = spread_arg; |
| - if ((!maybe_arrow || peek() != Token::ARROW) && spread_arg.IsValid()) { |
| - // 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); |
| + if ((!maybe_arrow || peek() != Token::ARROW)) { |
|
Dan Ehrenberg
2016/06/24 17:30:41
Nit: remove extra parens
caitp (gmail)
2016/06/24 18:05:40
Done
|
| + if (maybe_arrow) { |
| + Traits::RewriteNonPattern(classifier, |
| + CHECK_OK_CUSTOM(NullExpressionList)); |
| + } |
| + if (spread_arg.IsValid()) { |
| + // 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); |
| + } |
| } |
| return result; |