Skip to content

Commit 51d06bf

Browse files
authored
Merge pull request #1134 from hborla/explicit-pack-reference-keyword
[Variadic Generics] Add a new type syntax node and parsing support for explicit pack references.
2 parents eb117dc + ded777e commit 51d06bf

File tree

21 files changed

+472
-4
lines changed

21 files changed

+472
-4
lines changed

CodeGeneration/Sources/SyntaxSupport/gyb_generated/TypeNodes.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,19 @@ public let TYPE_NODES: [Node] = [
216216
])
217217
]),
218218

219+
Node(name: "PackReferenceType",
220+
nameForDiagnostics: "pack reference",
221+
kind: "Type",
222+
children: [
223+
Child(name: "EachKeyword",
224+
kind: "ContextualKeyworkToken",
225+
textChoices: [
226+
"each"
227+
]),
228+
Child(name: "PackType",
229+
kind: "Type")
230+
]),
231+
219232
Node(name: "TupleTypeElement",
220233
nameForDiagnostics: nil,
221234
kind: "Syntax",

Sources/SwiftParser/Patterns.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,8 @@ extension Parser.Lookahead {
350350
// If the first name wasn't "isolated", we're done.
351351
if !self.atContextualKeyword("isolated") &&
352352
!self.atContextualKeyword("some") &&
353-
!self.atContextualKeyword("any") {
353+
!self.atContextualKeyword("any") &&
354+
!self.atContextualKeyword("each") {
354355
return true
355356
}
356357

Sources/SwiftParser/Types.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,13 @@ extension Parser {
120120
/// protocol-composition-continuation → type-identifier | protocol-composition-type
121121
@_spi(RawSyntax)
122122
public mutating func parseSimpleOrCompositionType() -> RawTypeSyntax {
123+
// 'each' is a contextual keyword for a pack reference.
124+
if let each = consume(ifAny: [], contextualKeywords: ["each"]) {
125+
let packType = parseSimpleType()
126+
return RawTypeSyntax(RawPackReferenceTypeSyntax(
127+
eachKeyword: each, packType: packType, arena: self.arena))
128+
}
129+
123130
let someOrAny = self.consume(ifAny: [], contextualKeywords: ["some", "any"])
124131

125132
var base = self.parseSimpleType()

Sources/SwiftSyntax/Documentation.docc/gyb_generated/SwiftSyntax.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ allows Swift tools to parse, inspect, generate, and transform Swift source code.
162162
- <doc:SwiftSyntax/ImplicitlyUnwrappedOptionalTypeSyntax>
163163
- <doc:SwiftSyntax/CompositionTypeSyntax>
164164
- <doc:SwiftSyntax/PackExpansionTypeSyntax>
165+
- <doc:SwiftSyntax/PackReferenceTypeSyntax>
165166
- <doc:SwiftSyntax/TupleTypeSyntax>
166167
- <doc:SwiftSyntax/FunctionTypeSyntax>
167168
- <doc:SwiftSyntax/AttributedTypeSyntax>

Sources/SwiftSyntax/Raw/gyb_generated/RawSyntaxNodes.swift

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ public struct RawTypeSyntax: RawTypeSyntaxNodeProtocol {
127127

128128
public static func isKindOf(_ raw: RawSyntax) -> Bool {
129129
switch raw.kind {
130-
case .missingType, .simpleTypeIdentifier, .memberTypeIdentifier, .classRestrictionType, .arrayType, .dictionaryType, .metatypeType, .optionalType, .constrainedSugarType, .implicitlyUnwrappedOptionalType, .compositionType, .packExpansionType, .tupleType, .functionType, .attributedType, .namedOpaqueReturnType: return true
130+
case .missingType, .simpleTypeIdentifier, .memberTypeIdentifier, .classRestrictionType, .arrayType, .dictionaryType, .metatypeType, .optionalType, .constrainedSugarType, .implicitlyUnwrappedOptionalType, .compositionType, .packExpansionType, .packReferenceType, .tupleType, .functionType, .attributedType, .namedOpaqueReturnType: return true
131131
default: return false
132132
}
133133
}
@@ -16736,6 +16736,66 @@ public struct RawPackExpansionTypeSyntax: RawTypeSyntaxNodeProtocol {
1673616736
}
1673716737
}
1673816738

16739+
@_spi(RawSyntax)
16740+
public struct RawPackReferenceTypeSyntax: RawTypeSyntaxNodeProtocol {
16741+
16742+
@_spi(RawSyntax)
16743+
public var layoutView: RawSyntaxLayoutView {
16744+
return raw.layoutView!
16745+
}
16746+
16747+
public static func isKindOf(_ raw: RawSyntax) -> Bool {
16748+
return raw.kind == .packReferenceType
16749+
}
16750+
16751+
public var raw: RawSyntax
16752+
init(raw: RawSyntax) {
16753+
assert(Self.isKindOf(raw))
16754+
self.raw = raw
16755+
}
16756+
16757+
public init?<Node: RawSyntaxNodeProtocol>(_ other: Node) {
16758+
guard Self.isKindOf(other.raw) else { return nil }
16759+
self.init(raw: other.raw)
16760+
}
16761+
16762+
public init(
16763+
_ unexpectedBeforeEachKeyword: RawUnexpectedNodesSyntax? = nil,
16764+
eachKeyword: RawTokenSyntax,
16765+
_ unexpectedBetweenEachKeywordAndPackType: RawUnexpectedNodesSyntax? = nil,
16766+
packType: RawTypeSyntax,
16767+
_ unexpectedAfterPackType: RawUnexpectedNodesSyntax? = nil,
16768+
arena: __shared SyntaxArena
16769+
) {
16770+
let raw = RawSyntax.makeLayout(
16771+
kind: .packReferenceType, uninitializedCount: 5, arena: arena) { layout in
16772+
layout.initialize(repeating: nil)
16773+
layout[0] = unexpectedBeforeEachKeyword?.raw
16774+
layout[1] = eachKeyword.raw
16775+
layout[2] = unexpectedBetweenEachKeywordAndPackType?.raw
16776+
layout[3] = packType.raw
16777+
layout[4] = unexpectedAfterPackType?.raw
16778+
}
16779+
self.init(raw: raw)
16780+
}
16781+
16782+
public var unexpectedBeforeEachKeyword: RawUnexpectedNodesSyntax? {
16783+
layoutView.children[0].map(RawUnexpectedNodesSyntax.init(raw:))
16784+
}
16785+
public var eachKeyword: RawTokenSyntax {
16786+
layoutView.children[1].map(RawTokenSyntax.init(raw:))!
16787+
}
16788+
public var unexpectedBetweenEachKeywordAndPackType: RawUnexpectedNodesSyntax? {
16789+
layoutView.children[2].map(RawUnexpectedNodesSyntax.init(raw:))
16790+
}
16791+
public var packType: RawTypeSyntax {
16792+
layoutView.children[3].map(RawTypeSyntax.init(raw:))!
16793+
}
16794+
public var unexpectedAfterPackType: RawUnexpectedNodesSyntax? {
16795+
layoutView.children[4].map(RawUnexpectedNodesSyntax.init(raw:))
16796+
}
16797+
}
16798+
1673916799
@_spi(RawSyntax)
1674016800
public struct RawTupleTypeElementSyntax: RawSyntaxNodeProtocol {
1674116801

Sources/SwiftSyntax/Raw/gyb_generated/RawSyntaxValidation.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2438,6 +2438,14 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) {
24382438
assertNoError(kind, 3, verify(layout[3], as: RawTokenSyntax.self))
24392439
assertNoError(kind, 4, verify(layout[4], as: RawUnexpectedNodesSyntax?.self))
24402440
break
2441+
case .packReferenceType:
2442+
assert(layout.count == 5)
2443+
assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self))
2444+
assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self))
2445+
assertNoError(kind, 2, verify(layout[2], as: RawUnexpectedNodesSyntax?.self))
2446+
assertNoError(kind, 3, verify(layout[3], as: RawTypeSyntax.self))
2447+
assertNoError(kind, 4, verify(layout[4], as: RawUnexpectedNodesSyntax?.self))
2448+
break
24412449
case .tupleTypeElement:
24422450
assert(layout.count == 17)
24432451
assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self))

