@@ -17,6 +17,22 @@ import SwiftSyntaxMacros
17
17
@_implementationOnly import SwiftSyntaxBuilder
18
18
19
19
public struct ObservableMacro {
20
+ static let moduleName = " _Observation "
21
+
22
+ static let conformanceName = " Observable "
23
+ static var qualifiedConformanceName : String {
24
+ return " \( moduleName) . \( conformanceName) "
25
+ }
26
+
27
+ static var observableConformanceType : TypeSyntax {
28
+ " \( raw: qualifiedConformanceName) "
29
+ }
30
+
31
+ static let registrarTypeName = " ObservationRegistrar "
32
+ static var qualifiedRegistrarTypeName : String {
33
+ return " \( moduleName) . \( registrarTypeName) "
34
+ }
35
+
20
36
static let trackedMacroName = " ObservationTracked "
21
37
static let ignoredMacroName = " ObservationIgnored "
22
38
@@ -25,7 +41,7 @@ public struct ObservableMacro {
25
41
static func registrarVariable( _ observableType: TokenSyntax ) -> DeclSyntax {
26
42
return
27
43
"""
28
- @ \( raw: ignoredMacroName) private let \( raw: registrarVariableName) = ObservationRegistrar ()
44
+ @ \( raw: ignoredMacroName) private let \( raw: registrarVariableName) = \( raw : qualifiedRegistrarTypeName ) ()
29
45
"""
30
46
}
31
47
@@ -264,13 +280,13 @@ extension ObservableMacro: ConformanceMacro {
264
280
265
281
if let inheritanceList {
266
282
for inheritance in inheritanceList {
267
- if inheritance. typeName. identifier == " Observable " {
283
+ if inheritance. typeName. identifier == ObservableMacro . conformanceName {
268
284
return [ ]
269
285
}
270
286
}
271
287
}
272
288
273
- return [ ( " Observable " , nil ) ]
289
+ return [ ( ObservableMacro . observableConformanceType , nil ) ]
274
290
}
275
291
}
276
292
0 commit comments