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
Keyword
kind 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
.