Initial prototype for Swift 6 mode

This commit is contained in:
John Estropia
2026-07-07 11:18:17 +09:00
parent 38ec439b18
commit 49f65601cd
71 changed files with 998 additions and 684 deletions
+19 -22
View File
@@ -90,7 +90,8 @@ extension ListPublisher {
// MARK: - ListSnapshotSubscription
fileprivate final class ListSnapshotSubscription<S: Subscriber>: Subscription where S.Input == Output, S.Failure == Never {
fileprivate final class ListSnapshotSubscription<S: Subscriber>: Subscription, @unchecked Sendable
where S.Input == Output, S.Failure == Never {
// MARK: FilePrivate
@@ -114,21 +115,24 @@ extension ListPublisher {
return
}
self.publisher.addObserver(
self,
notifyInitial: self.emitInitialValue,
{ [weak self] (publisher) in
guard
let self = self,
let subscriber = self.subscriber
else {
Internals.mainActorImmediate { [self] in
self.publisher.addObserver(
self,
notifyInitial: self.emitInitialValue,
{ [weak self] (publisher) in
return
guard
let self = self,
let subscriber = self.subscriber
else {
return
}
_ = subscriber.receive(publisher.snapshot)
}
_ = subscriber.receive(publisher.snapshot)
}
)
)
}
}
@@ -138,17 +142,10 @@ extension ListPublisher {
self.subscriber = nil
if Thread.isMainThread {
Internals.mainActorImmediate {
self.publisher.removeObserver(self)
}
else {
DispatchQueue.main.async {
self.publisher.removeObserver(self)
}
}
}