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 handles unsplit call chains, fully split ones, as well as block-style calls, like:
This doesn't fully implement the proposal I sketched out because it only allows a single block call. There's a long TODO(tall) comment about whether we want to do that, but I figured it makes sense to do that as a separate iteration since there is so much in here.
But it implements most of it, and I've migrated all of the existing tests over. It ended up being both simpler than the old formatter while also producing better output.
The old formatter has a restriction where the indentation of a piece of code must be fixed regardless of which way it splits. It can't handle:
That leads to it sometimes producing gross output like:
To try to avoid that, it has lots of heuristics during Chunk construction to try to not end up with output like that during line splitting.
The new formatter doesn't need any of those heuristics because it can freely choose indentation during line splitting. 🎉