Skip to content

Commit dba51ed

Browse files
committed
Use correct keywords for attribute argument
1 parent af18ea4 commit dba51ed

File tree

4 files changed

+71
-3
lines changed

4 files changed

+71
-3
lines changed

CodeGeneration/Sources/SyntaxSupport/AttributeNodes.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -641,7 +641,15 @@ public let ATTRIBUTE_NODES: [Node] = [
641641
children: [
642642
Child(
643643
name: "Label",
644-
kind: .node(kind: .token),
644+
kind: .token(choices: [
645+
.keyword(text: "target"),
646+
.keyword(text: "availability"),
647+
.keyword(text: "exported"),
648+
.keyword(text: "kind"),
649+
.keyword(text: "spi"),
650+
.keyword(text: "spiModule"),
651+
.keyword(text: "available"),
652+
]),
645653
nameForDiagnostics: "label",
646654
documentation: "The label of the argument"
647655
),

Sources/SwiftParser/generated/Parser+TokenSpecSet.swift

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1339,6 +1339,58 @@ extension LabeledExprSyntax {
13391339
}
13401340
}
13411341

1342+
extension LabeledSpecializeArgumentSyntax {
1343+
enum LabelOptions: TokenSpecSet {
1344+
case target
1345+
case availability
1346+
case exported
1347+
case kind
1348+
case spi
1349+
case spiModule
1350+
case available
1351+
1352+
init?(lexeme: Lexer.Lexeme) {
1353+
switch PrepareForKeywordMatch(lexeme) {
1354+
case TokenSpec(.target):
1355+
self = .target
1356+
case TokenSpec(.availability):
1357+
self = .availability
1358+
case TokenSpec(.exported):
1359+
self = .exported
1360+
case TokenSpec(.kind):
1361+
self = .kind
1362+
case TokenSpec(.spi):
1363+
self = .spi
1364+
case TokenSpec(.spiModule):
1365+
self = .spiModule
1366+
case TokenSpec(.available):
1367+
self = .available
1368+
default:
1369+
return nil
1370+
}
1371+
}
1372+
1373+
var spec: TokenSpec {
1374+
switch self {
1375+
case .target:
1376+
return .keyword(.target)
1377+
case .availability:
1378+
return .keyword(.availability)
1379+
case .exported:
1380+
return .keyword(.exported)
1381+
case .kind:
1382+
return .keyword(.kind)
1383+
case .spi:
1384+
return .keyword(.spi)
1385+
case .spiModule:
1386+
return .keyword(.spiModule)
1387+
case .available:
1388+
return .keyword(.available)
1389+
}
1390+
}
1391+
}
1392+
}
1393+
13421394
extension LayoutRequirementSyntax {
13431395
enum LayoutSpecifierOptions: TokenSpecSet {
13441396
case _Trivial

Sources/SwiftSyntax/generated/raw/RawSyntaxValidation.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1645,7 +1645,15 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) {
16451645
case .labeledSpecializeArgument:
16461646
assert(layout.count == 9)
16471647
assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self))
1648-
assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self))
1648+
assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self, tokenChoices: [
1649+
.keyword("target"),
1650+
.keyword("availability"),
1651+
.keyword("exported"),
1652+
.keyword("kind"),
1653+
.keyword("spi"),
1654+
.keyword("spiModule"),
1655+
.keyword("available")
1656+
]))
16491657
assertNoError(kind, 2, verify(layout[2], as: RawUnexpectedNodesSyntax?.self))
16501658
assertNoError(kind, 3, verify(layout[3], as: RawTokenSyntax.self, tokenChoices: [.tokenKind(.colon)]))
16511659
assertNoError(kind, 4, verify(layout[4], as: RawUnexpectedNodesSyntax?.self))

Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodes.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12016,7 +12016,7 @@ public struct LabeledExprSyntax: SyntaxProtocol, SyntaxHashable {
1201612016
///
1201712017
/// ### Children
1201812018
///
12019-
/// - `label`: ``TokenSyntax``
12019+
/// - `label`: (`'target'` | `'availability'` | `'exported'` | `'kind'` | `'spi'` | `'spiModule'` | `'available'`)
1202012020
/// - `colon`: `':'`
1202112021
/// - `value`: ``TokenSyntax``
1202212022
/// - `trailingComma`: `','`?

0 commit comments

Comments
 (0)