Skip to content

Commit

Permalink
deps: cherry-pick b9f682b from upstream V8
Browse files Browse the repository at this point in the history
Original commit message:

    Fix bug with illegal spread as single arrow parameter

    R=adamk@chromium.org
    BUG=chromium:621496
    LOG=N

    Review-Url: https://codereview.chromium.org/2084703005
    Cr-Commit-Position: refs/heads/master@{#37196}

Fixes: #12017

PR-URL: #12037
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
  • Loading branch information
targos authored and MylesBorins committed Mar 29, 2017
1 parent 52bdb8f commit 8dfc710
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 3 deletions.
2 changes: 1 addition & 1 deletion deps/v8/include/v8-version.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#define V8_MAJOR_VERSION 5
#define V8_MINOR_VERSION 1
#define V8_BUILD_NUMBER 281
#define V8_PATCH_LEVEL 96
#define V8_PATCH_LEVEL 97

// Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.)
Expand Down
7 changes: 5 additions & 2 deletions deps/v8/src/parsing/parser-base.h
Original file line number Diff line number Diff line change
Expand Up @@ -1307,8 +1307,11 @@ ParserBase<Traits>::ParsePrimaryExpression(ExpressionClassifier* classifier,
MessageTemplate::kUnexpectedToken,
Token::String(Token::ELLIPSIS));
classifier->RecordNonSimpleParameter();
ExpressionT expr =
this->ParseAssignmentExpression(true, classifier, CHECK_OK);
ExpressionClassifier binding_classifier(this);
ExpressionT expr = this->ParseAssignmentExpression(
true, &binding_classifier, CHECK_OK);
classifier->Accumulate(&binding_classifier,
ExpressionClassifier::AllProductions);
if (!this->IsIdentifier(expr) && !IsValidPattern(expr)) {
classifier->RecordArrowFormalParametersError(
Scanner::Location(ellipsis_pos, scanner()->location().end_pos),
Expand Down
7 changes: 7 additions & 0 deletions deps/v8/test/mjsunit/harmony/regress/regress-crbug-621496.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// Copyright 2016 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

(function testIllegalSpreadAsSingleArrowParameter() {
assertThrows("(...[42]) => 42)", SyntaxError) // will core dump, if not fixed
})();

0 comments on commit 8dfc710

Please sign in to comment.