Link to PR: [Syntax] Remove unnecessary special attribute arguments syntax kinds by rintaro · Pull Request #3028 · swiftlang/swift-syntax · GitHub
Summary: Several builtin attributes that currently has specialized argument list syntax. But they actually can be parsed and represented with regular AttributeSyntax.Argument.argumentList(LabeledExprListSyntax). Since special attribute syntax doesn't give us much benefit other than the slight possibility of some specialized parser diangnostics, I propose to remove them and use more generalized LabeledExprListSyntax
API changes:
- Remove
ConventionAttributeArgumentsSyntax,ConventionWitnessMethodAttributeArgumentsSyntax,OpaqueReturnTypeOfAttributeArgumentsSyntax,ExposeAttributeArgumentsSyntax,UnderscorePrivateAttributeArgumentsSyntax, andUnavailableFromAsyncAttributeArgumentsSyntax. - Remove cases from
AttributeSyntax.Arguments:token(TokenSyntax),string(StringLiteralExprSyntax),conventionArguments(ConventionAttributeArgumentsSyntax),conventionWitnessMethodArguments(ConventionWitnessMethodAttributeArgumentsSyntax),opaqueReturnTypeOfAttributeArguments(OpaqueReturnTypeOfAttributeArgumentsSyntax),exposeAttributeArguments(ExposeAttributeArgumentsSyntax),underscorePrivateAttributeArguments(UnderscorePrivateAttributeArgumentsSyntax), andunavailableFromAsyncArguments(UnavailableFromAsyncAttributeArgumentsSyntax) - Remove several
Keywordkind just for those types.
Migration: Those arguments are now parsed as LabeledExprListSyntax. SyntaxParser clients can use .argumentList case to extract the arguments. For SwiftSyntax/SwiftSyntaxBuilder users who are using those specialized syntax can migrate to LabeledExprListSyntax.