Fix #4498: Go to definition in lifted expressions #4516
Merged
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.
Consider the following snippet:
This is rewritten as:
During lifting, we need to assign positions to the trees. We were
assigning the position of
new Ain the original code tox$0inNil.::(x$0), and the original position ofnew Atoval x$0 = new Awith a zero-extent.
Still considering this snippet, this means that when trying to go to the
definition on
new A, the IDE would think that the user tried to go tothe definition of
x$0, because the IDE would look for the matchingtree by position.
This commit changes this so that the lifted definition
(
val x$0 = new A) gets the position of the original expression, andthe reference gets a synthetic, zero-extent position. With this change,
the IDE correctly finds the right tree when selecting
new Ain theoriginal code.
Fixes #4498