Fix resolveNodeHandle to check not only child nodes but ancestor nodes#4033
Open
jet2jet wants to merge 1 commit into
Open
Fix resolveNodeHandle to check not only child nodes but ancestor nodes#4033jet2jet wants to merge 1 commit into
jet2jet wants to merge 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR improves Session.resolveNodeHandle by adding an ancestor-walk fallback to locate the exact AST node when the initially resolved node’s kind/end don’t match the expected values.
Changes:
- Added an ancestor traversal to attempt an exact node match before falling back to child traversal.
Comment on lines
1841
to
+1847
| if node.Kind != kind || node.End() != end { | ||
| // Try to find the exact node by walking ancestors | ||
| for parent := node.Parent; parent != nil && parent.Kind != ast.KindSourceFile; parent = parent.Parent { | ||
| if parent.Pos() == pos && parent.End() == end && parent.Kind == kind { | ||
| return parent, nil | ||
| } | ||
| } |
Author
There was a problem hiding this comment.
kind == ast.KindSourceFile is already checked in the previous line (1830). Therefore it is not necessary to check for parent with parent.kind == ast.KindSourceFile here.
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.
Fixes #3938
Add ancestor traversals in
resolveNodeHandleto detect the actual Node.Since
ast.GetNodeAtPositiononly usespos(notposandend), some nodes may be hidden by their children (with samepos), such asPropertyAccessExpression(itself andexpressionnode may be the samepos, and ifexpressionis such asExpressionnode,ast.GetNodeAtPositionreturnsexpression, not the parentPropertyAccessExpression).This PR fixes those patterns.