Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[v10.x] deps: V8: backport cd21f71f9cb5 #33862

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
deps: V8: backport cd21f71f9cb5
Original commit message:

    [parser] Validate destructuring assignment pattern in correct classifier

    Previously we'd first accumulate errors to the parent and validate the
    destructuring pattern in the parent. In the case of ParseArguments this
    will invalidly propagate binding pattern errors from one argument to the
    next. The reason why ParseArguments keeps track of binding pattern errors
    is because it could also be used to parse async arrow function parameters.
    If we see async(a,b) we don't yet know whether this is the head of an
    async arrow function, or a call to async with arguments a and b.

    Bug: v8:8241
    Change-Id: I670ab9a9c6f2e0bee399808b02a465ae1afa7c3f
    Reviewed-on: https://chromium-review.googlesource.com/c/1296229
    Commit-Queue: Toon Verwaest <[email protected]>
    Reviewed-by: Marja Hölttä <[email protected]>
    Cr-Commit-Position: refs/heads/master@{#56887}

Refs: v8/v8@cd21f71
Fixes: #23142
targos committed Jun 13, 2020

Unverified

This user has not yet uploaded their public signing key.
commit 334f63b614fd4a5a75a7b6967f5dac58174fd7f9
2 changes: 1 addition & 1 deletion common.gypi
Original file line number Diff line number Diff line change
@@ -33,7 +33,7 @@

# Reset this number to 0 on major V8 upgrades.
# Increment by one for each non-official patch applied to deps/v8.
'v8_embedder_string': '-node.56',
'v8_embedder_string': '-node.57',

# Enable disassembler for `--print-code` v8 options
'v8_enable_disassembler': 1,
2 changes: 1 addition & 1 deletion deps/v8/src/parsing/parser-base.h
Original file line number Diff line number Diff line change
@@ -2977,13 +2977,13 @@ ParserBase<Impl>::ParseAssignmentExpression(bool accept_IN, bool* ok) {
// This is definitely not an expression so don't accumulate
// expression-related errors.
productions &= ~ExpressionClassifier::ExpressionProduction;
ValidateAssignmentPattern(CHECK_OK);
}

Accumulate(productions);
if (!Token::IsAssignmentOp(peek())) return expression;

if (is_destructuring_assignment) {
ValidateAssignmentPattern(CHECK_OK);
} else {
Comment on lines 2986 to 2987
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:(

(I guess we should keep the empty if block on the off chance we'd need to backport anything else onto this file in the future.)

expression = CheckAndRewriteReferenceExpression(
expression, lhs_beg_pos, scanner()->location().end_pos,
6 changes: 6 additions & 0 deletions deps/v8/test/mjsunit/regress/regress-8241.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// Copyright 2018 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 f(x) { }
f(x=>x, [x,y] = [1,2]);