@@ -38,10 +38,13 @@ public struct ObservationTracking {
3838 }
3939 }
4040
41- struct AccessList {
42- var entries = [ ObjectIdentifier : Entry] ( )
41+ @_spi ( SwiftUI)
42+ public struct _AccessList : Sendable {
43+ internal var entries = [ ObjectIdentifier : Entry] ( )
44+
45+ internal init ( ) { }
4346
44- mutating func addAccess< Subject: Observable > (
47+ internal mutating func addAccess< Subject: Observable > (
4548 keyPath: PartialKeyPath < Subject > ,
4649 context: ObservationRegistrar < Subject > . Context
4750 ) {
@@ -53,13 +56,13 @@ public struct ObservationTracking {
5356 _ apply: ( ) -> T ,
5457 onChange: @autoclosure ( ) -> @Sendable ( ) -> Void
5558 ) -> T {
56- var accessList : AccessList ?
57- let result = withUnsafeMutablePointer ( to: & accessList ) { ptr in
59+ var _AccessList : _AccessList ?
60+ let result = withUnsafeMutablePointer ( to: & _AccessList ) { ptr in
5861 _ThreadLocal. value = UnsafeMutableRawPointer ( ptr)
5962 defer { _ThreadLocal. value = nil }
6063 return apply ( )
6164 }
62- if let list = accessList {
65+ if let list = _AccessList {
6366 let state = _ManagedCriticalState ( [ ObjectIdentifier: Int] ( ) )
6467 let onChange = onChange ( )
6568 let values = list. entries. mapValues { $0. addObserver {
@@ -74,11 +77,11 @@ public struct ObservationTracking {
7477 return result
7578 }
7679
80+ @_spi ( SwiftUI)
7781 public static func _installTracking(
78- _ storage : UnsafeRawPointer ,
82+ _ list : _AccessList ,
7983 onChange: @escaping @Sendable ( ) -> Void
8084 ) {
81- let list = unsafeBitCast ( storage, to: AccessList . self)
8285 let state = _ManagedCriticalState ( [ ObjectIdentifier: Int] ( ) )
8386 let values = list. entries. mapValues { $0. addObserver {
8487 onChange ( )
0 commit comments