Skip to content

Commit b92530f

Browse files
authored
Merge pull request #67500 from ahoppen/ahoppen/accessor-refactoring
Adjustments for refactoring of representation of Accessors in SwiftSyntax
2 parents cc72301 + cf81bab commit b92530f

File tree

5 files changed

+21
-21
lines changed

5 files changed

+21
-21
lines changed

lib/Macros/Sources/ObservationMacros/Extensions.swift

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,13 @@ extension VariableDeclSyntax {
4646
binding.as(PatternBindingSyntax.self)
4747
}
4848
let accessors: [AccessorListSyntax.Element] = patternBindings.compactMap { patternBinding in
49-
switch patternBinding.accessor {
49+
switch patternBinding.accessorBlock?.accessors {
5050
case .accessors(let accessors):
5151
return accessors
5252
default:
5353
return nil
5454
}
55-
}.flatMap { $0.accessors }
55+
}.flatMap { $0 }
5656
return accessors.compactMap { accessor in
5757
guard let decl = accessor.as(AccessorDeclSyntax.self) else {
5858
return nil
@@ -76,9 +76,14 @@ extension VariableDeclSyntax {
7676
if accessorsMatching({ $0 == .keyword(.get) }).count > 0 {
7777
return true
7878
} else {
79-
return bindings.compactMap { binding in
80-
binding.as(PatternBindingSyntax.self)?.accessor?.as(CodeBlockSyntax.self)
81-
}.count > 0
79+
print("else branch")
80+
return bindings.contains { binding in
81+
if case .getter = binding.accessorBlock?.accessors {
82+
return true
83+
} else {
84+
return false
85+
}
86+
}
8287
}
8388
}
8489

@@ -196,11 +201,11 @@ extension FunctionDeclSyntax {
196201

197202
var signatureStandin: SignatureStandin {
198203
var parameters = [String]()
199-
for parameter in signature.input.parameterList {
204+
for parameter in signature.parameterClause.parameters {
200205
parameters.append(parameter.firstName.text + ":" + (parameter.type.genericSubstitution(genericParameterClause?.parameters) ?? "" ))
201206
}
202-
let returnType = signature.output?.returnType.genericSubstitution(genericParameterClause?.parameters) ?? "Void"
203-
return SignatureStandin(isInstance: isInstance, identifier: identifier.text, parameters: parameters, returnType: returnType)
207+
let returnType = signature.returnClause?.type.genericSubstitution(genericParameterClause?.parameters) ?? "Void"
208+
return SignatureStandin(isInstance: isInstance, identifier: name.text, parameters: parameters, returnType: returnType)
204209
}
205210

206211
func isEquivalent(to other: FunctionDeclSyntax) -> Bool {

lib/Macros/Sources/ObservationMacros/ObservableMacro.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ extension PatternBindingListSyntax {
160160
),
161161
typeAnnotation: binding.typeAnnotation,
162162
initializer: binding.initializer,
163-
accessor: binding.accessor,
163+
accessorBlock: binding.accessorBlock,
164164
trailingComma: binding.trailingComma,
165165
trailingTrivia: binding.trailingTrivia)
166166

@@ -199,11 +199,11 @@ extension ObservableMacro: MemberMacro {
199199
providingMembersOf declaration: Declaration,
200200
in context: Context
201201
) throws -> [DeclSyntax] {
202-
guard let identified = declaration.asProtocol(IdentifiedDeclSyntax.self) else {
202+
guard let identified = declaration.asProtocol(NamedDeclSyntax.self) else {
203203
return []
204204
}
205205

206-
let observableType = identified.identifier
206+
let observableType = identified.name
207207

208208
if declaration.isEnum {
209209
// enumerations cannot store properties

test/Macros/Inputs/syntax_macro_definitions.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -467,11 +467,11 @@ extension PropertyWrapperMacro: PeerMacro {
467467
}
468468
}
469469

470-
extension PatternBindingSyntax.Accessor {
470+
extension AccessorBlockSyntax {
471471
var hasGetter: Bool {
472-
switch self {
472+
switch self.accessors {
473473
case .accessors(let accessors):
474-
for accessor in accessors.accessors {
474+
for accessor in accessors {
475475
if accessor.accessorKind.text == "get" {
476476
return true
477477
}
@@ -769,12 +769,12 @@ extension VariableDeclSyntax {
769769
}
770770

771771
let binding = bindings.first!
772-
switch binding.accessor {
772+
switch binding.accessorBlock?.accessors {
773773
case .none:
774774
return true
775775

776776
case .accessors(let node):
777-
for accessor in node.accessors {
777+
for accessor in node {
778778
switch accessor.accessorKind.tokenKind {
779779
case .keyword(.willSet), .keyword(.didSet):
780780
// Observers can occur on a stored property.

test/SourceKit/Macros/macro_basic.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,6 @@ macro anonymousTypes(_: () -> String) = #externalMacro(module: "MacroDefinition"
211211
// NESTED_ATTACHED_EXPAND-NEXT: get {
212212
// NESTED_ATTACHED_EXPAND-NEXT: _storage.x
213213
// NESTED_ATTACHED_EXPAND-NEXT: }
214-
// NESTED_ATTACHED_EXPAND-EMPTY:
215214
// NESTED_ATTACHED_EXPAND-NEXT: set {
216215
// NESTED_ATTACHED_EXPAND-NEXT: _storage.x = newValue
217216
// NESTED_ATTACHED_EXPAND-NEXT: }
@@ -226,7 +225,6 @@ macro anonymousTypes(_: () -> String) = #externalMacro(module: "MacroDefinition"
226225
// ACCESSOR1_EXPAND-NEXT: get {
227226
// ACCESSOR1_EXPAND-NEXT: _storage.x
228227
// ACCESSOR1_EXPAND-NEXT: }
229-
// ACCESSOR1_EXPAND-EMPTY:
230228
// ACCESSOR1_EXPAND-NEXT: set {
231229
// ACCESSOR1_EXPAND-NEXT: _storage.x = newValue
232230
// ACCESSOR1_EXPAND-NEXT: }
@@ -241,7 +239,6 @@ macro anonymousTypes(_: () -> String) = #externalMacro(module: "MacroDefinition"
241239
// ACCESSOR2_EXPAND-NEXT: get {
242240
// ACCESSOR2_EXPAND-NEXT: _storage.y
243241
// ACCESSOR2_EXPAND-NEXT: }
244-
// ACCESSOR2_EXPAND-EMPTY:
245242
// ACCESSOR2_EXPAND-NEXT: set {
246243
// ACCESSOR2_EXPAND-NEXT: _storage.y = newValue
247244
// ACCESSOR2_EXPAND-NEXT: }

test/SourceKit/Macros/syntactic_expansion.swift.expected

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ source.edit.kind.active:
1515
get {
1616
_value.wrappedValue
1717
}
18-
1918
set {
2019
_value.wrappedValue = newValue
2120
}
@@ -92,7 +91,6 @@ source.edit.kind.active:
9291
get {
9392
_value.wrappedValue
9493
}
95-
9694
set {
9795
_value.wrappedValue = newValue
9896
}

0 commit comments

Comments
 (0)