Skip to content

Commit 36625f4

Browse files
committed
[Observation] Gate enabling of peer macros by flag
1 parent c0610e3 commit 36625f4

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

lib/Macros/Sources/ObservationMacros/ObservableMacro.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,15 @@ extension ObservableMacro: MemberMacro {
219219
declaration.addIfNeeded(ObservableMacro.accessFunction(observableType), to: &declarations)
220220
declaration.addIfNeeded(ObservableMacro.withMutationFunction(observableType), to: &declarations)
221221

222+
#if !OBSERVATION_SUPPORTS_PEER_MACROS
223+
let storedInstanceVariables = declaration.definedVariables.filter { $0.isValidForObservation }
224+
for property in storedInstanceVariables {
225+
if property.hasMacroApplication(ObservableMacro.ignoredMacroName) { continue }
226+
let storage = DeclSyntax(property.privatePrefixed("_", addingAttribute: ObservableMacro.ignoredAttribute))
227+
declaration.addIfNeeded(storage, to: &declarations)
228+
}
229+
#endif
230+
222231
return declarations
223232
}
224233
}

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

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

1818
@available(SwiftStdlib 5.9, *)
19+
#if OBSERVATION_SUPPORTS_PEER_MACROS
1920
@attached(member, names: named(_$observationRegistrar), named(access), named(withMutation))
21+
#else
22+
@attached(member, names: named(_$observationRegistrar), named(access), named(withMutation), arbitrary)
23+
#endif
2024
@attached(memberAttribute)
2125
@attached(conformance)
2226
public macro Observable() =
2327
#externalMacro(module: "ObservationMacros", type: "ObservableMacro")
2428

2529
@available(SwiftStdlib 5.9, *)
2630
@attached(accessor)
31+
#if OBSERVATION_SUPPORTS_PEER_MACROS
2732
@attached(peer, names: prefixed(_))
33+
#endif
2834
public macro ObservationTracked() =
2935
#externalMacro(module: "ObservationMacros", type: "ObservationTrackedMacro")
3036

0 commit comments

Comments
 (0)