Skip to content

Commit a0400e0

Browse files
authored
Merge pull request #3074 from beccadax/abi-let-you-graduate-6.2
2 parents b72b6a8 + 4bc3e86 commit a0400e0

21 files changed

+86
-163
lines changed

CodeGeneration/Sources/SyntaxSupport/AttributeNodes.swift

+1-3
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,7 @@ public let ATTRIBUTE_NODES: [Node] = [
122122
Child(
123123
name: "abiArguments",
124124
// Special arguments for declaration syntax. e.g. @abi(func abiName() -> Int)
125-
kind: .node(kind: .abiAttributeArguments),
126-
experimentalFeature: .abiAttribute
125+
kind: .node(kind: .abiAttributeArguments)
127126
),
128127
]),
129128
documentation: """
@@ -256,7 +255,6 @@ public let ATTRIBUTE_NODES: [Node] = [
256255
Node(
257256
kind: .abiAttributeArguments,
258257
base: .syntax,
259-
experimentalFeature: .abiAttribute,
260258
nameForDiagnostics: "ABI-providing declaration",
261259
documentation: "The arguments of the '@abi' attribute",
262260
children: [

CodeGeneration/Sources/SyntaxSupport/ExperimentalFeatures.swift

-5
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ public enum ExperimentalFeature: String, CaseIterable {
1919
case nonescapableTypes
2020
case trailingComma
2121
case coroutineAccessors
22-
case abiAttribute
2322
case keypathWithMethodMembers
2423
case oldOwnershipOperatorSpellings
2524
case inlineArrayTypeSugar
@@ -39,8 +38,6 @@ public enum ExperimentalFeature: String, CaseIterable {
3938
return "TrailingComma"
4039
case .coroutineAccessors:
4140
return "CoroutineAccessors"
42-
case .abiAttribute:
43-
return "ABIAttribute"
4441
case .keypathWithMethodMembers:
4542
return "KeypathWithMethodMembers"
4643
case .oldOwnershipOperatorSpellings:
@@ -65,8 +62,6 @@ public enum ExperimentalFeature: String, CaseIterable {
6562
return "trailing commas"
6663
case .coroutineAccessors:
6764
return "coroutine accessors"
68-
case .abiAttribute:
69-
return "@abi attribute"
7065
case .keypathWithMethodMembers:
7166
return "keypaths with method members"
7267
case .oldOwnershipOperatorSpellings:

CodeGeneration/Sources/SyntaxSupport/KeywordSpec.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ public enum Keyword: CaseIterable {
357357
case ._version:
358358
return KeywordSpec("_version")
359359
case .abi:
360-
return KeywordSpec("abi", experimentalFeature: .abiAttribute)
360+
return KeywordSpec("abi")
361361
case .accesses:
362362
return KeywordSpec("accesses")
363363
case .actor:

Sources/SwiftParser/Attributes.swift

+8-16
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,9 @@ extension Parser {
230230
switch peek(isAtAnyIn: DeclarationAttributeWithSpecialSyntax.self) {
231231
case .abi:
232232
return parseAttribute(argumentMode: .required) { parser in
233-
return parser.parseABIAttributeArguments()
233+
return (nil, .abiArguments(parser.parseABIAttributeArguments()))
234234
} parseMissingArguments: { parser in
235-
return parser.parseABIAttributeArguments(missingLParen: true)
235+
return (nil, .abiArguments(parser.parseABIAttributeArguments(missingLParen: true)))
236236
}
237237
case .available, ._spi_available:
238238
return parseAttribute(argumentMode: .required) { parser in
@@ -794,9 +794,9 @@ extension Parser {
794794
/// - Parameter missingLParen: `true` if the opening paren for the argument list was missing.
795795
mutating func parseABIAttributeArguments(
796796
missingLParen: Bool = false
797-
) -> (RawUnexpectedNodesSyntax?, RawAttributeSyntax.Arguments) {
798-
func makeMissingProviderArguments(unexpectedBefore: [RawSyntax]) -> RawAttributeSyntax.Arguments {
799-
let args = RawABIAttributeArgumentsSyntax(
797+
) -> RawABIAttributeArgumentsSyntax {
798+
func makeMissingProviderArguments(unexpectedBefore: [RawSyntax]) -> RawABIAttributeArgumentsSyntax {
799+
return RawABIAttributeArgumentsSyntax(
800800
provider: .missing(
801801
RawMissingDeclSyntax(
802802
unexpectedBefore.isEmpty ? nil : RawUnexpectedNodesSyntax(elements: unexpectedBefore, arena: self.arena),
@@ -808,7 +808,6 @@ extension Parser {
808808
),
809809
arena: self.arena
810810
)
811-
return .abiArguments(args)
812811
}
813812

814813
// Consider the three kinds of mistakes we might see here:
@@ -824,23 +823,16 @@ extension Parser {
824823
// In lieu of that, we judge that recovering gracefully from #3 is more important than #2 and therefore do not even
825824
// attempt to parse the argument unless we've seen a left paren.
826825
guard !missingLParen && !self.at(.rightParen) else {
827-
return (nil, makeMissingProviderArguments(unexpectedBefore: []))
826+
return makeMissingProviderArguments(unexpectedBefore: [])
828827
}
829828

830829
let decl = parseDeclaration(in: .argumentList)
831830

832-
guard experimentalFeatures.contains(.abiAttribute) else {
833-
return (
834-
RawUnexpectedNodesSyntax([decl], arena: self.arena),
835-
.argumentList(RawLabeledExprListSyntax(elements: [], arena: self.arena))
836-
)
837-
}
838-
839831
guard let provider = RawABIAttributeArgumentsSyntax.Provider(decl) else {
840-
return (nil, makeMissingProviderArguments(unexpectedBefore: [decl.raw]))
832+
return makeMissingProviderArguments(unexpectedBefore: [decl.raw])
841833
}
842834

843-
return (nil, .abiArguments(RawABIAttributeArgumentsSyntax(provider: provider, arena: self.arena)))
835+
return RawABIAttributeArgumentsSyntax(provider: provider, arena: self.arena)
844836
}
845837
}
846838

Sources/SwiftParser/generated/ExperimentalFeatures.swift

+3-8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/SwiftSyntax/Documentation.docc/generated/SwiftSyntax.md

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/SwiftSyntax/generated/Keyword.swift

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/SwiftSyntax/generated/SyntaxAnyVisitor.swift

-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/SwiftSyntax/generated/SyntaxEnum.swift

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/SwiftSyntax/generated/SyntaxKind.swift

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/SwiftSyntax/generated/SyntaxRewriter.swift

+1-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/SwiftSyntax/generated/SyntaxVisitor.swift

+2-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/SwiftSyntax/generated/raw/RawSyntaxNodesAB.swift

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesAB.swift

+10-19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesD.swift

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesEF.swift

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesGHI.swift

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesJKLMN.swift

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodesQRS.swift

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)