Skip to content

Commit cb2f0c7

Browse files
committed
[Observation] Ensure type access is qualified to the module name
1 parent 9c98ee8 commit cb2f0c7

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

lib/Macros/Sources/ObservationMacros/ObservableMacro.swift

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,22 @@ import SwiftSyntaxMacros
1717
@_implementationOnly import SwiftSyntaxBuilder
1818

1919
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+
2036
static let trackedMacroName = "ObservationTracked"
2137
static let ignoredMacroName = "ObservationIgnored"
2238

@@ -25,7 +41,7 @@ public struct ObservableMacro {
2541
static func registrarVariable(_ observableType: TokenSyntax) -> DeclSyntax {
2642
return
2743
"""
28-
@\(raw: ignoredMacroName) private let \(raw: registrarVariableName) = ObservationRegistrar()
44+
@\(raw: ignoredMacroName) private let \(raw: registrarVariableName) = \(raw: qualifiedRegistrarTypeName)()
2945
"""
3046
}
3147

@@ -264,13 +280,13 @@ extension ObservableMacro: ConformanceMacro {
264280

265281
if let inheritanceList {
266282
for inheritance in inheritanceList {
267-
if inheritance.typeName.identifier == "Observable" {
283+
if inheritance.typeName.identifier == ObservableMacro.conformanceName {
268284
return []
269285
}
270286
}
271287
}
272288

273-
return [("Observable", nil)]
289+
return [(ObservableMacro.observableConformanceType, nil)]
274290
}
275291
}
276292

0 commit comments

Comments
 (0)