Skip to content

Commit 04ecc35

Browse files
authored
[Observation] Ensure type access is qualified to the module name (#66364)
1 parent 4d1d8a9 commit 04ecc35

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

@@ -262,13 +278,13 @@ extension ObservableMacro: ConformanceMacro {
262278

263279
if let inheritanceList {
264280
for inheritance in inheritanceList {
265-
if inheritance.typeName.identifier == "Observable" {
281+
if inheritance.typeName.identifier == ObservableMacro.conformanceName {
266282
return []
267283
}
268284
}
269285
}
270286

271-
return [("Observable", nil)]
287+
return [(ObservableMacro.observableConformanceType, nil)]
272288
}
273289
}
274290

0 commit comments

Comments
 (0)