fix: avoid circular reference when resolving name from within assignment #434
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.
When calling
resolveToValue
, currently it may resolve to an expression containing the very reference we were trying to resolve, even though the correct resolution in terms of program flow is an earlier assignment. In particular, this arises in some handlers when we reassign a variable holding a component, e.g when wrapping it with a HOC:Here, we minimally tweak
resolveToValue
to (1) take an Identifier path instead of a name; and (2) not resolve to an assignment expression's RHS if the assignment contains the reference we're trying to resolve. Note that this isn't a complete solution for tracking reassignments (e.g. it doesn't account for ordering or more complex ASTs) but it should be a satisfactory fix for this particular pattern.