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 a4fa31a

Browse filesBrowse files
aduh95ruyadorno
authored andcommitted
assert: optimize partial comparison of two Sets
PR-URL: #55970 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Chemi Atlow <chemi@atlow.co.il> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
1 parent e529cf6 commit a4fa31a
Copy full SHA for a4fa31a

File tree

Expand file treeCollapse file tree

1 file changed

+5
-13
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

1 file changed

+5
-13
lines changed
Open diff view settings
Collapse file

‎lib/assert.js‎

Copy file name to clipboardExpand all lines: lib/assert.js
+5-13Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -414,33 +414,25 @@ function compareBranch(
414414
}
415415

416416
// Check for Set object equality
417-
// TODO(aduh95): switch to `SetPrototypeIsSubsetOf` when it's available
418417
if (isSet(actual) && isSet(expected)) {
419418
if (expected.size > actual.size) {
420419
return false; // `expected` can't be a subset if it has more elements
421420
}
422421

423422
if (isDeepEqual === undefined) lazyLoadComparison();
424423

425-
const actualArray = ArrayFrom(actual);
426-
const expectedArray = ArrayFrom(expected);
424+
const actualArray = ArrayFrom(FunctionPrototypeCall(SafeSet.prototype[SymbolIterator], actual));
425+
const expectedIterator = FunctionPrototypeCall(SafeSet.prototype[SymbolIterator], expected);
427426
const usedIndices = new SafeSet();
428427

429-
for (let expectedIdx = 0; expectedIdx < expectedArray.length; expectedIdx++) {
430-
const expectedItem = expectedArray[expectedIdx];
431-
let found = false;
432-
428+
expectedIteration: for (const expectedItem of expectedIterator) {
433429
for (let actualIdx = 0; actualIdx < actualArray.length; actualIdx++) {
434430
if (!usedIndices.has(actualIdx) && isDeepStrictEqual(actualArray[actualIdx], expectedItem)) {
435431
usedIndices.add(actualIdx);
436-
found = true;
437-
break;
432+
continue expectedIteration;
438433
}
439434
}
440-
441-
if (!found) {
442-
return false;
443-
}
435+
return false;
444436
}
445437

446438
return true;

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.