[5.9] Slightly clean up FixIt.Change and FixIt.Changes
#1496
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.
Cherry-pick #1460 to release/5.9
The existing API with
FixIt.ChangeandFixIt.Changesand the fact that we passed[FixIt.Changes]around what fairly weird.Ideally, we would only have
FixIt.Changeand make it powerful enough to represent all the trivia transfer thatFixIt.Changesis doing. But given that that will be a larger effort, let’s make some smaller changes now that reduce the badness of the public API impact:FixIt.ChangestoSwiftParserDiagnostics, make it internal and rename it toMultiNodeChange. That way this type is no longer exposed in the public API, so we can iterate on it or remove it without breaking clients. The only thing that remains exposed isFixIt.Change, which we want to continue to support. We will probably add more cases to it in the future.FixIt.Changesno longer conform toExpressibleByArrayLiteral. That just makes everything a lot more explicit and easier to follow.FixIt.ChangeswhereFixIt.Changewas sufficient.presenceonTokenSyntaxsettable so you can dotoken.with(\.presence, .missing)