swiftlang / swift-syntax

A set of Swift libraries for parsing, inspecting, generating, and transforming Swift source code.
Apache License 2.0
3.2k stars 405 forks source link

Further generalize parse diagnostics functions #2753

Open AppAppWorks opened 1 month ago

AppAppWorks commented 1 month ago

Description

2731 has embarked on the generalization of parse diagnostics functions. It was driven by the necessity of manipulating a whole TypeSyntax (the thrown type) instead of discrete TokenSyntaxs which the functions were originally designed for.

The refactoring effort stopped at generalizing ParseDiagnosticsGenerator.exchangeTokens into ParseDiagnosticsGenerator.exchangeNodes that has relaxed the accepted input type from TokenSyntax to Syntax. However several implementations of ParserError such as EffectsSpecifierAfterArrow, and implementations of ParserFixIt such as MoveTokensAfterFixIt that constitute Diagnostic still expect TokenSyntax. More importantly, nodesDescriptionAndCommonParent, the common utility function responsible for rendering several messages in the diagnostic, expects a list of TokenSyntax as its input.

We should continue refactoring on these functions to further improve generality.

ahoppen commented 1 month ago

Synced to Apple’s issue tracker as rdar://132444863