Skip to content

Commit 4bc5fe0

Browse files
committed
Adjustments for refactoring of representation of Accessors in SwiftSyntax
1 parent 93e209c commit 4bc5fe0

File tree

3 files changed

+21
-16
lines changed

3 files changed

+21
-16
lines changed

lib/Macros/Sources/ObservationMacros/Extensions.swift

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

@@ -197,11 +202,11 @@ extension FunctionDeclSyntax {
197202

198203
var signatureStandin: SignatureStandin {
199204
var parameters = [String]()
200-
for parameter in signature.input.parameterList {
205+
for parameter in signature.parameterClause.parameters {
201206
parameters.append(parameter.firstName.text + ":" + (parameter.type.genericSubstitution(genericParameterClause?.parameters) ?? "" ))
202207
}
203-
let returnType = signature.output?.returnType.genericSubstitution(genericParameterClause?.parameters) ?? "Void"
204-
return SignatureStandin(isInstance: isInstance, identifier: identifier.text, parameters: parameters, returnType: returnType)
208+
let returnType = signature.returnClause?.type.genericSubstitution(genericParameterClause?.parameters) ?? "Void"
209+
return SignatureStandin(isInstance: isInstance, identifier: name.text, parameters: parameters, returnType: returnType)
205210
}
206211

207212
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
@@ -161,7 +161,7 @@ extension PatternBindingListSyntax {
161161
),
162162
typeAnnotation: binding.typeAnnotation,
163163
initializer: binding.initializer,
164-
accessor: binding.accessor,
164+
accessorBlock: binding.accessorBlock,
165165
trailingComma: binding.trailingComma,
166166
trailingTrivia: binding.trailingTrivia)
167167

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

207-
let observableType = identified.identifier
207+
let observableType = identified.name
208208

209209
if declaration.isEnum {
210210
// 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.

0 commit comments

Comments
 (0)