refactor: Use file path comparison instead of object identity for DocumentEntryNode#1290
Closed
CybotTM wants to merge 2 commits intophpDocumentor:mainfrom
Closed
refactor: Use file path comparison instead of object identity for DocumentEntryNode#1290CybotTM wants to merge 2 commits intophpDocumentor:mainfrom
CybotTM wants to merge 2 commits intophpDocumentor:mainfrom
Conversation
…umentEntryNode Replace object identity comparison (===) with file path comparison when matching DocumentEntryNode instances. The file path is the natural unique identifier for a document entry, making identity comparison fragile and unnecessarily restrictive. This change: - Makes the code more robust to refactoring that may create new instances - Aligns with how SectionEntryNode comparison already works (uses getId()) - Enables future optimizations that may cache or recreate entry objects Changed locations: - RenderContext::getDocumentNodeForEntry() - GlobalMenuPass (root document lookup) - DocumentTreeIterator::current() No behavior change - documents are still matched by their file path, which was always the intent.
- Cache root document entry for instant retrieval - Use direct hash lookup in getDocumentEntry() with fallback for numerically-indexed arrays from setDocumentEntries() - Invalidate cache in setDocumentEntries() and reset() This optimization is enabled by the previous commit's refactoring from object identity to file path comparison.
This was referenced Jan 22, 2026
Contributor
Author
|
Closing in favor of a cleaner PR with distinct commits for: (1) preparatory refactor, (2) performance improvement, (3) test adaptation. See new PR for combined changes. |
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.
Summary
Refactors document entry comparisons to use file path instead of object identity.
Why This Change?
Several places in the codebase compare DocumentEntryNode instances using object identity (
===). This works when the same instance is used throughout, but breaks when:Using file path comparison is more robust and semantically correct.
Changes
Performance Impact
See Performance Analysis Report for detailed benchmarks.
Related PRs
All PRs can be merged independently in any order.