Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1917 +/- ##
=======================================
Coverage 85.91% 85.91%
=======================================
Files 379 379
Lines 19778 19778
Branches 3016 3017 +1
=======================================
Hits 16993 16993
Misses 2785 2785 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Describe your change:
KeyPriorityQueue._shiftDowntreatsInfinityas an absent node and returns before restoring heap order. For example, pushing priorities[0, 1, Infinity]and popping the minimum leavesInfinityabove1; increasing an existing root or internal node's priority toInfinityhas the same problem.Infinityis also used by the existingPrimMSTimplementation when initializing this queue.Check whether the position is outside the heap instead of checking its priority. Existing comparisons can then sink a present node with infinite priority through finite descendants, while retaining the empty-heap guard.
The regression tests cover replacement nodes with one or two children, root and internal-node updates, equal infinite priorities and queue reuse, and mixed updates/extractions checked against a reference map. They also verify membership, cardinality and the parent/child heap invariant.
Validation
d00827c097c4faa460100501edadb0415b7d6d28:npm ci, 16 focused tests, all 11,977 tests, whole-projectnpm run check-style, andnpm test -- --coveragepass. Native Node 22 validation.Checklist:
AI assistance was used to inspect the implementation and draft the minimal fix and regression tests. The change was checked against the original source and validated with the project's native tests and formatting tools.