fix: properly add variable declarations for IIFE loop assignees #1094
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 #750
The solution here is similar in spirit to #639, but has some differences.
Rather than allowing the loop to become an IIFE and letting
add-variable-declarations put in the declaration for us, we now explicitly add
declarations for any index/value bindings that we know will be in IIFEs, as long
as there is at least one usage of the variable outside of the loop. This
required a lot of coordination between BlockPatcher and all of its descendant
ForPatchers during initialize so that patching can be done in the proper order.