Simplify SwiftBasicFormat by introducing structural information of the syntax tree as static properties #1013
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.
The core idea here is that we a static property
structure
to all the syntax nodes, which allows us to query the statically known structure of the syntax tree. That wayBasicFormat
can have a list of all the children it should indent or put on a new line, reducing its implementation from 3,000 to 300 lines.structure
will also be useful in a variety of other use cases:debugInitCall
to insert upcast conversions it is currently missing because it can usechildrenKeyPaths
to query the static variable type of a childchildNameForDiagnostics
could be implemented more cleanly on top ofchildrenKeyPaths