Skip to content

Commit 6cb2266

Browse files
committed
[Observation] Transition to peer macros instead of arbitrary members
1 parent 31d0e23 commit 6cb2266

File tree

2 files changed

+6
-8
lines changed

2 files changed

+6
-8
lines changed

lib/Macros/Sources/ObservationMacros/ObservableMacro.swift

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -218,16 +218,13 @@ extension ObservableMacro: MemberMacro {
218218
declaration.addIfNeeded(ObservableMacro.registrarVariable(observableType), to: &declarations)
219219
declaration.addIfNeeded(ObservableMacro.accessFunction(observableType), to: &declarations)
220220
declaration.addIfNeeded(ObservableMacro.withMutationFunction(observableType), to: &declarations)
221-
221+
222222
let storedInstanceVariables = declaration.definedVariables.filter { $0.isValidForObservation }
223223
for property in storedInstanceVariables {
224224
if property.hasMacroApplication(ObservableMacro.ignoredMacroName) { continue }
225225
if property.initializer == nil {
226226
context.addDiagnostics(from: DiagnosticsError(syntax: property, message: "@Observable requires property '\(property.identifier?.text ?? "")' to have an initial value", id: .missingInitializer), node: property)
227227
}
228-
let storage = DeclSyntax(property.privatePrefixed("_", addingAttribute: ObservableMacro.ignoredAttribute))
229-
declaration.addIfNeeded(storage, to: &declarations)
230-
231228
}
232229

233230
return declarations
@@ -343,8 +340,9 @@ extension ObservationTrackedMacro: PeerMacro {
343340
property.isValidForObservation else {
344341
return []
345342
}
346-
347-
if property.hasMacroApplication(ObservableMacro.ignoredMacroName) {
343+
344+
if property.hasMacroApplication(ObservableMacro.ignoredMacroName) ||
345+
property.hasMacroApplication(ObservableMacro.trackedMacroName) {
348346
return []
349347
}
350348

stdlib/public/Observation/Sources/Observation/Observable.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
1616
#if $Macros && hasAttribute(attached)
1717

1818
@available(SwiftStdlib 5.9, *)
19-
@attached(member, names: named(_$observationRegistrar), named(access), named(withMutation), arbitrary)
19+
@attached(member, names: named(_$observationRegistrar), named(access), named(withMutation))
2020
@attached(memberAttribute)
2121
@attached(conformance)
2222
public macro Observable() =
2323
#externalMacro(module: "ObservationMacros", type: "ObservableMacro")
2424

2525
@available(SwiftStdlib 5.9, *)
2626
@attached(accessor)
27-
// @attached(peer, names: prefixed(_))
27+
@attached(peer, names: prefixed(_))
2828
public macro ObservationTracked() =
2929
#externalMacro(module: "ObservationMacros", type: "ObservationTrackedMacro")
3030

0 commit comments

Comments
 (0)