Skip to content

Commit 578fa0f

Browse files
bcoedanielleadams
authored andcommitted
deps: V8: cherry-pick dfcdf7837e23
Original commit message: [coverage] fix greedy nullish coalescing The SourceRangeScope helper was consuming too many characters, instead explicitly create SourceRange, based on scanner position. Bug: v8:11231 Change-Id: I852d211227abacf867e8f1ab3e3ab06dbdba2a9b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2576006 Reviewed-by: Toon Verwaest <[email protected]> Commit-Queue: Toon Verwaest <[email protected]> Cr-Commit-Position: refs/heads/master@{#71765} Refs: v8/v8@dfcdf78 PR-URL: #36573 Fixes: #36619 Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Michael Dawson <[email protected]> Reviewed-By: Jiawen Geng <[email protected]>
1 parent 863bfc4 commit 578fa0f

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

deps/v8/src/parsing/parser-base.h

+9-6
Original file line numberDiff line numberDiff line change
@@ -2983,12 +2983,15 @@ ParserBase<Impl>::ParseCoalesceExpression(ExpressionT expression) {
29832983
bool first_nullish = true;
29842984
while (peek() == Token::NULLISH) {
29852985
SourceRange right_range;
2986-
SourceRangeScope right_range_scope(scanner(), &right_range);
2987-
Consume(Token::NULLISH);
2988-
int pos = peek_position();
2989-
2990-
// Parse BitwiseOR or higher.
2991-
ExpressionT y = ParseBinaryExpression(6);
2986+
int pos;
2987+
ExpressionT y;
2988+
{
2989+
SourceRangeScope right_range_scope(scanner(), &right_range);
2990+
Consume(Token::NULLISH);
2991+
pos = peek_position();
2992+
// Parse BitwiseOR or higher.
2993+
y = ParseBinaryExpression(6);
2994+
}
29922995
if (first_nullish) {
29932996
expression =
29942997
factory()->NewBinaryOperation(Token::NULLISH, expression, y, pos);

deps/v8/test/mjsunit/code-coverage-block.js

+18
Original file line numberDiff line numberDiff line change
@@ -1177,4 +1177,22 @@ a(true); // 0500
11771177
{"start":0,"end":401,"count":2},
11781178
{"start":154,"end":254,"count":0}]);
11791179

1180+
TestCoverage(
1181+
"https://crbug.com/v8/11231 - nullish coalescing",
1182+
`
1183+
const a = true // 0000
1184+
const b = false // 0050
1185+
const c = undefined // 0100
1186+
const d = a ?? 99 // 0150
1187+
const e = 33 // 0200
1188+
const f = b ?? (c ?? 99) // 0250
1189+
const g = 33 // 0300
1190+
const h = c ?? (c ?? 'hello') // 0350
1191+
const i = c ?? b ?? 'hello' // 0400
1192+
`,
1193+
[{"start":0,"end":449,"count":1},
1194+
{"start":162,"end":167,"count":0},
1195+
{"start":262,"end":274,"count":0},
1196+
{"start":417,"end":427,"count":0}]);
1197+
11801198
%DebugToggleBlockCoverage(false);

0 commit comments

Comments
 (0)