From 746f0c3dfb11407a3b20aecf794e5560a0fe635c Mon Sep 17 00:00:00 2001 From: Alex Hoppen Date: Wed, 14 Jun 2023 07:52:09 -0700 Subject: [PATCH] Add missing trait conformances These trait conformances were simply missing. Add them. rdar://110818997 --- .../Sources/SyntaxSupport/AttributeNodes.swift | 1 + .../Sources/SyntaxSupport/AvailabilityNodes.swift | 1 + .../Sources/SyntaxSupport/DeclNodes.swift | 2 ++ Sources/SwiftSyntax/generated/SyntaxTraits.swift | 8 +++++++- .../generated/ResultBuilders.swift | 15 ++++++++++++--- .../SwiftSyntaxMacrosTest/MacroSystemTests.swift | 2 +- 6 files changed, 24 insertions(+), 5 deletions(-) diff --git a/CodeGeneration/Sources/SyntaxSupport/AttributeNodes.swift b/CodeGeneration/Sources/SyntaxSupport/AttributeNodes.swift index c9c8b8b9d24..04c6e192f76 100644 --- a/CodeGeneration/Sources/SyntaxSupport/AttributeNodes.swift +++ b/CodeGeneration/Sources/SyntaxSupport/AttributeNodes.swift @@ -187,6 +187,7 @@ public let ATTRIBUTE_NODES: [Node] = [ nameForDiagnostics: "version", description: "A single platform/version pair in an attribute, e.g. `iOS 10.1`.", kind: "Syntax", + traits: ["WithTrailingComma"], children: [ Child( name: "AvailabilityVersionRestriction", diff --git a/CodeGeneration/Sources/SyntaxSupport/AvailabilityNodes.swift b/CodeGeneration/Sources/SyntaxSupport/AvailabilityNodes.swift index 80134e48eb2..0746fc678f0 100644 --- a/CodeGeneration/Sources/SyntaxSupport/AvailabilityNodes.swift +++ b/CodeGeneration/Sources/SyntaxSupport/AvailabilityNodes.swift @@ -21,6 +21,7 @@ public let AVAILABILITY_NODES: [Node] = [ nameForDiagnostics: "availability argument", description: "A single argument to an `@available` argument like `*`, `iOS 10.1`, or `message: \"This has been deprecated\"`.", kind: "Syntax", + traits: ["WithTrailingComma"], children: [ Child( name: "Entry", diff --git a/CodeGeneration/Sources/SyntaxSupport/DeclNodes.swift b/CodeGeneration/Sources/SyntaxSupport/DeclNodes.swift index 801c40ac0a6..3bf521bf8d3 100644 --- a/CodeGeneration/Sources/SyntaxSupport/DeclNodes.swift +++ b/CodeGeneration/Sources/SyntaxSupport/DeclNodes.swift @@ -1779,6 +1779,7 @@ public let DECL_NODES: [Node] = [ name: "PrecedenceGroupNameElement", nameForDiagnostics: nil, kind: "Syntax", + traits: ["WithTrailingComma"], children: [ Child( name: "Name", @@ -2095,6 +2096,7 @@ public let DECL_NODES: [Node] = [ traits: [ "IdentifiedDecl", "WithAttributes", + "WithModifiers", ], children: [ Child( diff --git a/Sources/SwiftSyntax/generated/SyntaxTraits.swift b/Sources/SwiftSyntax/generated/SyntaxTraits.swift index fe7445f5f63..7d053134eeb 100644 --- a/Sources/SwiftSyntax/generated/SyntaxTraits.swift +++ b/Sources/SwiftSyntax/generated/SyntaxTraits.swift @@ -499,6 +499,10 @@ extension AssociatedtypeDeclSyntax: IdentifiedDeclSyntax, WithAttributesSyntax, extension AttributedTypeSyntax: WithAttributesSyntax {} +extension AvailabilityArgumentSyntax: WithTrailingCommaSyntax {} + +extension AvailabilityVersionRestrictionListEntrySyntax: WithTrailingCommaSyntax {} + extension CaseItemSyntax: WithTrailingCommaSyntax {} extension CatchClauseSyntax: WithCodeBlockSyntax {} @@ -603,6 +607,8 @@ extension PoundSourceLocationSyntax: ParenthesizedSyntax {} extension PrecedenceGroupDeclSyntax: IdentifiedDeclSyntax, WithAttributesSyntax, WithModifiersSyntax {} +extension PrecedenceGroupNameElementSyntax: WithTrailingCommaSyntax {} + extension PrimaryAssociatedTypeSyntax: WithTrailingCommaSyntax {} extension ProtocolDeclSyntax: DeclGroupSyntax, IdentifiedDeclSyntax, WithAttributesSyntax, WithModifiersSyntax {} @@ -635,7 +641,7 @@ extension TupleTypeSyntax: ParenthesizedSyntax {} extension TypeEffectSpecifiersSyntax: EffectSpecifiersSyntax {} -extension TypealiasDeclSyntax: IdentifiedDeclSyntax, WithAttributesSyntax {} +extension TypealiasDeclSyntax: IdentifiedDeclSyntax, WithAttributesSyntax, WithModifiersSyntax {} extension VariableDeclSyntax: WithAttributesSyntax, WithModifiersSyntax {} diff --git a/Sources/SwiftSyntaxBuilder/generated/ResultBuilders.swift b/Sources/SwiftSyntaxBuilder/generated/ResultBuilders.swift index 9b7db84da0d..a2d8f731f9b 100644 --- a/Sources/SwiftSyntaxBuilder/generated/ResultBuilders.swift +++ b/Sources/SwiftSyntaxBuilder/generated/ResultBuilders.swift @@ -419,7 +419,10 @@ public struct AvailabilitySpecListBuilder { /// If declared, this will be called on the partial result from the outermost /// block statement to produce the final returned result. public static func buildFinalResult(_ component: Component) -> FinalResult { - return .init(component) + let lastIndex = component.count - 1 + return .init(component.enumerated().map { index, source in + return index < lastIndex ? source.ensuringTrailingComma() : source + }) } } @@ -499,7 +502,10 @@ public struct AvailabilityVersionRestrictionListBuilder { /// If declared, this will be called on the partial result from the outermost /// block statement to produce the final returned result. public static func buildFinalResult(_ component: Component) -> FinalResult { - return .init(component) + let lastIndex = component.count - 1 + return .init(component.enumerated().map { index, source in + return index < lastIndex ? source.ensuringTrailingComma() : source + }) } } @@ -3128,7 +3134,10 @@ public struct PrecedenceGroupNameListBuilder { /// If declared, this will be called on the partial result from the outermost /// block statement to produce the final returned result. public static func buildFinalResult(_ component: Component) -> FinalResult { - return .init(component) + let lastIndex = component.count - 1 + return .init(component.enumerated().map { index, source in + return index < lastIndex ? source.ensuringTrailingComma() : source + }) } } diff --git a/Tests/SwiftSyntaxMacrosTest/MacroSystemTests.swift b/Tests/SwiftSyntaxMacrosTest/MacroSystemTests.swift index 58f43e2fec9..8306e73332f 100644 --- a/Tests/SwiftSyntaxMacrosTest/MacroSystemTests.swift +++ b/Tests/SwiftSyntaxMacrosTest/MacroSystemTests.swift @@ -1112,7 +1112,7 @@ final class MacroSystemTests: XCTestCase { expandedSource: #""" struct S { @attr static var value1 = 1 - @attr typealias A = B + @attr static typealias A = B } """#, macros: ["decls": DeclsFromStringsMacro.self],