fix: Clean up out-of-scope references to auto-managed resource #564
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.
Fix #561
This PR makes the UnclosedResourcesProcessor clean up references to the variable that was inlined into the resource block. Previously, such left-over references were not cleaned up, causing compile errors.
Here's an example of the new-and-improved repair, note how it removes the
if
in the catcher:It works by looking for references to the inlined variable inside the catchers and finalizer, and removing any statement containing a reference. It's possible that this could "over clean" for example by removing an
if
statement where the condition has a reference to the resource, but there's also unrelated stuff inside of the then or else blocks. But I think we'll deal with that only if we actually find it happening, as I've said before, this processor will never be perfect.