@@ -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
@@ -262,13 +278,13 @@ extension ObservableMacro: ConformanceMacro {
262
278
263
279
if let inheritanceList {
264
280
for inheritance in inheritanceList {
265
- if inheritance. typeName. identifier == " Observable " {
281
+ if inheritance. typeName. identifier == ObservableMacro . conformanceName {
266
282
return [ ]
267
283
}
268
284
}
269
285
}
270
286
271
- return [ ( " Observable " , nil ) ]
287
+ return [ ( ObservableMacro . observableConformanceType , nil ) ]
272
288
}
273
289
}
274
290
0 commit comments