Skip to content

Commit 850fcc8

Browse files
committed
Add validation that children should not end with 'Token'
1 parent e965336 commit 850fcc8

File tree

7 files changed

+118
-33
lines changed

7 files changed

+118
-33
lines changed

CodeGeneration/Sources/SyntaxSupport/GenericNodes.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,8 @@ public let GENERIC_NODES: [Node] = [
306306
nameForDiagnostics: "left-hand type"
307307
),
308308
Child(
309-
name: "EqualityToken",
309+
name: "Equal",
310+
deprecatedName: "EqualityToken",
310311
kind: .token(choices: [.token(tokenKind: "BinaryOperatorToken"), .token(tokenKind: "PrefixOperatorToken"), .token(tokenKind: "PostfixOperatorToken")])
311312
),
312313
Child(

CodeGeneration/Tests/ValidateSyntaxNodes/ValidateSyntaxNodes.swift

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,4 +509,29 @@ class ValidateSyntaxNodes: XCTestCase {
509509
]
510510
)
511511
}
512+
513+
func testChildrenShouldNeverEndWithToken() {
514+
var failures: [ValidationFailure] = []
515+
516+
for node in SYNTAX_NODES.compactMap(\.layoutNode) {
517+
for child in node.nonUnexpectedChildren {
518+
if child.name.hasSuffix("Token") {
519+
failures.append(
520+
ValidationFailure(
521+
node: node.kind,
522+
message: "child '\(child.name)' should not end with 'Token'"
523+
)
524+
)
525+
}
526+
}
527+
}
528+
529+
assertFailuresMatchXFails(
530+
failures,
531+
expectedFailures: [
532+
// it's not obvious that the end of file is represented by a token, thus its good to highlight it in the name
533+
ValidationFailure(node: .sourceFile, message: "child 'EndOfFileToken' should not end with 'Token'")
534+
]
535+
)
536+
}
512537
}

Sources/SwiftParser/generated/Parser+TokenSpecSet.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1749,7 +1749,7 @@ extension QualifiedDeclNameSyntax {
17491749
}
17501750