Sources/SwiftSyntax/generated/Misc.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ extension Syntax {
198198
.node(OptionalPatternSyntax.self),
199199
.node(OptionalTypeSyntax.self),
200200
.node(PackExpansionTypeSyntax.self),
201+
.node(PackReferenceTypeSyntax.self),
201202
.node(ParameterClauseSyntax.self),
202203
.node(PatternBindingListSyntax.self),
203204
.node(PatternBindingSyntax.self),
@@ -646,6 +647,8 @@ extension SyntaxKind {
646647
return OptionalTypeSyntax.self
647648
case .packExpansionType:
648649
return PackExpansionTypeSyntax.self
650+
case .packReferenceType:
651+
return PackReferenceTypeSyntax.self
649652
case .parameterClause:
650653
return ParameterClauseSyntax.self
651654
case .patternBindingList:
@@ -1175,6 +1178,8 @@ extension SyntaxKind {
11751178
return "optional type"
11761179
case .packExpansionType:
11771180
return "variadic expansion"
1181+
case .packReferenceType:
1182+
return "pack reference"
11781183
case .parameterClause:
11791184
return "parameter clause"
11801185
case .patternBindingList:

Sources/SwiftSyntax/gyb_generated/SyntaxAnyVisitor.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1698,6 +1698,13 @@ open class SyntaxAnyVisitor: SyntaxVisitor {
16981698
override open func visitPost(_ node: PackExpansionTypeSyntax) {
16991699
visitAnyPost(node._syntaxNode)
17001700
}
1701+
override open func visit(_ node: PackReferenceTypeSyntax) -> SyntaxVisitorContinueKind {
1702+
return visitAny(node._syntaxNode)
1703+
}
1704+
1705+
override open func visitPost(_ node: PackReferenceTypeSyntax) {
1706+
visitAnyPost(node._syntaxNode)
1707+
}
17011708
override open func visit(_ node: TupleTypeElementSyntax) -> SyntaxVisitorContinueKind {
17021709
return visitAny(node._syntaxNode)
17031710
}

Sources/SwiftSyntax/gyb_generated/SyntaxBaseNodes.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ public struct TypeSyntax: TypeSyntaxProtocol, SyntaxHashable {
525525

526526
public init?<S: SyntaxProtocol>(_ node: S) {
527527
switch node.raw.kind {
528-
case .missingType, .simpleTypeIdentifier, .memberTypeIdentifier, .classRestrictionType, .arrayType, .dictionaryType, .metatypeType, .optionalType, .constrainedSugarType, .implicitlyUnwrappedOptionalType, .compositionType, .packExpansionType, .tupleType, .functionType, .attributedType, .namedOpaqueReturnType:
528+
case .missingType, .simpleTypeIdentifier, .memberTypeIdentifier, .classRestrictionType, .arrayType, .dictionaryType, .metatypeType, .optionalType, .constrainedSugarType, .implicitlyUnwrappedOptionalType, .compositionType, .packExpansionType, .packReferenceType, .tupleType, .functionType, .attributedType, .namedOpaqueReturnType:
529529
self._syntaxNode = node._syntaxNode
530530
default:
531531
return nil
@@ -539,7 +539,7 @@ public struct TypeSyntax: TypeSyntaxProtocol, SyntaxHashable {
539539
// Assert that the kind of the given data matches in debug builds.
540540
#if DEBUG
541541
switch data.raw.kind {
542-
case .missingType, .simpleTypeIdentifier, .memberTypeIdentifier, .classRestrictionType, .arrayType, .dictionaryType, .metatypeType, .optionalType, .constrainedSugarType, .implicitlyUnwrappedOptionalType, .compositionType, .packExpansionType, .tupleType, .functionType, .attributedType, .namedOpaqueReturnType:
542+
case .missingType, .simpleTypeIdentifier, .memberTypeIdentifier, .classRestrictionType, .arrayType, .dictionaryType, .metatypeType, .optionalType, .constrainedSugarType, .implicitlyUnwrappedOptionalType, .compositionType, .packExpansionType, .packReferenceType, .tupleType, .functionType, .attributedType, .namedOpaqueReturnType:
543543
break
544544
default:
545545
fatalError("Unable to create TypeSyntax from \(data.raw.kind)")
@@ -589,6 +589,7 @@ public struct TypeSyntax: TypeSyntaxProtocol, SyntaxHashable {
589589
.node(ImplicitlyUnwrappedOptionalTypeSyntax.self),
590590
.node(CompositionTypeSyntax.self),
591591
.node(PackExpansionTypeSyntax.self),
592+
.node(PackReferenceTypeSyntax.self),
592593
.node(TupleTypeSyntax.self),
593594
.node(FunctionTypeSyntax.self),
594595
.node(AttributedTypeSyntax.self),

Sources/SwiftSyntax/gyb_generated/SyntaxEnum.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,7 @@ public enum SyntaxEnum {
251251
case compositionTypeElementList(CompositionTypeElementListSyntax)
252252
case compositionType(CompositionTypeSyntax)
253253
case packExpansionType(PackExpansionTypeSyntax)
254+
case packReferenceType(PackReferenceTypeSyntax)
254255
case tupleTypeElement(TupleTypeElementSyntax)
255256
case tupleTypeElementList(TupleTypeElementListSyntax)
256257
case tupleType(TupleTypeSyntax)
@@ -755,6 +756,8 @@ public extension Syntax {
755756
return .compositionType(CompositionTypeSyntax(self)!)
756757
case .packExpansionType:
757758
return .packExpansionType(PackExpansionTypeSyntax(self)!)
759+
case .packReferenceType:
760+
return .packReferenceType(PackReferenceTypeSyntax(self)!)
758761
case .tupleTypeElement:
759762
return .tupleTypeElement(TupleTypeElementSyntax(self)!)
760763
case .tupleTypeElementList:

Sources/SwiftSyntax/gyb_generated/SyntaxFactory.swift

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7826,6 +7826,37 @@ public enum SyntaxFactory {
78267826
return PackExpansionTypeSyntax(data)
78277827
}
78287828
}
7829+
@available(*, deprecated, message: "Use initializer on PackReferenceTypeSyntax")
7830+
public static func makePackReferenceType(_ unexpectedBeforeEachKeyword: UnexpectedNodesSyntax? = nil, eachKeyword: TokenSyntax, _ unexpectedBetweenEachKeywordAndPackType: UnexpectedNodesSyntax? = nil, packType: TypeSyntax, _ unexpectedAfterPackType: UnexpectedNodesSyntax? = nil) -> PackReferenceTypeSyntax {
7831+
let layout: [RawSyntax?] = [
7832+
unexpectedBeforeEachKeyword?.raw,
7833+
eachKeyword.raw,
7834+
unexpectedBetweenEachKeywordAndPackType?.raw,
7835+
packType.raw,
7836+
unexpectedAfterPackType?.raw,
7837+
]
7838+
return withExtendedLifetime(SyntaxArena()) { arena in
7839+
let raw = RawSyntax.makeLayout(kind: SyntaxKind.packReferenceType,
7840+
from: layout, arena: arena)
7841+
let data = SyntaxData.forRoot(raw)
7842+
return PackReferenceTypeSyntax(data)
7843+
}
7844+
}
7845+
7846+
@available(*, deprecated, message: "Use initializer on PackReferenceTypeSyntax")
7847+
public static func makeBlankPackReferenceType(presence: SourcePresence = .present) -> PackReferenceTypeSyntax {
7848+
return withExtendedLifetime(SyntaxArena()) { arena in
7849+
let data = SyntaxData.forRoot(RawSyntax.makeLayout(kind: .packReferenceType,
7850+
from: [
7851+
nil,
7852+
RawSyntax.makeMissingToken(kind: TokenKind.unknown(""), arena: arena),
7853+
nil,
7854+
RawSyntax.makeEmptyLayout(kind: SyntaxKind.missingType, arena: arena),
7855+
nil,
7856+
], arena: arena))
7857+
return PackReferenceTypeSyntax(data)
7858+
}
7859+
}
78297860
@available(*, deprecated, message: "Use initializer on TupleTypeElementSyntax")
78307861
public static func makeTupleTypeElement(_ unexpectedBeforeInOut: UnexpectedNodesSyntax? = nil, inOut: TokenSyntax?, _ unexpectedBetweenInOutAndName: UnexpectedNodesSyntax? = nil, name: TokenSyntax?, _ unexpectedBetweenNameAndSecondName: UnexpectedNodesSyntax? = nil, secondName: TokenSyntax?, _ unexpectedBetweenSecondNameAndColon: UnexpectedNodesSyntax? = nil, colon: TokenSyntax?, _ unexpectedBetweenColonAndType: UnexpectedNodesSyntax? = nil, type: TypeSyntax, _ unexpectedBetweenTypeAndEllipsis: UnexpectedNodesSyntax? = nil, ellipsis: TokenSyntax?, _ unexpectedBetweenEllipsisAndInitializer: UnexpectedNodesSyntax? = nil, initializer: InitializerClauseSyntax?, _ unexpectedBetweenInitializerAndTrailingComma: UnexpectedNodesSyntax? = nil, trailingComma: TokenSyntax?, _ unexpectedAfterTrailingComma: UnexpectedNodesSyntax? = nil) -> TupleTypeElementSyntax {
78317862
let layout: [RawSyntax?] = [

Sources/SwiftSyntax/gyb_generated/SyntaxKind.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,7 @@ public enum SyntaxKind {
251251
case compositionTypeElementList
252252
case compositionType
253253
case packExpansionType
254+
case packReferenceType
254255
case tupleTypeElement
255256
case tupleTypeElementList
256257
case tupleType

Sources/SwiftSyntax/gyb_generated/SyntaxRewriter.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1668,6 +1668,13 @@ open class SyntaxRewriter {
16681668
return TypeSyntax(visitChildren(node))
16691669
}
16701670

1671+
/// Visit a `PackReferenceTypeSyntax`.
1672+
/// - Parameter node: the node that is being visited
1673+
/// - Returns: the rewritten node
1674+
open func visit(_ node: PackReferenceTypeSyntax) -> TypeSyntax {
1675+
return TypeSyntax(visitChildren(node))
1676+
}
1677+
16711678
/// Visit a `TupleTypeElementSyntax`.
16721679
/// - Parameter node: the node that is being visited
16731680
/// - Returns: the rewritten node
@@ -4274,6 +4281,16 @@ open class SyntaxRewriter {
42744281
return Syntax(visit(node))
42754282
}
42764283

4284+
/// Implementation detail of visit(_:). Do not call directly.
4285+
private func visitImplPackReferenceTypeSyntax(_ data: SyntaxData) -> Syntax {
4286+
let node = PackReferenceTypeSyntax(data)
4287+
// Accessing _syntaxNode directly is faster than calling Syntax(node)
4288+
visitPre(node._syntaxNode)
4289+
defer { visitPost(node._syntaxNode) }
4290+
if let newNode = visitAny(node._syntaxNode) { return newNode }
4291+
return Syntax(visit(node))
4292+
}
4293+
42774294
/// Implementation detail of visit(_:). Do not call directly.
42784295
private func visitImplTupleTypeElementSyntax(_ data: SyntaxData) -> Syntax {
42794296
let node = TupleTypeElementSyntax(data)
@@ -5044,6 +5061,8 @@ open class SyntaxRewriter {
50445061
return visitImplCompositionTypeSyntax
50455062
case .packExpansionType:
50465063
return visitImplPackExpansionTypeSyntax
5064+
case .packReferenceType:
5065+
return visitImplPackReferenceTypeSyntax
50475066
case .tupleTypeElement:
50485067
return visitImplTupleTypeElementSyntax
50495068
case .tupleTypeElementList:
@@ -5579,6 +5598,8 @@ open class SyntaxRewriter {
55795598
return visitImplCompositionTypeSyntax(data)
55805599
case .packExpansionType:
55815600
return visitImplPackExpansionTypeSyntax(data)
5601+
case .packReferenceType:
5602+
return visitImplPackReferenceTypeSyntax(data)
55825603
case .tupleTypeElement:
55835604
return visitImplTupleTypeElementSyntax(data)
55845605
case .tupleTypeElementList:

Sources/SwiftSyntax/gyb_generated/SyntaxTransform.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -959,6 +959,10 @@ public protocol SyntaxTransformVisitor {
959959
/// - Parameter node: the node we are visiting.
960960
/// - Returns: the sum of whatever the child visitors return.
961961
func visit(_ node: PackExpansionTypeSyntax) -> ResultType
962+
/// Visiting `PackReferenceTypeSyntax` specifically.
963+
/// - Parameter node: the node we are visiting.
964+
/// - Returns: the sum of whatever the child visitors return.
965+
func visit(_ node: PackReferenceTypeSyntax) -> ResultType
962966
/// Visiting `TupleTypeElementSyntax` specifically.
963967
/// - Parameter node: the node we are visiting.
964968
/// - Returns: the sum of whatever the child visitors return.
@@ -2480,6 +2484,12 @@ extension SyntaxTransformVisitor {
24802484
public func visit(_ node: PackExpansionTypeSyntax) -> ResultType {
24812485
visitAny(Syntax(node))
24822486
}
2487+
/// Visiting `PackReferenceTypeSyntax` specifically.
2488+
/// - Parameter node: the node we are visiting.
2489+
/// - Returns: nil by default.
2490+
public func visit(_ node: PackReferenceTypeSyntax) -> ResultType {
2491+
visitAny(Syntax(node))
2492+
}
24832493
/// Visiting `TupleTypeElementSyntax` specifically.
24842494
/// - Parameter node: the node we are visiting.
24852495
/// - Returns: nil by default.
@@ -3111,6 +3121,8 @@ extension SyntaxTransformVisitor {
31113121
return visit(derived)
31123122
case .packExpansionType(let derived):
31133123
return visit(derived)
3124+
case .packReferenceType(let derived):
3125+
return visit(derived)
31143126
case .tupleTypeElement(let derived):
31153127
return visit(derived)
31163128
case .tupleTypeElementList(let derived):

Sources/SwiftSyntax/gyb_generated/SyntaxVisitor.swift

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2391,6 +2391,16 @@ open class SyntaxVisitor {
23912391
/// The function called after visiting `PackExpansionTypeSyntax` and its descendents.
23922392
/// - node: the node we just finished visiting.
23932393
open func visitPost(_ node: PackExpansionTypeSyntax) {}
2394+
/// Visiting `PackReferenceTypeSyntax` specifically.
2395+
/// - Parameter node: the node we are visiting.
2396+
/// - Returns: how should we continue visiting.
2397+
open func visit(_ node: PackReferenceTypeSyntax) -> SyntaxVisitorContinueKind {
2398+
return .visitChildren
2399+
}
2400+
2401+
/// The function called after visiting `PackReferenceTypeSyntax` and its descendents.
2402+
/// - node: the node we just finished visiting.
2403+
open func visitPost(_ node: PackReferenceTypeSyntax) {}
23942404
/// Visiting `TupleTypeElementSyntax` specifically.
23952405
/// - Parameter node: the node we are visiting.
23962406
/// - Returns: how should we continue visiting.
@@ -5248,6 +5258,17 @@ open class SyntaxVisitor {
52485258
visitPost(node)
52495259
}
52505260

5261+
/// Implementation detail of doVisit(_:_:). Do not call directly.
5262+
private func visitImplPackReferenceTypeSyntax(_ data: SyntaxData) {
5263+
let node = PackReferenceTypeSyntax(data)
5264+
let needsChildren = (visit(node) == .visitChildren)
5265+
// Avoid calling into visitChildren if possible.
5266+
if needsChildren && !node.raw.layoutView!.children.isEmpty {
5267+
visitChildren(node)
5268+
}
5269+
visitPost(node)
5270+
}
5271+
52515272
/// Implementation detail of doVisit(_:_:). Do not call directly.
52525273
private func visitImplTupleTypeElementSyntax(_ data: SyntaxData) {
52535274
let node = TupleTypeElementSyntax(data)
@@ -6016,6 +6037,8 @@ open class SyntaxVisitor {
60166037
visitImplCompositionTypeSyntax(data)
60176038
case .packExpansionType:
60186039
visitImplPackExpansionTypeSyntax(data)
6040+
case .packReferenceType:
6041+
visitImplPackReferenceTypeSyntax(data)
60196042
case .tupleTypeElement:
60206043
visitImplTupleTypeElementSyntax(data)
60216044
case .tupleTypeElementList:

0 commit comments

Comments
 (0)