Skip to content

Commit 5f01a13

Browse files
committed
[Variadic Generics] type parameter pack syntax change: T... -> each T
1 parent e1fb17f commit 5f01a13

File tree

8 files changed

+111
-111
lines changed

8 files changed

+111
-111
lines changed

CodeGeneration/Sources/SyntaxSupport/gyb_generated/GenericNodes.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,13 @@ public let GENERIC_NODES: [Node] = [
5757
Child(name: "Attributes",
5858
kind: .collection(kind: "AttributeList", collectionElementName: "Attribute"),
5959
isOptional: true),
60+
Child(name: "Each",
61+
kind: .token(choices: [.keyword(text: "each")]),
62+
nameForDiagnostics: "parameter pack specifier",
63+
isOptional: true),
6064
Child(name: "Name",
6165
kind: .token(choices: [.token(tokenKind: "IdentifierToken")]),
6266
nameForDiagnostics: "name"),
63-
Child(name: "Ellipsis",
64-
kind: .token(choices: [.token(tokenKind: "EllipsisToken")]),
65-
nameForDiagnostics: "parameter pack specifier",
66-
isOptional: true),
6767
Child(name: "Colon",
6868
kind: .token(choices: [.token(tokenKind: "ColonToken")]),
6969
isOptional: true),

Sources/SwiftParser/Declarations.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -469,14 +469,14 @@ extension Parser {
469469
repeat {
470470
let attributes = self.parseAttributeList()
471471

472-
let (unexpectedBeforeName, name) = self.expectIdentifier()
473-
if attributes == nil && unexpectedBeforeName == nil && name.isMissing && elements.isEmpty {
472+
// Parse the 'each' keyword for a type parameter pack 'each T'.
473+
let each = self.consume(if: .keyword(.each))
474+
475+
let (unexpectedBetweenEachAndName, name) = self.expectIdentifier()
476+
if attributes == nil && unexpectedBetweenEachAndName == nil && name.isMissing && elements.isEmpty {
474477
break
475478
}
476479

477-
// Parse the ellipsis for a type parameter pack 'T...'.
478-
let ellipsis = tryConsumeEllipsisPrefix()
479-
480480
// Parse the ':' followed by a type.
481481
let colon = self.consume(if: .colon)
482482
let unexpectedBeforeInherited: RawUnexpectedNodesSyntax?
@@ -506,9 +506,9 @@ extension Parser {
506506
elements.append(
507507
RawGenericParameterSyntax(
508508
attributes: attributes,
509-
unexpectedBeforeName,
509+
each: each,
510+
unexpectedBetweenEachAndName,
510511
name: name,
511-
ellipsis: ellipsis,
512512
colon: colon,
513513
unexpectedBeforeInherited,
514514
inheritedType: inherited,

Sources/SwiftRefactor/OpaqueParameterToGeneric.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ fileprivate class SomeParameterRewriter: SyntaxRewriter {
5656

5757
let genericParam = GenericParameterSyntax(
5858
attributes: nil,
59+
each: nil,
5960
name: paramNameSyntax,
60-
ellipsis: nil,
6161
colon: colon,
6262
inheritedType: inheritedType,
6363
trailingComma: nil

Sources/SwiftSyntax/generated/raw/RawSyntaxNodes.swift

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9197,11 +9197,11 @@ public struct RawGenericParameterSyntax: RawSyntaxNodeProtocol {
91979197
public init(
91989198
_ unexpectedBeforeAttributes: RawUnexpectedNodesSyntax? = nil,
91999199
attributes: RawAttributeListSyntax?,
9200-
_ unexpectedBetweenAttributesAndName: RawUnexpectedNodesSyntax? = nil,
9200+
_ unexpectedBetweenAttributesAndEach: RawUnexpectedNodesSyntax? = nil,
9201+
each: RawTokenSyntax?,
9202+
_ unexpectedBetweenEachAndName: RawUnexpectedNodesSyntax? = nil,
92019203
name: RawTokenSyntax,
9202-
_ unexpectedBetweenNameAndEllipsis: RawUnexpectedNodesSyntax? = nil,
9203-
ellipsis: RawTokenSyntax?,
9204-
_ unexpectedBetweenEllipsisAndColon: RawUnexpectedNodesSyntax? = nil,
9204+
_ unexpectedBetweenNameAndColon: RawUnexpectedNodesSyntax? = nil,
92059205
colon: RawTokenSyntax?,
92069206
_ unexpectedBetweenColonAndInheritedType: RawUnexpectedNodesSyntax? = nil,
92079207
inheritedType: RawTypeSyntax?,
@@ -9215,11 +9215,11 @@ public struct RawGenericParameterSyntax: RawSyntaxNodeProtocol {
92159215
layout.initialize(repeating: nil)
92169216
layout[0] = unexpectedBeforeAttributes?.raw
92179217
layout[1] = attributes?.raw
9218-
layout[2] = unexpectedBetweenAttributesAndName?.raw
9219-
layout[3] = name.raw
9220-
layout[4] = unexpectedBetweenNameAndEllipsis?.raw
9221-
layout[5] = ellipsis?.raw
9222-
layout[6] = unexpectedBetweenEllipsisAndColon?.raw
9218+
layout[2] = unexpectedBetweenAttributesAndEach?.raw
9219+
layout[3] = each?.raw
9220+
layout[4] = unexpectedBetweenEachAndName?.raw
9221+
layout[5] = name.raw
9222+
layout[6] = unexpectedBetweenNameAndColon?.raw
92239223
layout[7] = colon?.raw
92249224
layout[8] = unexpectedBetweenColonAndInheritedType?.raw
92259225
layout[9] = inheritedType?.raw
@@ -9238,23 +9238,23 @@ public struct RawGenericParameterSyntax: RawSyntaxNodeProtocol {
92389238
layoutView.children[1].map(RawAttributeListSyntax.init(raw:))
92399239
}
92409240

9241-
public var unexpectedBetweenAttributesAndName: RawUnexpectedNodesSyntax? {
9241+
public var unexpectedBetweenAttributesAndEach: RawUnexpectedNodesSyntax? {
92429242
layoutView.children[2].map(RawUnexpectedNodesSyntax.init(raw:))
92439243
}
92449244

9245-
public var name: RawTokenSyntax {
9246-
layoutView.children[3].map(RawTokenSyntax.init(raw:))!
9245+
public var each: RawTokenSyntax? {
9246+
layoutView.children[3].map(RawTokenSyntax.init(raw:))
92479247
}
92489248

9249-
public var unexpectedBetweenNameAndEllipsis: RawUnexpectedNodesSyntax? {
9249+
public var unexpectedBetweenEachAndName: RawUnexpectedNodesSyntax? {
92509250
layoutView.children[4].map(RawUnexpectedNodesSyntax.init(raw:))
92519251
}
92529252

9253-
public var ellipsis: RawTokenSyntax? {
9254-
layoutView.children[5].map(RawTokenSyntax.init(raw:))
9253+
public var name: RawTokenSyntax {
9254+
layoutView.children[5].map(RawTokenSyntax.init(raw:))!
92559255
}
92569256

9257-
public var unexpectedBetweenEllipsisAndColon: RawUnexpectedNodesSyntax? {
9257+
public var unexpectedBetweenNameAndColon: RawUnexpectedNodesSyntax? {
92589258
layoutView.children[6].map(RawUnexpectedNodesSyntax.init(raw:))
92599259
}
92609260

Sources/SwiftSyntax/generated/raw/RawSyntaxValidation.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1232,9 +1232,9 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) {
12321232
assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self))
12331233
assertNoError(kind, 1, verify(layout[1], as: RawAttributeListSyntax?.self))
12341234
assertNoError(kind, 2, verify(layout[2], as: RawUnexpectedNodesSyntax?.self))
1235-
assertNoError(kind, 3, verify(layout[3], as: RawTokenSyntax.self))
1235+
assertNoError(kind, 3, verify(layout[3], as: RawTokenSyntax?.self))
12361236
assertNoError(kind, 4, verify(layout[4], as: RawUnexpectedNodesSyntax?.self))
1237-
assertNoError(kind, 5, verify(layout[5], as: RawTokenSyntax?.self))
1237+
assertNoError(kind, 5, verify(layout[5], as: RawTokenSyntax.self))
12381238
assertNoError(kind, 6, verify(layout[6], as: RawUnexpectedNodesSyntax?.self))
12391239
assertNoError(kind, 7, verify(layout[7], as: RawTokenSyntax?.self))
12401240
assertNoError(kind, 8, verify(layout[8], as: RawUnexpectedNodesSyntax?.self))

Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodes.swift

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -10305,11 +10305,11 @@ public struct GenericParameterSyntax: SyntaxProtocol, SyntaxHashable {
1030510305
leadingTrivia: Trivia? = nil,
1030610306
_ unexpectedBeforeAttributes: UnexpectedNodesSyntax? = nil,
1030710307
attributes: AttributeListSyntax? = nil,
10308-
_ unexpectedBetweenAttributesAndName: UnexpectedNodesSyntax? = nil,
10308+
_ unexpectedBetweenAttributesAndEach: UnexpectedNodesSyntax? = nil,
10309+
each: TokenSyntax? = nil,
10310+
_ unexpectedBetweenEachAndName: UnexpectedNodesSyntax? = nil,
1030910311
name: TokenSyntax = .identifier("IdentifierToken"),
10310-
_ unexpectedBetweenNameAndEllipsis: UnexpectedNodesSyntax? = nil,
10311-
ellipsis: TokenSyntax? = nil,
10312-
_ unexpectedBetweenEllipsisAndColon: UnexpectedNodesSyntax? = nil,
10312+
_ unexpectedBetweenNameAndColon: UnexpectedNodesSyntax? = nil,
1031310313
colon: TokenSyntax? = nil,
1031410314
_ unexpectedBetweenColonAndInheritedType: UnexpectedNodesSyntax? = nil,
1031510315
inheritedType: I? = nil,
@@ -10324,11 +10324,11 @@ public struct GenericParameterSyntax: SyntaxProtocol, SyntaxHashable {
1032410324
let data: SyntaxData = withExtendedLifetime((SyntaxArena(), (
1032510325
unexpectedBeforeAttributes,
1032610326
attributes,
10327-
unexpectedBetweenAttributesAndName,
10327+
unexpectedBetweenAttributesAndEach,
10328+
each,
10329+
unexpectedBetweenEachAndName,
1032810330
name,
10329-
unexpectedBetweenNameAndEllipsis,
10330-
ellipsis,
10331-
unexpectedBetweenEllipsisAndColon,
10331+
unexpectedBetweenNameAndColon,
1033210332
colon,
1033310333
unexpectedBetweenColonAndInheritedType,
1033410334
inheritedType,
@@ -10339,11 +10339,11 @@ public struct GenericParameterSyntax: SyntaxProtocol, SyntaxHashable {
1033910339
let layout: [RawSyntax?] = [
1034010340
unexpectedBeforeAttributes?.raw,
1034110341
attributes?.raw,
10342-
unexpectedBetweenAttributesAndName?.raw,
10342+
unexpectedBetweenAttributesAndEach?.raw,
10343+
each?.raw,
10344+
unexpectedBetweenEachAndName?.raw,
1034310345
name.raw,
10344-
unexpectedBetweenNameAndEllipsis?.raw,
10345-
ellipsis?.raw,
10346-
unexpectedBetweenEllipsisAndColon?.raw,
10346+
unexpectedBetweenNameAndColon?.raw,
1034710347
colon?.raw,
1034810348
unexpectedBetweenColonAndInheritedType?.raw,
1034910349
inheritedType?.raw,
@@ -10377,11 +10377,11 @@ public struct GenericParameterSyntax: SyntaxProtocol, SyntaxHashable {
1037710377
leadingTrivia: Trivia? = nil,
1037810378
_ unexpectedBeforeAttributes: UnexpectedNodesSyntax? = nil,
1037910379
attributes: AttributeListSyntax? = nil,
10380-
_ unexpectedBetweenAttributesAndName: UnexpectedNodesSyntax? = nil,
10380+
_ unexpectedBetweenAttributesAndEach: UnexpectedNodesSyntax? = nil,
10381+
each: TokenSyntax? = nil,
10382+
_ unexpectedBetweenEachAndName: UnexpectedNodesSyntax? = nil,
1038110383
name: TokenSyntax = .identifier("IdentifierToken"),
10382-
_ unexpectedBetweenNameAndEllipsis: UnexpectedNodesSyntax? = nil,
10383-
ellipsis: TokenSyntax? = nil,
10384-
_ unexpectedBetweenEllipsisAndColon: UnexpectedNodesSyntax? = nil,
10384+
_ unexpectedBetweenNameAndColon: UnexpectedNodesSyntax? = nil,
1038510385
colon: TokenSyntax? = nil,
1038610386
_ unexpectedBetweenColonAndInheritedType: UnexpectedNodesSyntax? = nil,
1038710387
inheritedType: MissingTypeSyntax? = nil,
@@ -10395,11 +10395,11 @@ public struct GenericParameterSyntax: SyntaxProtocol, SyntaxHashable {
1039510395
leadingTrivia: leadingTrivia,
1039610396
unexpectedBeforeAttributes,
1039710397
attributes: attributes,
10398-
unexpectedBetweenAttributesAndName,
10398+
unexpectedBetweenAttributesAndEach,
10399+
each: each,
10400+
unexpectedBetweenEachAndName,
1039910401
name: name,
10400-
unexpectedBetweenNameAndEllipsis,
10401-
ellipsis: ellipsis,
10402-
unexpectedBetweenEllipsisAndColon,
10402+
unexpectedBetweenNameAndColon,
1040310403
colon: colon,
1040410404
unexpectedBetweenColonAndInheritedType,
1040510405
inheritedType: Optional<TypeSyntax>.none,
@@ -10447,7 +10447,7 @@ public struct GenericParameterSyntax: SyntaxProtocol, SyntaxHashable {
1044710447
return GenericParameterSyntax(newData)
1044810448
}
1044910449

10450-
public var unexpectedBetweenAttributesAndName: UnexpectedNodesSyntax? {
10450+
public var unexpectedBetweenAttributesAndEach: UnexpectedNodesSyntax? {
1045110451
get {
1045210452
return data.child(at: 2, parent: Syntax(self)).map(UnexpectedNodesSyntax.init)
1045310453
}
@@ -10456,16 +10456,16 @@ public struct GenericParameterSyntax: SyntaxProtocol, SyntaxHashable {
1045610456
}
1045710457
}
1045810458

10459-
public var name: TokenSyntax {
10459+
public var each: TokenSyntax? {
1046010460
get {
10461-
return TokenSyntax(data.child(at: 3, parent: Syntax(self))!)
10461+
return data.child(at: 3, parent: Syntax(self)).map(TokenSyntax.init)
1046210462
}
1046310463
set(value) {
10464-
self = GenericParameterSyntax(data.replacingChild(at: 3, with: value.raw, arena: SyntaxArena()))
10464+
self = GenericParameterSyntax(data.replacingChild(at: 3, with: value?.raw, arena: SyntaxArena()))
1046510465
}
1046610466
}
1046710467

10468-
public var unexpectedBetweenNameAndEllipsis: UnexpectedNodesSyntax? {
10468+
public var unexpectedBetweenEachAndName: UnexpectedNodesSyntax? {
1046910469
get {
1047010470
return data.child(at: 4, parent: Syntax(self)).map(UnexpectedNodesSyntax.init)
1047110471
}
@@ -10474,16 +10474,16 @@ public struct GenericParameterSyntax: SyntaxProtocol, SyntaxHashable {
1047410474
}
1047510475
}
1047610476

10477-
public var ellipsis: TokenSyntax? {
10477+
public var name: TokenSyntax {
1047810478
get {
10479-
return data.child(at: 5, parent: Syntax(self)).map(TokenSyntax.init)
10479+
return TokenSyntax(data.child(at: 5, parent: Syntax(self))!)
1048010480
}
1048110481
set(value) {
10482-
self = GenericParameterSyntax(data.replacingChild(at: 5, with: value?.raw, arena: SyntaxArena()))
10482+
self = GenericParameterSyntax(data.replacingChild(at: 5, with: value.raw, arena: SyntaxArena()))
1048310483
}
1048410484
}
1048510485

10486-
public var unexpectedBetweenEllipsisAndColon: UnexpectedNodesSyntax? {
10486+
public var unexpectedBetweenNameAndColon: UnexpectedNodesSyntax? {
1048710487
get {
1048810488
return data.child(at: 6, parent: Syntax(self)).map(UnexpectedNodesSyntax.init)
1048910489
}
@@ -10550,11 +10550,11 @@ public struct GenericParameterSyntax: SyntaxProtocol, SyntaxHashable {
1055010550
return .layout([
1055110551
\Self.unexpectedBeforeAttributes,
1055210552
\Self.attributes,
10553-
\Self.unexpectedBetweenAttributesAndName,
10553+
\Self.unexpectedBetweenAttributesAndEach,
10554+
\Self.each,
10555+
\Self.unexpectedBetweenEachAndName,
1055410556
\Self.name,
10555-
\Self.unexpectedBetweenNameAndEllipsis,
10556-
\Self.ellipsis,
10557-
\Self.unexpectedBetweenEllipsisAndColon,
10557+
\Self.unexpectedBetweenNameAndColon,
1055810558
\Self.colon,
1055910559
\Self.unexpectedBetweenColonAndInheritedType,
1056010560
\Self.inheritedType,
@@ -10573,11 +10573,11 @@ public struct GenericParameterSyntax: SyntaxProtocol, SyntaxHashable {
1057310573
case 2:
1057410574
return nil
1057510575
case 3:
10576-
return "name"
10576+
return "parameter pack specifier"
1057710577
case 4:
1057810578
return nil
1057910579
case 5:
10580-
return "parameter pack specifier"
10580+
return "name"
1058110581
case 6:
1058210582
return nil
1058310583
case 7:
@@ -10603,11 +10603,11 @@ extension GenericParameterSyntax: CustomReflectable {
1060310603
return Mirror(self, children: [
1060410604
"unexpectedBeforeAttributes": unexpectedBeforeAttributes.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any ,
1060510605
"attributes": attributes.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any ,
10606-
"unexpectedBetweenAttributesAndName": unexpectedBetweenAttributesAndName.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any ,
10606+
"unexpectedBetweenAttributesAndEach": unexpectedBetweenAttributesAndEach.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any ,
10607+
"each": each.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any ,
10608+
"unexpectedBetweenEachAndName": unexpectedBetweenEachAndName.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any ,
1060710609
"name": Syntax(name).asProtocol(SyntaxProtocol.self),
10608-
"unexpectedBetweenNameAndEllipsis": unexpectedBetweenNameAndEllipsis.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any ,
10609-
"ellipsis": ellipsis.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any ,
10610-
"unexpectedBetweenEllipsisAndColon": unexpectedBetweenEllipsisAndColon.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any ,
10610+
"unexpectedBetweenNameAndColon": unexpectedBetweenNameAndColon.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any ,
1061110611
"colon": colon.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any ,
1061210612
"unexpectedBetweenColonAndInheritedType": unexpectedBetweenColonAndInheritedType.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any ,
1061310613
"inheritedType": inheritedType.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any ,

0 commit comments

Comments
 (0)