Don't leak an expression body's indent into later declarations - #2365
Open
eyupcanakman wants to merge 1 commit into
Open
Don't leak an expression body's indent into later declarations#2365eyupcanakman wants to merge 1 commit into
eyupcanakman wants to merge 1 commit into
Conversation
A function body that opens or closes an indent had that half trimmed away while its partner stayed, so CodeWriter kept the wrong level for every declaration after it. Deeper cases threw cannot unindent instead. Trimming now takes placeholders back from either end until nothing in the block is left unmatched. Fixes square#1421.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
An expression body that opens or closes an indent leaks it into every declaration after it, so each following function lands two spaces deeper than the last. Deeper nesting throws
cannot unindentinstead.CodeBlock.trim()strips no-arg placeholders from both ends, dropping one half of a pair while its partner stays behind. It now takes them back from either end until nothing is left unmatched.A body that opens an indent before the returned expression emits as a block body now, since the trimmed block no longer starts with the return. Same code, different shape. Most of the diff is tests, one per broken shape.
Fixes #1421.
docs/changelog.mdhas been updated if applicable.be added to the changelog.