Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 578fa0f

Browse filesBrowse files
Benjamin Coedanielleadams
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 <verwaest@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#71765} Refs: v8/v8@dfcdf78 PR-URL: #36573 Fixes: #36619 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
1 parent 863bfc4 commit 578fa0f
Copy full SHA for 578fa0f

File tree

Expand file treeCollapse file tree

2 files changed

+27
-6
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+27
-6
lines changed
Open diff view settings
Collapse file

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

Copy file name to clipboardExpand all lines: deps/v8/src/parsing/parser-base.h
+9-6Lines changed: 9 additions & 6 deletions
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);
Collapse file

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

Copy file name to clipboardExpand all lines: deps/v8/test/mjsunit/code-coverage-block.js
+18Lines changed: 18 additions & 0 deletions
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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.