Skip to content

Commit 59e8e32

Browse files
committed
Unify AvailabilityCondition and UnavailabilityCondition
These two nodes were pretty much always handled the same, we should just have one node definition for it.
1 parent ea0e2b2 commit 59e8e32

File tree

19 files changed

+80
-676
lines changed

19 files changed

+80
-676
lines changed

CodeGeneration/Sources/SyntaxSupport/gyb_generated/StmtNodes.swift

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -405,8 +405,6 @@ public let STMT_NODES: [Node] = [
405405
kind: "Expr"),
406406
Child(name: "Availability",
407407
kind: "AvailabilityCondition"),
408-
Child(name: "Unavailability",
409-
kind: "UnavailabilityCondition"),
410408
Child(name: "MatchingPattern",
411409
kind: "MatchingPatternCondition"),
412410
Child(name: "OptionalBinding",
@@ -423,13 +421,14 @@ public let STMT_NODES: [Node] = [
423421
]),
424422

425423
Node(name: "AvailabilityCondition",
426-
nameForDiagnostics: "'#availabile' condition",
424+
nameForDiagnostics: "availability condition",
427425
kind: "Syntax",
428426
children: [
429-
Child(name: "PoundAvailableKeyword",
430-
kind: "PoundAvailableToken",
427+
Child(name: "AvailabilityKeyword",
428+
kind: "Token",
431429
tokenChoices: [
432-
"PoundAvailable"
430+
"PoundAvailable",
431+
"PoundUnavailable"
433432
]),
434433
Child(name: "LeftParen",
435434
kind: "LeftParenToken",
@@ -490,30 +489,6 @@ public let STMT_NODES: [Node] = [
490489
isOptional: true)
491490
]),
492491

493-
Node(name: "UnavailabilityCondition",
494-
nameForDiagnostics: "'#unavailable' condition",
495-
kind: "Syntax",
496-
children: [
497-
Child(name: "PoundUnavailableKeyword",
498-
kind: "PoundUnavailableToken",
499-
tokenChoices: [
500-
"PoundUnavailable"
501-
]),
502-
Child(name: "LeftParen",
503-
kind: "LeftParenToken",
504-
tokenChoices: [
505-
"LeftParen"
506-
]),
507-
Child(name: "AvailabilitySpec",
508-
kind: "AvailabilitySpecList",
509-
collectionElementName: "AvailabilityArgument"),
510-
Child(name: "RightParen",
511-
kind: "RightParenToken",
512-
tokenChoices: [
513-
"RightParen"
514-
])
515-
]),
516-
517492
Node(name: "HasSymbolCondition",
518493
nameForDiagnostics: "'#_hasSymbol' condition",
519494
kind: "Syntax",

Sources/SwiftParser/Statements.swift

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -354,22 +354,10 @@ extension Parser {
354354
let spec = self.parseAvailabilitySpecList(from: kind)
355355
let (unexpectedBeforeRParen, rparen) = self.expect(.rightParen)
356356
switch kind {
357-
case .available:
357+
case .available, .unavailable:
358358
return .availability(
359359
RawAvailabilityConditionSyntax(
360-
poundAvailableKeyword: keyword,
361-
unexpectedBeforeLParen,
362-
leftParen: lparen,
363-
availabilitySpec: spec,
364-
unexpectedBeforeRParen,
365-
rightParen: rparen,
366-
arena: self.arena
367-
)
368-
)
369-
case .unavailable:
370-
return .unavailability(
371-
RawUnavailabilityConditionSyntax(
372-
poundUnavailableKeyword: keyword,
360+
availabilityKeyword: keyword,
373361
unexpectedBeforeLParen,
374362
leftParen: lparen,
375363
availabilitySpec: spec,

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,6 @@ allows Swift tools to parse, inspect, generate, and transform Swift source code.
371371
- <doc:SwiftSyntax/AvailabilityConditionSyntax>
372372
- <doc:SwiftSyntax/MatchingPatternConditionSyntax>
373373
- <doc:SwiftSyntax/OptionalBindingConditionSyntax>
374-
- <doc:SwiftSyntax/UnavailabilityConditionSyntax>
375374
- <doc:SwiftSyntax/HasSymbolConditionSyntax>
376375
- <doc:SwiftSyntax/ConditionElementListSyntax>
377376
- <doc:SwiftSyntax/SwitchCaseSyntax>

Sources/SwiftSyntax/Raw/gyb_generated/RawSyntaxNodes.swift

Lines changed: 10 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -13620,20 +13620,18 @@ public struct RawConditionElementSyntax: RawSyntaxNodeProtocol {
1362013620
public enum Condition: RawSyntaxNodeProtocol {
1362113621
case `expression`(RawExprSyntax)
1362213622
case `availability`(RawAvailabilityConditionSyntax)
13623-
case `unavailability`(RawUnavailabilityConditionSyntax)
1362413623
case `matchingPattern`(RawMatchingPatternConditionSyntax)
1362513624
case `optionalBinding`(RawOptionalBindingConditionSyntax)
1362613625
case `hasSymbol`(RawHasSymbolConditionSyntax)
1362713626

1362813627
public static func isKindOf(_ raw: RawSyntax) -> Bool {
13629-
return RawExprSyntax.isKindOf(raw) || RawAvailabilityConditionSyntax.isKindOf(raw) || RawUnavailabilityConditionSyntax.isKindOf(raw) || RawMatchingPatternConditionSyntax.isKindOf(raw) || RawOptionalBindingConditionSyntax.isKindOf(raw) || RawHasSymbolConditionSyntax.isKindOf(raw)
13628+
return RawExprSyntax.isKindOf(raw) || RawAvailabilityConditionSyntax.isKindOf(raw) || RawMatchingPatternConditionSyntax.isKindOf(raw) || RawOptionalBindingConditionSyntax.isKindOf(raw) || RawHasSymbolConditionSyntax.isKindOf(raw)
1363013629
}
1363113630

1363213631
public var raw: RawSyntax {
1363313632
switch self {
1363413633
case .expression(let node): return node.raw
1363513634
case .availability(let node): return node.raw
13636-
case .unavailability(let node): return node.raw
1363713635
case .matchingPattern(let node): return node.raw
1363813636
case .optionalBinding(let node): return node.raw
1363913637
case .hasSymbol(let node): return node.raw
@@ -13649,10 +13647,6 @@ public struct RawConditionElementSyntax: RawSyntaxNodeProtocol {
1364913647
self = .availability(node)
1365013648
return
1365113649
}
13652-
if let node = RawUnavailabilityConditionSyntax(other) {
13653-
self = .unavailability(node)
13654-
return
13655-
}
1365613650
if let node = RawMatchingPatternConditionSyntax(other) {
1365713651
self = .matchingPattern(node)
1365813652
return
@@ -13751,9 +13745,9 @@ public struct RawAvailabilityConditionSyntax: RawSyntaxNodeProtocol {
1375113745
}
1375213746

1375313747
public init(
13754-
_ unexpectedBeforePoundAvailableKeyword: RawUnexpectedNodesSyntax? = nil,
13755-
poundAvailableKeyword: RawTokenSyntax,
13756-
_ unexpectedBetweenPoundAvailableKeywordAndLeftParen: RawUnexpectedNodesSyntax? = nil,
13748+
_ unexpectedBeforeAvailabilityKeyword: RawUnexpectedNodesSyntax? = nil,
13749+
availabilityKeyword: RawTokenSyntax,
13750+
_ unexpectedBetweenAvailabilityKeywordAndLeftParen: RawUnexpectedNodesSyntax? = nil,
1375713751
leftParen: RawTokenSyntax,
1375813752
_ unexpectedBetweenLeftParenAndAvailabilitySpec: RawUnexpectedNodesSyntax? = nil,
1375913753
availabilitySpec: RawAvailabilitySpecListSyntax,
@@ -13765,9 +13759,9 @@ public struct RawAvailabilityConditionSyntax: RawSyntaxNodeProtocol {
1376513759
let raw = RawSyntax.makeLayout(
1376613760
kind: .availabilityCondition, uninitializedCount: 9, arena: arena) { layout in
1376713761
layout.initialize(repeating: nil)
13768-
layout[0] = unexpectedBeforePoundAvailableKeyword?.raw
13769-
layout[1] = poundAvailableKeyword.raw
13770-
layout[2] = unexpectedBetweenPoundAvailableKeywordAndLeftParen?.raw
13762+
layout[0] = unexpectedBeforeAvailabilityKeyword?.raw
13763+
layout[1] = availabilityKeyword.raw
13764+
layout[2] = unexpectedBetweenAvailabilityKeywordAndLeftParen?.raw
1377113765
layout[3] = leftParen.raw
1377213766
layout[4] = unexpectedBetweenLeftParenAndAvailabilitySpec?.raw
1377313767
layout[5] = availabilitySpec.raw
@@ -13778,13 +13772,13 @@ public struct RawAvailabilityConditionSyntax: RawSyntaxNodeProtocol {
1377813772
self.init(raw: raw)
1377913773
}
1378013774

13781-
public var unexpectedBeforePoundAvailableKeyword: RawUnexpectedNodesSyntax? {
13775+
public var unexpectedBeforeAvailabilityKeyword: RawUnexpectedNodesSyntax? {
1378213776
layoutView.children[0].map(RawUnexpectedNodesSyntax.init(raw:))
1378313777
}
13784-
public var poundAvailableKeyword: RawTokenSyntax {
13778+
public var availabilityKeyword: RawTokenSyntax {
1378513779
layoutView.children[1].map(RawTokenSyntax.init(raw:))!
1378613780
}
13787-
public var unexpectedBetweenPoundAvailableKeywordAndLeftParen: RawUnexpectedNodesSyntax? {
13781+
public var unexpectedBetweenAvailabilityKeywordAndLeftParen: RawUnexpectedNodesSyntax? {
1378813782
layoutView.children[2].map(RawUnexpectedNodesSyntax.init(raw:))
1378913783
}
1379013784
public var leftParen: RawTokenSyntax {
@@ -13967,86 +13961,6 @@ public struct RawOptionalBindingConditionSyntax: RawSyntaxNodeProtocol {
1396713961
}
1396813962
}
1396913963

13970-
@_spi(RawSyntax)
13971-
public struct RawUnavailabilityConditionSyntax: RawSyntaxNodeProtocol {
13972-
13973-
@_spi(RawSyntax)
13974-
public var layoutView: RawSyntaxLayoutView {
13975-
return raw.layoutView!
13976-
}
13977-
13978-
public static func isKindOf(_ raw: RawSyntax) -> Bool {
13979-
return raw.kind == .unavailabilityCondition
13980-
}
13981-
13982-
public var raw: RawSyntax
13983-
init(raw: RawSyntax) {
13984-
assert(Self.isKindOf(raw))
13985-
self.raw = raw
13986-
}
13987-
13988-
public init?<Node: RawSyntaxNodeProtocol>(_ other: Node) {
13989-
guard Self.isKindOf(other.raw) else { return nil }
13990-
self.init(raw: other.raw)
13991-
}
13992-
13993-
public init(
13994-
_ unexpectedBeforePoundUnavailableKeyword: RawUnexpectedNodesSyntax? = nil,
13995-
poundUnavailableKeyword: RawTokenSyntax,
13996-
_ unexpectedBetweenPoundUnavailableKeywordAndLeftParen: RawUnexpectedNodesSyntax? = nil,
13997-
leftParen: RawTokenSyntax,
13998-
_ unexpectedBetweenLeftParenAndAvailabilitySpec: RawUnexpectedNodesSyntax? = nil,
13999-
availabilitySpec: RawAvailabilitySpecListSyntax,
14000-
_ unexpectedBetweenAvailabilitySpecAndRightParen: RawUnexpectedNodesSyntax? = nil,
14001-
rightParen: RawTokenSyntax,
14002-
_ unexpectedAfterRightParen: RawUnexpectedNodesSyntax? = nil,
14003-
arena: __shared SyntaxArena
14004-
) {
14005-
let raw = RawSyntax.makeLayout(
14006-
kind: .unavailabilityCondition, uninitializedCount: 9, arena: arena) { layout in
14007-
layout.initialize(repeating: nil)
14008-
layout[0] = unexpectedBeforePoundUnavailableKeyword?.raw
14009-
layout[1] = poundUnavailableKeyword.raw
14010-
layout[2] = unexpectedBetweenPoundUnavailableKeywordAndLeftParen?.raw
14011-
layout[3] = leftParen.raw
14012-
layout[4] = unexpectedBetweenLeftParenAndAvailabilitySpec?.raw
14013-
layout[5] = availabilitySpec.raw
14014-
layout[6] = unexpectedBetweenAvailabilitySpecAndRightParen?.raw
14015-
layout[7] = rightParen.raw
14016-
layout[8] = unexpectedAfterRightParen?.raw
14017-
}
14018-
self.init(raw: raw)
14019-
}
14020-
14021-
public var unexpectedBeforePoundUnavailableKeyword: RawUnexpectedNodesSyntax? {
14022-
layoutView.children[0].map(RawUnexpectedNodesSyntax.init(raw:))
14023-
}
14024-
public var poundUnavailableKeyword: RawTokenSyntax {
14025-
layoutView.children[1].map(RawTokenSyntax.init(raw:))!
14026-
}
14027-
public var unexpectedBetweenPoundUnavailableKeywordAndLeftParen: RawUnexpectedNodesSyntax? {
14028-
layoutView.children[2].map(RawUnexpectedNodesSyntax.init(raw:))
14029-
}
14030-
public var leftParen: RawTokenSyntax {
14031-
layoutView.children[3].map(RawTokenSyntax.init(raw:))!
14032-
}
14033-
public var unexpectedBetweenLeftParenAndAvailabilitySpec: RawUnexpectedNodesSyntax? {
14034-
layoutView.children[4].map(RawUnexpectedNodesSyntax.init(raw:))
14035-
}
14036-
public var availabilitySpec: RawAvailabilitySpecListSyntax {
14037-
layoutView.children[5].map(RawAvailabilitySpecListSyntax.init(raw:))!
14038-
}
14039-
public var unexpectedBetweenAvailabilitySpecAndRightParen: RawUnexpectedNodesSyntax? {
14040-
layoutView.children[6].map(RawUnexpectedNodesSyntax.init(raw:))
14041-
}
14042-
public var rightParen: RawTokenSyntax {
14043-
layoutView.children[7].map(RawTokenSyntax.init(raw:))!
14044-
}
14045-
public var unexpectedAfterRightParen: RawUnexpectedNodesSyntax? {
14046-
layoutView.children[8].map(RawUnexpectedNodesSyntax.init(raw:))
14047-
}
14048-
}
14049-
1405013964
@_spi(RawSyntax)
1405113965
public struct RawHasSymbolConditionSyntax: RawSyntaxNodeProtocol {
1405213966

Sources/SwiftSyntax/Raw/gyb_generated/RawSyntaxValidation.swift

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2009,7 +2009,6 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) {
20092009
verify(layout[1], as: RawSyntax.self),
20102010
verify(layout[1], as: RawSyntax.self),
20112011
verify(layout[1], as: RawSyntax.self),
2012-
verify(layout[1], as: RawSyntax.self),
20132012
])
20142013
assertNoError(kind, 2, verify(layout[2], as: RawUnexpectedNodesSyntax?.self))
20152014
assertNoError(kind, 3, verify(layout[3], as: RawTokenSyntax?.self))
@@ -2051,18 +2050,6 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) {
20512050
assertNoError(kind, 7, verify(layout[7], as: RawInitializerClauseSyntax?.self))
20522051
assertNoError(kind, 8, verify(layout[8], as: RawUnexpectedNodesSyntax?.self))
20532052
break
2054-
case .unavailabilityCondition:
2055-
assert(layout.count == 9)
2056-
assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self))
2057-
assertNoError(kind, 1, verify(layout[1], as: RawTokenSyntax.self))
2058-
assertNoError(kind, 2, verify(layout[2], as: RawUnexpectedNodesSyntax?.self))
2059-
assertNoError(kind, 3, verify(layout[3], as: RawTokenSyntax.self))
2060-
assertNoError(kind, 4, verify(layout[4], as: RawUnexpectedNodesSyntax?.self))
2061-
assertNoError(kind, 5, verify(layout[5], as: RawAvailabilitySpecListSyntax.self))
2062-
assertNoError(kind, 6, verify(layout[6], as: RawUnexpectedNodesSyntax?.self))
2063-
assertNoError(kind, 7, verify(layout[7], as: RawTokenSyntax.self))
2064-
assertNoError(kind, 8, verify(layout[8], as: RawUnexpectedNodesSyntax?.self))
2065-
break
20662053
case .hasSymbolCondition:
20672054
assert(layout.count == 9)
20682055
assertNoError(kind, 0, verify(layout[0], as: RawUnexpectedNodesSyntax?.self))

Sources/SwiftSyntax/generated/Misc.swift

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,6 @@ extension Syntax {
258258
.node(TypeInheritanceClauseSyntax.self),
259259
.node(TypeInitializerClauseSyntax.self),
260260
.node(TypealiasDeclSyntax.self),
261-
.node(UnavailabilityConditionSyntax.self),
262261
.node(UnexpectedNodesSyntax.self),
263262
.node(UnresolvedAsExprSyntax.self),
264263
.node(UnresolvedIsExprSyntax.self),
@@ -760,8 +759,6 @@ extension SyntaxKind {
760759
return TypeInitializerClauseSyntax.self
761760
case .typealiasDecl:
762761
return TypealiasDeclSyntax.self
763-
case .unavailabilityCondition:
764-
return UnavailabilityConditionSyntax.self
765762
case .unexpectedNodes:
766763
return UnexpectedNodesSyntax.self
767764
case .unresolvedAsExpr:
@@ -838,7 +835,7 @@ extension SyntaxKind {
838835
case .availabilityArgument:
839836
return "'@available' argument"
840837
case .availabilityCondition:
841-
return "'#availabile' condition"
838+
return "availability condition"
842839
case .availabilityEntry:
843840
return "availability entry"
844841
case .availabilityLabeledArgument:
@@ -1277,8 +1274,6 @@ extension SyntaxKind {
12771274
return nil
12781275
case .typealiasDecl:
12791276
return "typealias declaration"
1280-
case .unavailabilityCondition:
1281-
return "'#unavailable' condition"
12821277
case .unexpectedNodes:
12831278
return nil
12841279
case .unresolvedAsExpr:

Sources/SwiftSyntax/generated/SyntaxAnyVisitor.swift

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1969,14 +1969,6 @@ open class SyntaxAnyVisitor: SyntaxVisitor {
19691969
visitAnyPost(node._syntaxNode)
19701970
}
19711971

1972-
override open func visit(_ node: UnavailabilityConditionSyntax) -> SyntaxVisitorContinueKind {
1973-
return visitAny(node._syntaxNode)
1974-
}
1975-
1976-
override open func visitPost(_ node: UnavailabilityConditionSyntax) {
1977-
visitAnyPost(node._syntaxNode)
1978-
}
1979-
19801972
override open func visit(_ node: UnexpectedNodesSyntax) -> SyntaxVisitorContinueKind {
19811973
return visitAny(node._syntaxNode)
19821974
}

Sources/SwiftSyntax/generated/SyntaxEnum.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -496,8 +496,6 @@ public enum SyntaxEnum {
496496

497497
case typealiasDecl(TypealiasDeclSyntax)
498498

499-
case unavailabilityCondition(UnavailabilityConditionSyntax)
500-
501499
case unexpectedNodes(UnexpectedNodesSyntax)
502500

503501
case unresolvedAsExpr(UnresolvedAsExprSyntax)
@@ -1013,8 +1011,6 @@ public extension Syntax {
10131011
return .typeInitializerClause(TypeInitializerClauseSyntax(self)!)
10141012
case .typealiasDecl:
10151013
return .typealiasDecl(TypealiasDeclSyntax(self)!)
1016-
case .unavailabilityCondition:
1017-
return .unavailabilityCondition(UnavailabilityConditionSyntax(self)!)
10181014
case .unexpectedNodes:
10191015
return .unexpectedNodes(UnexpectedNodesSyntax(self)!)
10201016
case .unresolvedAsExpr:

Sources/SwiftSyntax/generated/SyntaxKind.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -496,8 +496,6 @@ public enum SyntaxKind {
496496

497497
case typealiasDecl
498498

499-
case unavailabilityCondition
500-
501499
case unexpectedNodes
502500

503501
case unresolvedAsExpr

Sources/SwiftSyntax/generated/SyntaxTransform.swift

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1216,11 +1216,6 @@ public protocol SyntaxTransformVisitor {
12161216
/// - Returns: the sum of whatever the child visitors return.
12171217
func visit(_ node: TypealiasDeclSyntax) -> ResultType
12181218

1219-
/// Visiting `UnavailabilityConditionSyntax` specifically.
1220-
/// - Parameter node: the node we are visiting.
1221-
/// - Returns: the sum of whatever the child visitors return.
1222-
func visit(_ node: UnavailabilityConditionSyntax) -> ResultType
1223-
12241219
/// Visiting `UnexpectedNodesSyntax` specifically.
12251220
/// - Parameter node: the node we are visiting.
12261221
/// - Returns: the sum of whatever the child visitors return.
@@ -2975,13 +2970,6 @@ extension SyntaxTransformVisitor {
29752970
visitAny(Syntax(node))
29762971
}
29772972

2978-
/// Visiting `UnavailabilityConditionSyntax` specifically.
2979-
/// - Parameter node: the node we are visiting.
2980-
/// - Returns: nil by default.
2981-
public func visit(_ node: UnavailabilityConditionSyntax) -> ResultType {
2982-
visitAny(Syntax(node))
2983-
}
2984-
29852973
/// Visiting `UnexpectedNodesSyntax` specifically.
29862974
/// - Parameter node: the node we are visiting.
29872975
/// - Returns: nil by default.
@@ -3569,8 +3557,6 @@ extension SyntaxTransformVisitor {
35693557
return visit(derived)
35703558
case .typealiasDecl(let derived):
35713559
return visit(derived)
3572-
case .unavailabilityCondition(let derived):
3573-
return visit(derived)
35743560
case .unexpectedNodes(let derived):
35753561
return visit(derived)
35763562
case .unresolvedAsExpr(let derived):

0 commit comments

Comments
 (0)