17511751
extension SameTypeRequirementSyntax {
1752-
enum EqualityTokenOptions: TokenSpecSet {
1752+
enum EqualOptions: TokenSpecSet {
17531753
case binaryOperator
17541754
case prefixOperator
17551755
case postfixOperator

Sources/SwiftSyntax/generated/ChildNameForKeyPath.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2817,12 +2817,12 @@ public func childName(_ keyPath: AnyKeyPath) -> String? {
28172817
return "unexpectedBeforeLeftTypeIdentifier"
28182818
case \SameTypeRequirementSyntax.leftTypeIdentifier:
28192819
return "leftTypeIdentifier"
2820-
case \SameTypeRequirementSyntax.unexpectedBetweenLeftTypeIdentifierAndEqualityToken:
2821-
return "unexpectedBetweenLeftTypeIdentifierAndEqualityToken"
2822-
case \SameTypeRequirementSyntax.equalityToken:
2823-
return "equalityToken"
2824-
case \SameTypeRequirementSyntax.unexpectedBetweenEqualityTokenAndRightTypeIdentifier:
2825-
return "unexpectedBetweenEqualityTokenAndRightTypeIdentifier"
2820+
case \SameTypeRequirementSyntax.unexpectedBetweenLeftTypeIdentifierAndEqual:
2821+
return "unexpectedBetweenLeftTypeIdentifierAndEqual"
2822+
case \SameTypeRequirementSyntax.equal:
2823+
return "equal"
2824+
case \SameTypeRequirementSyntax.unexpectedBetweenEqualAndRightTypeIdentifier:
2825+
return "unexpectedBetweenEqualAndRightTypeIdentifier"
28262826
case \SameTypeRequirementSyntax.rightTypeIdentifier:
28272827
return "rightTypeIdentifier"
28282828
case \SameTypeRequirementSyntax.unexpectedAfterRightTypeIdentifier:

Sources/SwiftSyntax/generated/RenamedChildrenCompatibility.swift

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3795,6 +3795,65 @@ extension QualifiedDeclNameSyntax {
37953795
}
37963796
}
37973797

3798+
extension SameTypeRequirementSyntax {
3799+
@available(*, deprecated, renamed: "unexpectedBetweenLeftTypeIdentifierAndEqual")
3800+
public var unexpectedBetweenLeftTypeIdentifierAndEqualityToken: UnexpectedNodesSyntax? {
3801+
get {
3802+
return unexpectedBetweenLeftTypeIdentifierAndEqual
3803+
}
3804+
set {
3805+
unexpectedBetweenLeftTypeIdentifierAndEqual = newValue
3806+
}
3807+
}
3808+
3809+
@available(*, deprecated, renamed: "equal")
3810+
public var equalityToken: TokenSyntax {
3811+
get {
3812+
return equal
3813+
}
3814+
set {
3815+
equal = newValue
3816+
}
3817+
}
3818+
3819+
@available(*, deprecated, renamed: "unexpectedBetweenEqualAndRightTypeIdentifier")
3820+
public var unexpectedBetweenEqualityTokenAndRightTypeIdentifier: UnexpectedNodesSyntax? {
3821+
get {
3822+
return unexpectedBetweenEqualAndRightTypeIdentifier
3823+
}
3824+
set {
3825+
unexpectedBetweenEqualAndRightTypeIdentifier = newValue
3826+
}
3827+
}
3828+
3829+
@available(*, deprecated, message: "Use an initializer with equal argument(s).")
3830+
@_disfavoredOverload
3831+
public init(
3832+
leadingTrivia: Trivia? = nil,
3833+
_ unexpectedBeforeLeftTypeIdentifier: UnexpectedNodesSyntax? = nil,
3834+
leftTypeIdentifier: some TypeSyntaxProtocol,
3835+
_ unexpectedBetweenLeftTypeIdentifierAndEqualityToken: UnexpectedNodesSyntax? = nil,
3836+
equalityToken: TokenSyntax,
3837+
_ unexpectedBetweenEqualityTokenAndRightTypeIdentifier: UnexpectedNodesSyntax? = nil,
3838+
rightTypeIdentifier: some TypeSyntaxProtocol,
3839+
_ unexpectedAfterRightTypeIdentifier: UnexpectedNodesSyntax? = nil,
3840+
trailingTrivia: Trivia? = nil
3841+
3842+
) {
3843+
self.init(
3844+
leadingTrivia: leadingTrivia,
3845+
unexpectedBeforeLeftTypeIdentifier,
3846+
leftTypeIdentifier: leftTypeIdentifier,
3847+
unexpectedBetweenLeftTypeIdentifierAndEqualityToken,
3848+
equal: equalityToken,
3849+
unexpectedBetweenEqualityTokenAndRightTypeIdentifier,
3850+
rightTypeIdentifier: rightTypeIdentifier,
3851+
unexpectedAfterRightTypeIdentifier,
3852+
trailingTrivia: trailingTrivia
3853+
)
3854+
}
3855+
}
3856+
37983857
extension SourceFileSyntax {
37993858
@available(*, deprecated, renamed: "unexpectedBetweenStatementsAndEndOfFileToken")
38003859
public var unexpectedBetweenStatementsAndEOFToken: UnexpectedNodesSyntax? {

Sources/SwiftSyntax/generated/raw/RawSyntaxNodes.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18470,9 +18470,9 @@ public struct RawSameTypeRequirementSyntax: RawSyntaxNodeProtocol {
1847018470
public init(
1847118471
_ unexpectedBeforeLeftTypeIdentifier: RawUnexpectedNodesSyntax? = nil,
1847218472
leftTypeIdentifier: RawTypeSyntax,
18473-
_ unexpectedBetweenLeftTypeIdentifierAndEqualityToken: RawUnexpectedNodesSyntax? = nil,
18474-
equalityToken: RawTokenSyntax,
18475-
_ unexpectedBetweenEqualityTokenAndRightTypeIdentifier: RawUnexpectedNodesSyntax? = nil,
18473+
_ unexpectedBetweenLeftTypeIdentifierAndEqual: RawUnexpectedNodesSyntax? = nil,
18474+
equal: RawTokenSyntax,
18475+
_ unexpectedBetweenEqualAndRightTypeIdentifier: RawUnexpectedNodesSyntax? = nil,
1847618476
rightTypeIdentifier: RawTypeSyntax,
1847718477
_ unexpectedAfterRightTypeIdentifier: RawUnexpectedNodesSyntax? = nil,
1847818478
arena: __shared SyntaxArena
@@ -18482,9 +18482,9 @@ public struct RawSameTypeRequirementSyntax: RawSyntaxNodeProtocol {
1848218482
layout.initialize(repeating: nil)
1848318483
layout[0] = unexpectedBeforeLeftTypeIdentifier?.raw
1848418484
layout[1] = leftTypeIdentifier.raw
18485-
layout[2] = unexpectedBetweenLeftTypeIdentifierAndEqualityToken?.raw
18486-
layout[3] = equalityToken.raw
18487-
layout[4] = unexpectedBetweenEqualityTokenAndRightTypeIdentifier?.raw
18485+
layout[2] = unexpectedBetweenLeftTypeIdentifierAndEqual?.raw
18486+
layout[3] = equal.raw
18487+
layout[4] = unexpectedBetweenEqualAndRightTypeIdentifier?.raw
1848818488
layout[5] = rightTypeIdentifier.raw
1848918489
layout[6] = unexpectedAfterRightTypeIdentifier?.raw
1849018490
}
@@ -18499,15 +18499,15 @@ public struct RawSameTypeRequirementSyntax: RawSyntaxNodeProtocol {
1849918499
layoutView.children[1].map(RawTypeSyntax.init(raw:))!
1850018500
}
1850118501

18502-
public var unexpectedBetweenLeftTypeIdentifierAndEqualityToken: RawUnexpectedNodesSyntax? {
18502+
public var unexpectedBetweenLeftTypeIdentifierAndEqual: RawUnexpectedNodesSyntax? {
1850318503
layoutView.children[2].map(RawUnexpectedNodesSyntax.init(raw:))
1850418504
}
1850518505

18506-
public var equalityToken: RawTokenSyntax {
18506+
public var equal: RawTokenSyntax {
1850718507
layoutView.children[3].map(RawTokenSyntax.init(raw:))!
1850818508
}
1850918509

18510-
public var unexpectedBetweenEqualityTokenAndRightTypeIdentifier: RawUnexpectedNodesSyntax? {
18510+
public var unexpectedBetweenEqualAndRightTypeIdentifier: RawUnexpectedNodesSyntax? {
1851118511
layoutView.children[4].map(RawUnexpectedNodesSyntax.init(raw:))
1851218512
}
1851318513

Sources/SwiftSyntax/generated/syntaxNodes/SyntaxNodes.swift

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16401,7 +16401,7 @@ public struct ReturnClauseSyntax: SyntaxProtocol, SyntaxHashable {
1640116401
/// ### Children
1640216402
///
1640316403
/// - `leftTypeIdentifier`: ``TypeSyntax``
16404-
/// - `equalityToken`: (`<binaryOperator>` | `<prefixOperator>` | `<postfixOperator>`)
16404+
/// - `equal`: (`<binaryOperator>` | `<prefixOperator>` | `<postfixOperator>`)
1640516405
/// - `rightTypeIdentifier`: ``TypeSyntax``
1640616406
public struct SameTypeRequirementSyntax: SyntaxProtocol, SyntaxHashable {
1640716407
public let _syntaxNode: Syntax
@@ -16428,9 +16428,9 @@ public struct SameTypeRequirementSyntax: SyntaxProtocol, SyntaxHashable {
1642816428
leadingTrivia: Trivia? = nil,
1642916429
_ unexpectedBeforeLeftTypeIdentifier: UnexpectedNodesSyntax? = nil,
1643016430
leftTypeIdentifier: some TypeSyntaxProtocol,
16431-
_ unexpectedBetweenLeftTypeIdentifierAndEqualityToken: UnexpectedNodesSyntax? = nil,
16432-
equalityToken: TokenSyntax,
16433-
_ unexpectedBetweenEqualityTokenAndRightTypeIdentifier: UnexpectedNodesSyntax? = nil,
16431+
_ unexpectedBetweenLeftTypeIdentifierAndEqual: UnexpectedNodesSyntax? = nil,
16432+
equal: TokenSyntax,
16433+
_ unexpectedBetweenEqualAndRightTypeIdentifier: UnexpectedNodesSyntax? = nil,
1643416434
rightTypeIdentifier: some TypeSyntaxProtocol,
1643516435
_ unexpectedAfterRightTypeIdentifier: UnexpectedNodesSyntax? = nil,
1643616436
trailingTrivia: Trivia? = nil
@@ -16441,18 +16441,18 @@ public struct SameTypeRequirementSyntax: SyntaxProtocol, SyntaxHashable {
1644116441
let data: SyntaxData = withExtendedLifetime((SyntaxArena(), (
1644216442
unexpectedBeforeLeftTypeIdentifier,
1644316443
leftTypeIdentifier,
16444-
unexpectedBetweenLeftTypeIdentifierAndEqualityToken,
16445-
equalityToken,
16446-
unexpectedBetweenEqualityTokenAndRightTypeIdentifier,
16444+
unexpectedBetweenLeftTypeIdentifierAndEqual,
16445+
equal,
16446+
unexpectedBetweenEqualAndRightTypeIdentifier,
1644716447
rightTypeIdentifier,
1644816448
unexpectedAfterRightTypeIdentifier
1644916449
))) { (arena, _) in
1645016450
let layout: [RawSyntax?] = [
1645116451
unexpectedBeforeLeftTypeIdentifier?.raw,
1645216452
leftTypeIdentifier.raw,
16453-
unexpectedBetweenLeftTypeIdentifierAndEqualityToken?.raw,
16454-
equalityToken.raw,
16455-
unexpectedBetweenEqualityTokenAndRightTypeIdentifier?.raw,
16453+
unexpectedBetweenLeftTypeIdentifierAndEqual?.raw,
16454+
equal.raw,
16455+
unexpectedBetweenEqualAndRightTypeIdentifier?.raw,
1645616456
rightTypeIdentifier.raw,
1645716457
unexpectedAfterRightTypeIdentifier?.raw
1645816458
]
@@ -16487,7 +16487,7 @@ public struct SameTypeRequirementSyntax: SyntaxProtocol, SyntaxHashable {
1648716487
}
1648816488
}
1648916489

16490-
public var unexpectedBetweenLeftTypeIdentifierAndEqualityToken: UnexpectedNodesSyntax? {
16490+
public var unexpectedBetweenLeftTypeIdentifierAndEqual: UnexpectedNodesSyntax? {
1649116491
get {
1649216492
return data.child(at: 2, parent: Syntax(self)).map(UnexpectedNodesSyntax.init)
1649316493
}
@@ -16496,7 +16496,7 @@ public struct SameTypeRequirementSyntax: SyntaxProtocol, SyntaxHashable {
1649616496
}
1649716497
}
1649816498

16499-
public var equalityToken: TokenSyntax {
16499+
public var equal: TokenSyntax {
1650016500
get {
1650116501
return TokenSyntax(data.child(at: 3, parent: Syntax(self))!)
1650216502
}
@@ -16505,7 +16505,7 @@ public struct SameTypeRequirementSyntax: SyntaxProtocol, SyntaxHashable {
1650516505
}
1650616506
}
1650716507

16508-
public var unexpectedBetweenEqualityTokenAndRightTypeIdentifier: UnexpectedNodesSyntax? {
16508+
public var unexpectedBetweenEqualAndRightTypeIdentifier: UnexpectedNodesSyntax? {
1650916509
get {
1651016510
return data.child(at: 4, parent: Syntax(self)).map(UnexpectedNodesSyntax.init)
1651116511
}
@@ -16536,9 +16536,9 @@ public struct SameTypeRequirementSyntax: SyntaxProtocol, SyntaxHashable {
1653616536
return .layout([
1653716537
\Self.unexpectedBeforeLeftTypeIdentifier,
1653816538
\Self.leftTypeIdentifier,
16539-
\Self.unexpectedBetweenLeftTypeIdentifierAndEqualityToken,
16540-
\Self.equalityToken,
16541-
\Self.unexpectedBetweenEqualityTokenAndRightTypeIdentifier,
16539+
\Self.unexpectedBetweenLeftTypeIdentifierAndEqual,
16540+
\Self.equal,
16541+
\Self.unexpectedBetweenEqualAndRightTypeIdentifier,
1654216542
\Self.rightTypeIdentifier,
1654316543
\Self.unexpectedAfterRightTypeIdentifier
1654416544
])

0 commit comments

Comments
 (0)