Skip to content

Commit ed77058

Browse files
committed
[AutoDiff] Add differentiability kind note to '@differentiable' attribute.
Reflects changes in swiftlang/swift#35811 (rdar://69980056).
1 parent 577d3bb commit ed77058

File tree

4 files changed

+90
-8
lines changed

4 files changed

+90
-8
lines changed

Sources/SwiftSyntax/gyb_generated/Misc.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1952,6 +1952,6 @@ extension Syntax {
19521952
extension SyntaxParser {
19531953
static func verifyNodeDeclarationHash() -> Bool {
19541954
return String(cString: swiftparse_syntax_structure_versioning_identifier()!) ==
1955-
"87a7d7e3a5692f5e70906dbde9053e64d7651ab0"
1955+
"da7c0141bd1b9360eab92ecfd7c083ae49cd4b1a"
19561956
}
19571957
}

Sources/SwiftSyntax/gyb_generated/SyntaxBuilders.swift

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6497,10 +6497,20 @@ extension ObjCSelectorPieceSyntax {
64976497

64986498
public struct DifferentiableAttributeArgumentsSyntaxBuilder {
64996499
private var layout =
6500-
Array<RawSyntax?>(repeating: nil, count: 3)
6500+
Array<RawSyntax?>(repeating: nil, count: 5)
65016501

65026502
internal init() {}
65036503

6504+
public mutating func useDiffKind(_ node: TokenSyntax) {
6505+
let idx = DifferentiableAttributeArgumentsSyntax.Cursor.diffKind.rawValue
6506+
layout[idx] = node.raw
6507+
}
6508+
6509+
public mutating func useDiffKindComma(_ node: TokenSyntax) {
6510+
let idx = DifferentiableAttributeArgumentsSyntax.Cursor.diffKindComma.rawValue
6511+
layout[idx] = node.raw
6512+
}
6513+
65046514
public mutating func useDiffParams(_ node: DifferentiabilityParamsClauseSyntax) {
65056515
let idx = DifferentiableAttributeArgumentsSyntax.Cursor.diffParams.rawValue
65066516
layout[idx] = node.raw

Sources/SwiftSyntax/gyb_generated/SyntaxFactory.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2974,8 +2974,10 @@ public enum SyntaxFactory {
29742974
], length: .zero, presence: .present))
29752975
return ObjCSelectorSyntax(data)
29762976
}
2977-
public static func makeDifferentiableAttributeArguments(diffParams: DifferentiabilityParamsClauseSyntax?, diffParamsComma: TokenSyntax?, whereClause: GenericWhereClauseSyntax?) -> DifferentiableAttributeArgumentsSyntax {
2977+
public static func makeDifferentiableAttributeArguments(diffKind: TokenSyntax?, diffKindComma: TokenSyntax?, diffParams: DifferentiabilityParamsClauseSyntax?, diffParamsComma: TokenSyntax?, whereClause: GenericWhereClauseSyntax?) -> DifferentiableAttributeArgumentsSyntax {
29782978
let layout: [RawSyntax?] = [
2979+
diffKind?.raw,
2980+
diffKindComma?.raw,
29792981
diffParams?.raw,
29802982
diffParamsComma?.raw,
29812983
whereClause?.raw,
@@ -2992,6 +2994,8 @@ public enum SyntaxFactory {
29922994
nil,
29932995
nil,
29942996
nil,
2997+
nil,
2998+
nil,
29952999
], length: .zero, presence: .present))
29963000
return DifferentiableAttributeArgumentsSyntax(data)
29973001
}

Sources/SwiftSyntax/gyb_generated/syntax_nodes/SyntaxNodes.swift

Lines changed: 73 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7470,10 +7470,13 @@ extension ObjCSelectorPieceSyntax: CustomReflectable {
74707470

74717471
///
74727472
/// The arguments for the `@differentiable` attribute: an optional
7473-
/// differentiability parameter clause and an optional 'where' clause.
7473+
/// differentiability kind, an optional differentiability parameter clause,
7474+
/// and an optional 'where' clause.
74747475
///
74757476
public struct DifferentiableAttributeArgumentsSyntax: SyntaxProtocol, SyntaxHashable {
74767477
enum Cursor: Int {
7478+
case diffKind
7479+
case diffKindComma
74777480
case diffParams
74787481
case diffParamsComma
74797482
case whereClause
@@ -7500,6 +7503,53 @@ public struct DifferentiableAttributeArgumentsSyntax: SyntaxProtocol, SyntaxHash
75007503
return Swift.type(of: self)
75017504
}
75027505

7506+
public var diffKind: TokenSyntax? {
7507+
get {
7508+
let childData = data.child(at: Cursor.diffKind,
7509+
parent: Syntax(self))
7510+
if childData == nil { return nil }
7511+
return TokenSyntax(childData!)
7512+
}
7513+
set(value) {
7514+
self = withDiffKind(value)
7515+
}
7516+
}
7517+
7518+
/// Returns a copy of the receiver with its `diffKind` replaced.
7519+
/// - param newChild: The new `diffKind` to replace the node's
7520+
/// current `diffKind`, if present.
7521+
public func withDiffKind(
7522+
_ newChild: TokenSyntax?) -> DifferentiableAttributeArgumentsSyntax {
7523+
let raw = newChild?.raw
7524+
let newData = data.replacingChild(raw, at: Cursor.diffKind)
7525+
return DifferentiableAttributeArgumentsSyntax(newData)
7526+
}
7527+
7528+
///
7529+
/// The comma following the differentiability kind, if it exists.
7530+
///
7531+
public var diffKindComma: TokenSyntax? {
7532+
get {
7533+
let childData = data.child(at: Cursor.diffKindComma,
7534+
parent: Syntax(self))
7535+
if childData == nil { return nil }
7536+
return TokenSyntax(childData!)
7537+
}
7538+
set(value) {
7539+
self = withDiffKindComma(value)
7540+
}
7541+
}
7542+
7543+
/// Returns a copy of the receiver with its `diffKindComma` replaced.
7544+
/// - param newChild: The new `diffKindComma` to replace the node's
7545+
/// current `diffKindComma`, if present.
7546+
public func withDiffKindComma(
7547+
_ newChild: TokenSyntax?) -> DifferentiableAttributeArgumentsSyntax {
7548+
let raw = newChild?.raw
7549+
let newData = data.replacingChild(raw, at: Cursor.diffKindComma)
7550+
return DifferentiableAttributeArgumentsSyntax(newData)
7551+
}
7552+
75037553
public var diffParams: DifferentiabilityParamsClauseSyntax? {
75047554
get {
75057555
let childData = data.child(at: Cursor.diffParams,
@@ -7573,14 +7623,14 @@ public struct DifferentiableAttributeArgumentsSyntax: SyntaxProtocol, SyntaxHash
75737623

75747624
public func _validateLayout() {
75757625
let rawChildren = Array(RawSyntaxChildren(Syntax(self)))
7576-
assert(rawChildren.count == 3)
7577-
// Check child #0 child is DifferentiabilityParamsClauseSyntax or missing
7626+
assert(rawChildren.count == 5)
7627+
// Check child #0 child is TokenSyntax or missing
75787628
if let raw = rawChildren[0].raw {
75797629
let info = rawChildren[0].syntaxInfo
75807630
let absoluteRaw = AbsoluteRawSyntax(raw: raw, info: info)
75817631
let syntaxData = SyntaxData(absoluteRaw, parent: Syntax(self))
75827632
let syntaxChild = Syntax(syntaxData)
7583-
assert(syntaxChild.is(DifferentiabilityParamsClauseSyntax.self))
7633+
assert(syntaxChild.is(TokenSyntax.self))
75847634
}
75857635
// Check child #1 child is TokenSyntax or missing
75867636
if let raw = rawChildren[1].raw {
@@ -7590,12 +7640,28 @@ public struct DifferentiableAttributeArgumentsSyntax: SyntaxProtocol, SyntaxHash
75907640
let syntaxChild = Syntax(syntaxData)
75917641
assert(syntaxChild.is(TokenSyntax.self))
75927642
}
7593-
// Check child #2 child is GenericWhereClauseSyntax or missing
7643+
// Check child #2 child is DifferentiabilityParamsClauseSyntax or missing
75947644
if let raw = rawChildren[2].raw {
75957645
let info = rawChildren[2].syntaxInfo
75967646
let absoluteRaw = AbsoluteRawSyntax(raw: raw, info: info)
75977647
let syntaxData = SyntaxData(absoluteRaw, parent: Syntax(self))
75987648
let syntaxChild = Syntax(syntaxData)
7649+
assert(syntaxChild.is(DifferentiabilityParamsClauseSyntax.self))
7650+
}
7651+
// Check child #3 child is TokenSyntax or missing
7652+
if let raw = rawChildren[3].raw {
7653+
let info = rawChildren[3].syntaxInfo
7654+
let absoluteRaw = AbsoluteRawSyntax(raw: raw, info: info)
7655+
let syntaxData = SyntaxData(absoluteRaw, parent: Syntax(self))
7656+
let syntaxChild = Syntax(syntaxData)
7657+
assert(syntaxChild.is(TokenSyntax.self))
7658+
}
7659+
// Check child #4 child is GenericWhereClauseSyntax or missing
7660+
if let raw = rawChildren[4].raw {
7661+
let info = rawChildren[4].syntaxInfo
7662+
let absoluteRaw = AbsoluteRawSyntax(raw: raw, info: info)
7663+
let syntaxData = SyntaxData(absoluteRaw, parent: Syntax(self))
7664+
let syntaxChild = Syntax(syntaxData)
75997665
assert(syntaxChild.is(GenericWhereClauseSyntax.self))
76007666
}
76017667
}
@@ -7604,6 +7670,8 @@ public struct DifferentiableAttributeArgumentsSyntax: SyntaxProtocol, SyntaxHash
76047670
extension DifferentiableAttributeArgumentsSyntax: CustomReflectable {
76057671
public var customMirror: Mirror {
76067672
return Mirror(self, children: [
7673+
"diffKind": diffKind.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any,
7674+
"diffKindComma": diffKindComma.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any,
76077675
"diffParams": diffParams.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any,
76087676
"diffParamsComma": diffParamsComma.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any,
76097677
"whereClause": whereClause.map(Syntax.init)?.asProtocol(SyntaxProtocol.self) as Any,

0 commit comments

Comments
 (0)