Fix inlining nested block statements in branch simplifier #1536
+59
−4
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.
This fixes an issue where the branch simplifier would inline single statement blocks too aggressively, resulting in broken code. For example:
gets turned into
This results in the
else
being applied to the secondif
rather than the first.I've attempted to solve this by computing the depth of statements in the block's first statement until hitting another block statement. If the depth is greater than 1, then it's not safe to inline the block.
Perhaps there's a better way to solve this? i.e. should the printer be handling this based on precedence?