Skip to content

Commit 75cee5e

Browse files
committed
Merged: Don't skip hole checks inside patterns in parameter lists
Revision: 3c39bac BUG=v8:5454 NOTRY=true NOPRESUBMIT=true NOTREECHECKS=true [email protected] Review URL: https://codereview.chromium.org/2423503002 . Cr-Commit-Position: refs/branch-heads/5.4@{#61} Cr-Branched-From: 5ce2827-refs/heads/5.4.500@{#2} Cr-Branched-From: ad07b49-refs/heads/master@{#38841}
1 parent 59ff54e commit 75cee5e

2 files changed

Lines changed: 12 additions & 5 deletions

File tree

src/parsing/parser.cc

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4506,9 +4506,6 @@ Block* Parser::BuildParameterInitializationBlock(
45064506
// TODO(adamk): Should this be kNoSourcePosition, since
45074507
// it's just copying from a temp var to the real param var?
45084508
descriptor.initialization_pos = parameter.pattern->position();
4509-
// The initializer position which will end up in,
4510-
// Variable::initializer_position(), used for hole check elimination.
4511-
int initializer_position = parameter.pattern->position();
45124509
Expression* initial_value =
45134510
factory()->NewVariableProxy(parameters.scope->parameter(i));
45144511
if (parameter.initializer != nullptr) {
@@ -4524,7 +4521,6 @@ Block* Parser::BuildParameterInitializationBlock(
45244521
initial_value = factory()->NewConditional(
45254522
condition, parameter.initializer, initial_value, kNoSourcePosition);
45264523
descriptor.initialization_pos = parameter.initializer->position();
4527-
initializer_position = parameter.initializer_end_position;
45284524
}
45294525

45304526
Scope* param_scope = scope();
@@ -4547,7 +4543,7 @@ Block* Parser::BuildParameterInitializationBlock(
45474543

45484544
BlockState block_state(&scope_state_, param_scope);
45494545
DeclarationParsingResult::Declaration decl(
4550-
parameter.pattern, initializer_position, initial_value);
4546+
parameter.pattern, parameter.initializer_end_position, initial_value);
45514547
PatternRewriter::DeclareAndInitializeVariables(param_block, &descriptor,
45524548
&decl, nullptr, CHECK_OK);
45534549

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// Copyright 2016 the V8 project authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
assertThrows(function(...[b = !b]) { }, ReferenceError);
6+
assertThrows(() => (function([b = !b]) { })([]), ReferenceError);
7+
assertThrows(() => (function({b = !b}) { })({}), ReferenceError);
8+
9+
assertThrows((...[b = !b]) => { }, ReferenceError);
10+
assertThrows(() => (([b = !b]) => { })([]), ReferenceError);
11+
assertThrows(() => (({b = !b}) => { })({}), ReferenceError);

0 commit comments

Comments
 (0)