The Swift Package Index logo.Swift Package Index

Build Information

Successful build of GRDB, reference v7.4.1 (3a6a83), with Swift 6.2 for Linux on 23 Jun 2025 20:24:50 UTC.

Swift 6 data race errors: 0

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4609320-0":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.2-latest swift build --triple x86_64-unknown-linux-gnu 2>&1

Build Log

470 |     }
471 |
472 |     func notifyError(_ error: Error) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
473 |         scheduler.schedule {
474 |             let events = self.lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/Map.swift:24:36: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
22 |     -> ValueObservation<ValueReducers.Map<Reducer, T>>
23 |     {
24 |         mapReducer { ValueReducers.Map($0, transform) }
   |                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
25 |     }
26 | }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/Map.swift:21:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
19 |     /// - parameter transform: A closure that takes one value as its parameter
20 |     ///   and returns a new value.
21 |     public func map<T>(_ transform: @escaping @Sendable (Reducer.Value) throws -> T)
   |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
22 |     -> ValueObservation<ValueReducers.Map<Reducer, T>>
23 |     {
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:23:43: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 21 |         nonisolated(unsafe) let predicate = predicate
 22 |
 23 |         return mapReducer { ValueReducers.RemoveDuplicates($0, predicate: predicate) }
    |                                           `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 24 |     }
 25 | }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:21:33: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 19 |         // Anyway if we would not accept non-sendable closures, we could
 20 |         // not deal with `Equatable.==`...
 21 |         nonisolated(unsafe) let predicate = predicate
    |                                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 22 |
 23 |         return mapReducer { ValueReducers.RemoveDuplicates($0, predicate: predicate) }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:73:36: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 71 |     -> ValueObservation<ValueReducers.RemoveDuplicates<Reducer>>
 72 |     {
 73 |         mapReducer { ValueReducers.RemoveDuplicates($0, predicate: ==) }
    |                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 74 |     }
 75 | }
/host/spi-builder-workspace/GRDB/ValueObservation/SharedValueObservation.swift:127:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
125 |     {
126 |         SharedValueObservation(scheduling: scheduler, extent: extent) { onError, onChange in
127 |             self.start(in: reader, scheduling: scheduler, onError: onError, onChange: onChange)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
128 |         }
129 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/SharedValueObservation.swift:119:17: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
117 |     /// - parameter extent: The extent of the shared database observation.
118 |     /// - returns: A `SharedValueObservation`
119 |     public func shared(
    |                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
120 |         in reader: any DatabaseReader,
121 |         scheduling scheduler: some ValueObservationScheduler = .async(onQueue: .main),
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:42:28: warning: capture of non-Sendable type 'R.Type' in an isolated closure
 40 |             requiresWriteAccess: requiresWriteAccess,
 41 |             trackingMode: trackingMode,
 42 |             makeReducer: { transform(makeReducer()) })
    |                            `- warning: capture of non-Sendable type 'R.Type' in an isolated closure
 43 |     }
 44 | }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:42:28: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 40 |             requiresWriteAccess: requiresWriteAccess,
 41 |             trackingMode: trackingMode,
 42 |             makeReducer: { transform(makeReducer()) })
    |                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 43 |     }
 44 | }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:36:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 34 |
 35 |     /// Returns a ValueObservation with a transformed reducer.
 36 |     func mapReducer<R>(_ transform: @escaping @Sendable (Reducer) -> R) -> ValueObservation<R> {
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 37 |         let makeReducer = self.makeReducer
 38 |         return ValueObservation<R>(
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:36:26: warning: capture of non-Sendable type 'R.Type' in an isolated closure
 34 |
 35 |     /// Returns a ValueObservation with a transformed reducer.
 36 |     func mapReducer<R>(_ transform: @escaping @Sendable (Reducer) -> R) -> ValueObservation<R> {
    |                          `- warning: capture of non-Sendable type 'R.Type' in an isolated closure
 37 |         let makeReducer = self.makeReducer
 38 |         return ValueObservation<R>(
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:186:9: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
184 |         scheduling scheduler: some ValueObservationMainActorScheduler = .mainActor,
185 |         onError: @escaping @MainActor (Error) -> Void,
186 |         onChange: @escaping @MainActor (Reducer.Value) -> Void)
    |         `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
187 |     -> AnyDatabaseCancellable
188 |     where Reducer: ValueReducer
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:239:31: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
237 |         self
238 |             .mapReducer { reducer in
239 |                 ValueReducers.Trace(
    |                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
240 |                     base: reducer,
241 |                     // Adding the willFetch handler to the reducer is handy: we
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:232:9: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
230 |         willTrackRegion: (@Sendable (DatabaseRegion) -> Void)? = nil,
231 |         databaseDidChange: (@Sendable () -> Void)? = nil,
232 |         didReceiveValue: (@Sendable (Reducer.Value) -> Void)? = nil,
    |         `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
233 |         didFail: (@Sendable (Error) -> Void)? = nil,
234 |         didCancel: (@Sendable () -> Void)? = nil)
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:358:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
356 |     {
357 |         AsyncValueObservation(bufferingPolicy: bufferingPolicy) { onError, onChange in
358 |             self.start(in: reader, scheduling: scheduler, onError: onError, onChange: onChange)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
359 |         }
360 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:350:17: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
348 |     /// - parameter bufferingPolicy: see the documntation
349 |     ///   of `AsyncThrowingStream`.
350 |     public func values(
    |                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
351 |         in reader: any DatabaseReader,
352 |         scheduling scheduler: some ValueObservationScheduler = .task,
[166/172] Compiling GRDB SharedValueObservation.swift
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:351:59: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
349 |         // open until we grab a write access, and compare the database versions.
350 |         databaseAccess.dbPool.asyncWALSnapshotTransaction { result in
351 |             let (isNotifying, databaseAccess) = self.lock.synchronized {
    |                                                           `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
352 |                 (self.notificationCallbacks != nil, self.databaseAccess)
353 |             }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:367:32: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
365 |                         let db = try dbResult.get()
366 |
367 |                         switch self.trackingMode {
    |                                `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
368 |                         case let .constantRegion(regions):
369 |                             fetchedValue = try databaseAccess.fetch(db)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:383:47: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
381 |                         // a database dispatch queue longer than necessary.
382 |                         self.reduceQueue.async {
383 |                             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
384 |                             guard isNotifying else { return /* Cancelled */ }
385 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:393:52: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
391 |                                 // Notify
392 |                                 self.scheduler.schedule {
393 |                                     let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
394 |                                     guard let onChange else { return /* Cancelled */ }
395 |                                     onChange(initialValue)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:444:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
442 |
443 |         databaseAccess.dbPool.asyncWriteWithoutTransaction { writerDB in
444 |             let events = self.lock.synchronized { self.notificationCallbacks?.events }
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
445 |             guard let events else { return /* Cancelled */ }
446 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:494:47: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
492 |                         // between transactions and notifications!
493 |                         self.reduceQueue.async {
494 |                             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
495 |                             guard isNotifying else { return /* Cancelled */ }
496 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:503:56: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
501 |                                 if let value {
502 |                                     self.scheduler.schedule {
503 |                                         let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                                        `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
504 |                                         guard let onChange else { return /* Cancelled */ }
505 |                                         onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:511:37: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
509 |                                 let dbPool = self.lock.synchronized { self.databaseAccess?.dbPool }
510 |                                 dbPool?.asyncWriteWithoutTransaction { writerDB in
511 |                                     self.stopDatabaseObservation(writerDB)
    |                                     `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
512 |                                 }
513 |                                 self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:590:31: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
588 |         // transaction to complete.
589 |         databaseAccess.dbPool.asyncRead { dbResult in
590 |             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
591 |             guard isNotifying else { return /* Cancelled */ }
592 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:584:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
582 |     ///
583 |     /// Unlike `syncStartWithoutWALSnapshot()`, this method does notify the initial value or error.
584 |     private func asyncStartWithoutWALSnapshot(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
585 |         // Start from a read access. The whole point of using a DatabasePool
586 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:615:39: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
613 |                 // a database dispatch queue longer than necessary.
614 |                 self.reduceQueue.async {
615 |                     let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                       `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
616 |                     guard isNotifying else { return /* Cancelled */ }
617 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:584:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
582 |     ///
583 |     /// Unlike `syncStartWithoutWALSnapshot()`, this method does notify the initial value or error.
584 |     private func asyncStartWithoutWALSnapshot(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
585 |         // Start from a read access. The whole point of using a DatabasePool
586 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:625:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
623 |                         // Notify
624 |                         self.scheduler.schedule {
625 |                             let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
626 |                             guard let onChange else { return /* Cancelled */ }
627 |                             onChange(initialValue)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:584:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
582 |     ///
583 |     /// Unlike `syncStartWithoutWALSnapshot()`, this method does notify the initial value or error.
584 |     private func asyncStartWithoutWALSnapshot(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
585 |         // Start from a read access. The whole point of using a DatabasePool
586 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:649:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
647 |     {
648 |         databaseAccess.dbPool.asyncWriteWithoutTransaction { writerDB in
649 |             let events = self.lock.synchronized { self.notificationCallbacks?.events }
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
650 |             guard let events else { return /* Cancelled */ }
651 |             events.databaseDidChange?()
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:681:43: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
679 |                     // between transactions and notifications!
680 |                     self.reduceQueue.async {
681 |                         let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                           `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
682 |                         guard isNotifying else { return /* Cancelled */ }
683 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:690:52: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
688 |                             if let value {
689 |                                 self.scheduler.schedule {
690 |                                     let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
691 |                                     guard let onChange else { return /* Cancelled */ }
692 |                                     onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:698:33: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
696 |                             let dbPool = self.lock.synchronized { self.databaseAccess?.dbPool }
697 |                             dbPool?.asyncWriteWithoutTransaction { writerDB in
698 |                                 self.stopDatabaseObservation(writerDB)
    |                                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
699 |                             }
700 |                             self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:809:31: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
807 |     private func asyncFetch(databaseAccess: DatabaseAccess) {
808 |         databaseAccess.dbPool.asyncRead { [self] dbResult in
809 |             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
810 |             guard isNotifying else { return /* Cancelled */ }
811 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:808:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
806 |
807 |     private func asyncFetch(databaseAccess: DatabaseAccess) {
808 |         databaseAccess.dbPool.asyncRead { [self] dbResult in
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
809 |             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
810 |             guard isNotifying else { return /* Cancelled */ }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:837:33: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
835 |     private func reduce(_ fetchResult: Result<Reducer.Fetcher.Value, Error>) {
836 |         // Assume this value can safely be sent to the reduce queue.
837 |         nonisolated(unsafe) let fetchResult = fetchResult
    |                                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
838 |
839 |         reduceQueue.async {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:843:35: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
841 |                 let fetchedValue = try fetchResult.get()
842 |
843 |                 let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                   `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
844 |                 guard isNotifying else { return /* Cancelled */ }
845 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:851:40: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
849 |                 if let value {
850 |                     self.scheduler.schedule {
851 |                         let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                        `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
852 |                         guard let onChange else { return /* Cancelled */ }
853 |                         onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:835:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
833 |     }
834 |
835 |     private func reduce(_ fetchResult: Result<Reducer.Fetcher.Value, Error>) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
836 |         // Assume this value can safely be sent to the reduce queue.
837 |         nonisolated(unsafe) let fetchResult = fetchResult
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:859:21: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
857 |                 let dbPool = self.lock.synchronized { self.databaseAccess?.dbPool }
858 |                 dbPool?.asyncWriteWithoutTransaction { writerDB in
859 |                     self.stopDatabaseObservation(writerDB)
    |                     `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
860 |                 }
861 |                 self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:835:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
833 |     }
834 |
835 |     private func reduce(_ fetchResult: Result<Reducer.Fetcher.Value, Error>) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
836 |         // Assume this value can safely be sent to the reduce queue.
837 |         nonisolated(unsafe) let fetchResult = fetchResult
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:893:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
891 |         guard let dbPool else { return /* Failed */ }
892 |         dbPool.asyncWriteWithoutTransaction { db in
893 |             self.stopDatabaseObservation(db)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
894 |         }
895 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:875:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
873 |
874 | extension ValueConcurrentObserver: DatabaseCancellable {
875 |     func cancel() {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
876 |         // Notify cancellation
877 |         let (events, dbPool): (ValueObservationEvents?, DatabasePool?) = lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:899:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
897 |     func notifyError(_ error: Error) {
898 |         scheduler.schedule {
899 |             let events = self.lock.synchronized {
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
900 |                 let events = self.notificationCallbacks?.events
901 |                 self.notificationCallbacks = nil
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:897:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
895 |     }
896 |
897 |     func notifyError(_ error: Error) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
898 |         scheduler.schedule {
899 |             let events = self.lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:255:47: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
253 |             do {
254 |                 // Fetch & Start observing the database
255 |                 guard let _fetchedValue = try self.fetchAndStartObservation(db) else {
    |                                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
256 |                     return /* Cancelled */
257 |                 }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:269:39: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
267 |                 // between transactions and notifications!
268 |                 self.reduceQueue.async {
269 |                     let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                       `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
270 |                     guard isNotifying else { return /* Cancelled */ }
271 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:279:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
277 |                         // Notify
278 |                         self.scheduler.schedule {
279 |                             let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
280 |                             guard let onChange else { return /* Cancelled */ }
281 |                             onChange(initialValue)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:286:29: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
284 |                         let writer = self.lock.synchronized { self.databaseAccess?.writer }
285 |                         writer?.asyncWriteWithoutTransaction { db in
286 |                             self.stopDatabaseObservation(db)
    |                             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
287 |                         }
288 |                         self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:413:35: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
411 |             // transactions and notifications!
412 |             reduceQueue.async {
413 |                 let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                   `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
414 |                 guard isNotifying else { return /* Cancelled */ }
415 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:366:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
364 |     }
365 |
366 |     func databaseDidCommit(_ db: Database) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
367 |         // Ignore transaction unless database was modified
368 |         guard observationState.isModified else { return }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:422:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
420 |                     if let value {
421 |                         self.scheduler.schedule {
422 |                             let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
423 |                             guard let onChange else { return /* Cancelled */ }
424 |                             onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:366:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
364 |     }
365 |
366 |     func databaseDidCommit(_ db: Database) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
367 |         // Ignore transaction unless database was modified
368 |         guard observationState.isModified else { return }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:430:25: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
428 |                     let writer = self.lock.synchronized { self.databaseAccess?.writer }
429 |                     writer?.asyncWriteWithoutTransaction { db in
430 |                         self.stopDatabaseObservation(db)
    |                         `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
431 |                     }
432 |                     self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:366:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
364 |     }
365 |
366 |     func databaseDidCommit(_ db: Database) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
367 |         // Ignore transaction unless database was modified
368 |         guard observationState.isModified else { return }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:468:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
466 |         guard let writer else { return /* Failed */ }
467 |         writer.asyncWriteWithoutTransaction { db in
468 |             self.stopDatabaseObservation(db)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
469 |         }
470 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:450:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
448 |
449 | extension ValueWriteOnlyObserver: DatabaseCancellable {
450 |     func cancel() {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
451 |         // Notify cancellation
452 |         let (events, writer) = lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:474:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
472 |     func notifyError(_ error: Error) {
473 |         scheduler.schedule {
474 |             let events = self.lock.synchronized {
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
475 |                 let events = self.notificationCallbacks?.events
476 |                 self.notificationCallbacks = nil
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:472:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
470 |     }
471 |
472 |     func notifyError(_ error: Error) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
473 |         scheduler.schedule {
474 |             let events = self.lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/Map.swift:24:36: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
22 |     -> ValueObservation<ValueReducers.Map<Reducer, T>>
23 |     {
24 |         mapReducer { ValueReducers.Map($0, transform) }
   |                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
25 |     }
26 | }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/Map.swift:21:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
19 |     /// - parameter transform: A closure that takes one value as its parameter
20 |     ///   and returns a new value.
21 |     public func map<T>(_ transform: @escaping @Sendable (Reducer.Value) throws -> T)
   |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
22 |     -> ValueObservation<ValueReducers.Map<Reducer, T>>
23 |     {
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:23:43: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 21 |         nonisolated(unsafe) let predicate = predicate
 22 |
 23 |         return mapReducer { ValueReducers.RemoveDuplicates($0, predicate: predicate) }
    |                                           `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 24 |     }
 25 | }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:21:33: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 19 |         // Anyway if we would not accept non-sendable closures, we could
 20 |         // not deal with `Equatable.==`...
 21 |         nonisolated(unsafe) let predicate = predicate
    |                                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 22 |
 23 |         return mapReducer { ValueReducers.RemoveDuplicates($0, predicate: predicate) }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:73:36: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 71 |     -> ValueObservation<ValueReducers.RemoveDuplicates<Reducer>>
 72 |     {
 73 |         mapReducer { ValueReducers.RemoveDuplicates($0, predicate: ==) }
    |                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 74 |     }
 75 | }
/host/spi-builder-workspace/GRDB/ValueObservation/SharedValueObservation.swift:127:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
125 |     {
126 |         SharedValueObservation(scheduling: scheduler, extent: extent) { onError, onChange in
127 |             self.start(in: reader, scheduling: scheduler, onError: onError, onChange: onChange)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
128 |         }
129 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/SharedValueObservation.swift:119:17: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
117 |     /// - parameter extent: The extent of the shared database observation.
118 |     /// - returns: A `SharedValueObservation`
119 |     public func shared(
    |                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
120 |         in reader: any DatabaseReader,
121 |         scheduling scheduler: some ValueObservationScheduler = .async(onQueue: .main),
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:42:28: warning: capture of non-Sendable type 'R.Type' in an isolated closure
 40 |             requiresWriteAccess: requiresWriteAccess,
 41 |             trackingMode: trackingMode,
 42 |             makeReducer: { transform(makeReducer()) })
    |                            `- warning: capture of non-Sendable type 'R.Type' in an isolated closure
 43 |     }
 44 | }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:42:28: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 40 |             requiresWriteAccess: requiresWriteAccess,
 41 |             trackingMode: trackingMode,
 42 |             makeReducer: { transform(makeReducer()) })
    |                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 43 |     }
 44 | }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:36:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 34 |
 35 |     /// Returns a ValueObservation with a transformed reducer.
 36 |     func mapReducer<R>(_ transform: @escaping @Sendable (Reducer) -> R) -> ValueObservation<R> {
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 37 |         let makeReducer = self.makeReducer
 38 |         return ValueObservation<R>(
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:36:26: warning: capture of non-Sendable type 'R.Type' in an isolated closure
 34 |
 35 |     /// Returns a ValueObservation with a transformed reducer.
 36 |     func mapReducer<R>(_ transform: @escaping @Sendable (Reducer) -> R) -> ValueObservation<R> {
    |                          `- warning: capture of non-Sendable type 'R.Type' in an isolated closure
 37 |         let makeReducer = self.makeReducer
 38 |         return ValueObservation<R>(
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:186:9: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
184 |         scheduling scheduler: some ValueObservationMainActorScheduler = .mainActor,
185 |         onError: @escaping @MainActor (Error) -> Void,
186 |         onChange: @escaping @MainActor (Reducer.Value) -> Void)
    |         `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
187 |     -> AnyDatabaseCancellable
188 |     where Reducer: ValueReducer
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:239:31: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
237 |         self
238 |             .mapReducer { reducer in
239 |                 ValueReducers.Trace(
    |                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
240 |                     base: reducer,
241 |                     // Adding the willFetch handler to the reducer is handy: we
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:232:9: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
230 |         willTrackRegion: (@Sendable (DatabaseRegion) -> Void)? = nil,
231 |         databaseDidChange: (@Sendable () -> Void)? = nil,
232 |         didReceiveValue: (@Sendable (Reducer.Value) -> Void)? = nil,
    |         `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
233 |         didFail: (@Sendable (Error) -> Void)? = nil,
234 |         didCancel: (@Sendable () -> Void)? = nil)
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:358:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
356 |     {
357 |         AsyncValueObservation(bufferingPolicy: bufferingPolicy) { onError, onChange in
358 |             self.start(in: reader, scheduling: scheduler, onError: onError, onChange: onChange)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
359 |         }
360 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:350:17: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
348 |     /// - parameter bufferingPolicy: see the documntation
349 |     ///   of `AsyncThrowingStream`.
350 |     public func values(
    |                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
351 |         in reader: any DatabaseReader,
352 |         scheduling scheduler: some ValueObservationScheduler = .task,
[167/172] Compiling GRDB ValueObservation.swift
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:351:59: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
349 |         // open until we grab a write access, and compare the database versions.
350 |         databaseAccess.dbPool.asyncWALSnapshotTransaction { result in
351 |             let (isNotifying, databaseAccess) = self.lock.synchronized {
    |                                                           `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
352 |                 (self.notificationCallbacks != nil, self.databaseAccess)
353 |             }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:367:32: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
365 |                         let db = try dbResult.get()
366 |
367 |                         switch self.trackingMode {
    |                                `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
368 |                         case let .constantRegion(regions):
369 |                             fetchedValue = try databaseAccess.fetch(db)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:383:47: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
381 |                         // a database dispatch queue longer than necessary.
382 |                         self.reduceQueue.async {
383 |                             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
384 |                             guard isNotifying else { return /* Cancelled */ }
385 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:393:52: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
391 |                                 // Notify
392 |                                 self.scheduler.schedule {
393 |                                     let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
394 |                                     guard let onChange else { return /* Cancelled */ }
395 |                                     onChange(initialValue)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:444:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
442 |
443 |         databaseAccess.dbPool.asyncWriteWithoutTransaction { writerDB in
444 |             let events = self.lock.synchronized { self.notificationCallbacks?.events }
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
445 |             guard let events else { return /* Cancelled */ }
446 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:494:47: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
492 |                         // between transactions and notifications!
493 |                         self.reduceQueue.async {
494 |                             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
495 |                             guard isNotifying else { return /* Cancelled */ }
496 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:503:56: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
501 |                                 if let value {
502 |                                     self.scheduler.schedule {
503 |                                         let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                                        `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
504 |                                         guard let onChange else { return /* Cancelled */ }
505 |                                         onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:511:37: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
509 |                                 let dbPool = self.lock.synchronized { self.databaseAccess?.dbPool }
510 |                                 dbPool?.asyncWriteWithoutTransaction { writerDB in
511 |                                     self.stopDatabaseObservation(writerDB)
    |                                     `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
512 |                                 }
513 |                                 self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:590:31: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
588 |         // transaction to complete.
589 |         databaseAccess.dbPool.asyncRead { dbResult in
590 |             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
591 |             guard isNotifying else { return /* Cancelled */ }
592 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:584:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
582 |     ///
583 |     /// Unlike `syncStartWithoutWALSnapshot()`, this method does notify the initial value or error.
584 |     private func asyncStartWithoutWALSnapshot(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
585 |         // Start from a read access. The whole point of using a DatabasePool
586 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:615:39: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
613 |                 // a database dispatch queue longer than necessary.
614 |                 self.reduceQueue.async {
615 |                     let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                       `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
616 |                     guard isNotifying else { return /* Cancelled */ }
617 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:584:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
582 |     ///
583 |     /// Unlike `syncStartWithoutWALSnapshot()`, this method does notify the initial value or error.
584 |     private func asyncStartWithoutWALSnapshot(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
585 |         // Start from a read access. The whole point of using a DatabasePool
586 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:625:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
623 |                         // Notify
624 |                         self.scheduler.schedule {
625 |                             let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
626 |                             guard let onChange else { return /* Cancelled */ }
627 |                             onChange(initialValue)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:584:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
582 |     ///
583 |     /// Unlike `syncStartWithoutWALSnapshot()`, this method does notify the initial value or error.
584 |     private func asyncStartWithoutWALSnapshot(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
585 |         // Start from a read access. The whole point of using a DatabasePool
586 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:649:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
647 |     {
648 |         databaseAccess.dbPool.asyncWriteWithoutTransaction { writerDB in
649 |             let events = self.lock.synchronized { self.notificationCallbacks?.events }
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
650 |             guard let events else { return /* Cancelled */ }
651 |             events.databaseDidChange?()
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:681:43: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
679 |                     // between transactions and notifications!
680 |                     self.reduceQueue.async {
681 |                         let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                           `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
682 |                         guard isNotifying else { return /* Cancelled */ }
683 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:690:52: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
688 |                             if let value {
689 |                                 self.scheduler.schedule {
690 |                                     let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
691 |                                     guard let onChange else { return /* Cancelled */ }
692 |                                     onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:698:33: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
696 |                             let dbPool = self.lock.synchronized { self.databaseAccess?.dbPool }
697 |                             dbPool?.asyncWriteWithoutTransaction { writerDB in
698 |                                 self.stopDatabaseObservation(writerDB)
    |                                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
699 |                             }
700 |                             self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:809:31: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
807 |     private func asyncFetch(databaseAccess: DatabaseAccess) {
808 |         databaseAccess.dbPool.asyncRead { [self] dbResult in
809 |             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
810 |             guard isNotifying else { return /* Cancelled */ }
811 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:808:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
806 |
807 |     private func asyncFetch(databaseAccess: DatabaseAccess) {
808 |         databaseAccess.dbPool.asyncRead { [self] dbResult in
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
809 |             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
810 |             guard isNotifying else { return /* Cancelled */ }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:837:33: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
835 |     private func reduce(_ fetchResult: Result<Reducer.Fetcher.Value, Error>) {
836 |         // Assume this value can safely be sent to the reduce queue.
837 |         nonisolated(unsafe) let fetchResult = fetchResult
    |                                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
838 |
839 |         reduceQueue.async {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:843:35: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
841 |                 let fetchedValue = try fetchResult.get()
842 |
843 |                 let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                   `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
844 |                 guard isNotifying else { return /* Cancelled */ }
845 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:851:40: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
849 |                 if let value {
850 |                     self.scheduler.schedule {
851 |                         let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                        `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
852 |                         guard let onChange else { return /* Cancelled */ }
853 |                         onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:835:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
833 |     }
834 |
835 |     private func reduce(_ fetchResult: Result<Reducer.Fetcher.Value, Error>) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
836 |         // Assume this value can safely be sent to the reduce queue.
837 |         nonisolated(unsafe) let fetchResult = fetchResult
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:859:21: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
857 |                 let dbPool = self.lock.synchronized { self.databaseAccess?.dbPool }
858 |                 dbPool?.asyncWriteWithoutTransaction { writerDB in
859 |                     self.stopDatabaseObservation(writerDB)
    |                     `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
860 |                 }
861 |                 self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:835:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
833 |     }
834 |
835 |     private func reduce(_ fetchResult: Result<Reducer.Fetcher.Value, Error>) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
836 |         // Assume this value can safely be sent to the reduce queue.
837 |         nonisolated(unsafe) let fetchResult = fetchResult
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:893:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
891 |         guard let dbPool else { return /* Failed */ }
892 |         dbPool.asyncWriteWithoutTransaction { db in
893 |             self.stopDatabaseObservation(db)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
894 |         }
895 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:875:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
873 |
874 | extension ValueConcurrentObserver: DatabaseCancellable {
875 |     func cancel() {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
876 |         // Notify cancellation
877 |         let (events, dbPool): (ValueObservationEvents?, DatabasePool?) = lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:899:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
897 |     func notifyError(_ error: Error) {
898 |         scheduler.schedule {
899 |             let events = self.lock.synchronized {
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
900 |                 let events = self.notificationCallbacks?.events
901 |                 self.notificationCallbacks = nil
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:897:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
895 |     }
896 |
897 |     func notifyError(_ error: Error) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
898 |         scheduler.schedule {
899 |             let events = self.lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:255:47: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
253 |             do {
254 |                 // Fetch & Start observing the database
255 |                 guard let _fetchedValue = try self.fetchAndStartObservation(db) else {
    |                                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
256 |                     return /* Cancelled */
257 |                 }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:269:39: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
267 |                 // between transactions and notifications!
268 |                 self.reduceQueue.async {
269 |                     let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                       `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
270 |                     guard isNotifying else { return /* Cancelled */ }
271 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:279:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
277 |                         // Notify
278 |                         self.scheduler.schedule {
279 |                             let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
280 |                             guard let onChange else { return /* Cancelled */ }
281 |                             onChange(initialValue)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:286:29: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
284 |                         let writer = self.lock.synchronized { self.databaseAccess?.writer }
285 |                         writer?.asyncWriteWithoutTransaction { db in
286 |                             self.stopDatabaseObservation(db)
    |                             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
287 |                         }
288 |                         self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:413:35: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
411 |             // transactions and notifications!
412 |             reduceQueue.async {
413 |                 let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                   `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
414 |                 guard isNotifying else { return /* Cancelled */ }
415 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:366:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
364 |     }
365 |
366 |     func databaseDidCommit(_ db: Database) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
367 |         // Ignore transaction unless database was modified
368 |         guard observationState.isModified else { return }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:422:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
420 |                     if let value {
421 |                         self.scheduler.schedule {
422 |                             let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
423 |                             guard let onChange else { return /* Cancelled */ }
424 |                             onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:366:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
364 |     }
365 |
366 |     func databaseDidCommit(_ db: Database) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
367 |         // Ignore transaction unless database was modified
368 |         guard observationState.isModified else { return }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:430:25: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
428 |                     let writer = self.lock.synchronized { self.databaseAccess?.writer }
429 |                     writer?.asyncWriteWithoutTransaction { db in
430 |                         self.stopDatabaseObservation(db)
    |                         `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
431 |                     }
432 |                     self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:366:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
364 |     }
365 |
366 |     func databaseDidCommit(_ db: Database) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
367 |         // Ignore transaction unless database was modified
368 |         guard observationState.isModified else { return }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:468:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
466 |         guard let writer else { return /* Failed */ }
467 |         writer.asyncWriteWithoutTransaction { db in
468 |             self.stopDatabaseObservation(db)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
469 |         }
470 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:450:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
448 |
449 | extension ValueWriteOnlyObserver: DatabaseCancellable {
450 |     func cancel() {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
451 |         // Notify cancellation
452 |         let (events, writer) = lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:474:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
472 |     func notifyError(_ error: Error) {
473 |         scheduler.schedule {
474 |             let events = self.lock.synchronized {
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
475 |                 let events = self.notificationCallbacks?.events
476 |                 self.notificationCallbacks = nil
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:472:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
470 |     }
471 |
472 |     func notifyError(_ error: Error) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
473 |         scheduler.schedule {
474 |             let events = self.lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/Map.swift:24:36: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
22 |     -> ValueObservation<ValueReducers.Map<Reducer, T>>
23 |     {
24 |         mapReducer { ValueReducers.Map($0, transform) }
   |                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
25 |     }
26 | }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/Map.swift:21:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
19 |     /// - parameter transform: A closure that takes one value as its parameter
20 |     ///   and returns a new value.
21 |     public func map<T>(_ transform: @escaping @Sendable (Reducer.Value) throws -> T)
   |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
22 |     -> ValueObservation<ValueReducers.Map<Reducer, T>>
23 |     {
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:23:43: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 21 |         nonisolated(unsafe) let predicate = predicate
 22 |
 23 |         return mapReducer { ValueReducers.RemoveDuplicates($0, predicate: predicate) }
    |                                           `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 24 |     }
 25 | }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:21:33: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 19 |         // Anyway if we would not accept non-sendable closures, we could
 20 |         // not deal with `Equatable.==`...
 21 |         nonisolated(unsafe) let predicate = predicate
    |                                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 22 |
 23 |         return mapReducer { ValueReducers.RemoveDuplicates($0, predicate: predicate) }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:73:36: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 71 |     -> ValueObservation<ValueReducers.RemoveDuplicates<Reducer>>
 72 |     {
 73 |         mapReducer { ValueReducers.RemoveDuplicates($0, predicate: ==) }
    |                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 74 |     }
 75 | }
/host/spi-builder-workspace/GRDB/ValueObservation/SharedValueObservation.swift:127:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
125 |     {
126 |         SharedValueObservation(scheduling: scheduler, extent: extent) { onError, onChange in
127 |             self.start(in: reader, scheduling: scheduler, onError: onError, onChange: onChange)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
128 |         }
129 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/SharedValueObservation.swift:119:17: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
117 |     /// - parameter extent: The extent of the shared database observation.
118 |     /// - returns: A `SharedValueObservation`
119 |     public func shared(
    |                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
120 |         in reader: any DatabaseReader,
121 |         scheduling scheduler: some ValueObservationScheduler = .async(onQueue: .main),
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:42:28: warning: capture of non-Sendable type 'R.Type' in an isolated closure
 40 |             requiresWriteAccess: requiresWriteAccess,
 41 |             trackingMode: trackingMode,
 42 |             makeReducer: { transform(makeReducer()) })
    |                            `- warning: capture of non-Sendable type 'R.Type' in an isolated closure
 43 |     }
 44 | }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:42:28: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 40 |             requiresWriteAccess: requiresWriteAccess,
 41 |             trackingMode: trackingMode,
 42 |             makeReducer: { transform(makeReducer()) })
    |                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 43 |     }
 44 | }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:36:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 34 |
 35 |     /// Returns a ValueObservation with a transformed reducer.
 36 |     func mapReducer<R>(_ transform: @escaping @Sendable (Reducer) -> R) -> ValueObservation<R> {
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 37 |         let makeReducer = self.makeReducer
 38 |         return ValueObservation<R>(
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:36:26: warning: capture of non-Sendable type 'R.Type' in an isolated closure
 34 |
 35 |     /// Returns a ValueObservation with a transformed reducer.
 36 |     func mapReducer<R>(_ transform: @escaping @Sendable (Reducer) -> R) -> ValueObservation<R> {
    |                          `- warning: capture of non-Sendable type 'R.Type' in an isolated closure
 37 |         let makeReducer = self.makeReducer
 38 |         return ValueObservation<R>(
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:186:9: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
184 |         scheduling scheduler: some ValueObservationMainActorScheduler = .mainActor,
185 |         onError: @escaping @MainActor (Error) -> Void,
186 |         onChange: @escaping @MainActor (Reducer.Value) -> Void)
    |         `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
187 |     -> AnyDatabaseCancellable
188 |     where Reducer: ValueReducer
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:239:31: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
237 |         self
238 |             .mapReducer { reducer in
239 |                 ValueReducers.Trace(
    |                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
240 |                     base: reducer,
241 |                     // Adding the willFetch handler to the reducer is handy: we
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:232:9: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
230 |         willTrackRegion: (@Sendable (DatabaseRegion) -> Void)? = nil,
231 |         databaseDidChange: (@Sendable () -> Void)? = nil,
232 |         didReceiveValue: (@Sendable (Reducer.Value) -> Void)? = nil,
    |         `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
233 |         didFail: (@Sendable (Error) -> Void)? = nil,
234 |         didCancel: (@Sendable () -> Void)? = nil)
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:358:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
356 |     {
357 |         AsyncValueObservation(bufferingPolicy: bufferingPolicy) { onError, onChange in
358 |             self.start(in: reader, scheduling: scheduler, onError: onError, onChange: onChange)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
359 |         }
360 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:350:17: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
348 |     /// - parameter bufferingPolicy: see the documntation
349 |     ///   of `AsyncThrowingStream`.
350 |     public func values(
    |                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
351 |         in reader: any DatabaseReader,
352 |         scheduling scheduler: some ValueObservationScheduler = .task,
[168/172] Compiling GRDB ValueObservationScheduler.swift
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:351:59: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
349 |         // open until we grab a write access, and compare the database versions.
350 |         databaseAccess.dbPool.asyncWALSnapshotTransaction { result in
351 |             let (isNotifying, databaseAccess) = self.lock.synchronized {
    |                                                           `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
352 |                 (self.notificationCallbacks != nil, self.databaseAccess)
353 |             }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:367:32: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
365 |                         let db = try dbResult.get()
366 |
367 |                         switch self.trackingMode {
    |                                `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
368 |                         case let .constantRegion(regions):
369 |                             fetchedValue = try databaseAccess.fetch(db)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:383:47: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
381 |                         // a database dispatch queue longer than necessary.
382 |                         self.reduceQueue.async {
383 |                             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
384 |                             guard isNotifying else { return /* Cancelled */ }
385 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:393:52: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
391 |                                 // Notify
392 |                                 self.scheduler.schedule {
393 |                                     let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
394 |                                     guard let onChange else { return /* Cancelled */ }
395 |                                     onChange(initialValue)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:444:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
442 |
443 |         databaseAccess.dbPool.asyncWriteWithoutTransaction { writerDB in
444 |             let events = self.lock.synchronized { self.notificationCallbacks?.events }
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
445 |             guard let events else { return /* Cancelled */ }
446 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:494:47: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
492 |                         // between transactions and notifications!
493 |                         self.reduceQueue.async {
494 |                             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
495 |                             guard isNotifying else { return /* Cancelled */ }
496 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:503:56: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
501 |                                 if let value {
502 |                                     self.scheduler.schedule {
503 |                                         let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                                        `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
504 |                                         guard let onChange else { return /* Cancelled */ }
505 |                                         onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:511:37: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
509 |                                 let dbPool = self.lock.synchronized { self.databaseAccess?.dbPool }
510 |                                 dbPool?.asyncWriteWithoutTransaction { writerDB in
511 |                                     self.stopDatabaseObservation(writerDB)
    |                                     `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
512 |                                 }
513 |                                 self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:590:31: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
588 |         // transaction to complete.
589 |         databaseAccess.dbPool.asyncRead { dbResult in
590 |             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
591 |             guard isNotifying else { return /* Cancelled */ }
592 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:584:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
582 |     ///
583 |     /// Unlike `syncStartWithoutWALSnapshot()`, this method does notify the initial value or error.
584 |     private func asyncStartWithoutWALSnapshot(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
585 |         // Start from a read access. The whole point of using a DatabasePool
586 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:615:39: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
613 |                 // a database dispatch queue longer than necessary.
614 |                 self.reduceQueue.async {
615 |                     let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                       `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
616 |                     guard isNotifying else { return /* Cancelled */ }
617 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:584:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
582 |     ///
583 |     /// Unlike `syncStartWithoutWALSnapshot()`, this method does notify the initial value or error.
584 |     private func asyncStartWithoutWALSnapshot(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
585 |         // Start from a read access. The whole point of using a DatabasePool
586 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:625:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
623 |                         // Notify
624 |                         self.scheduler.schedule {
625 |                             let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
626 |                             guard let onChange else { return /* Cancelled */ }
627 |                             onChange(initialValue)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:584:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
582 |     ///
583 |     /// Unlike `syncStartWithoutWALSnapshot()`, this method does notify the initial value or error.
584 |     private func asyncStartWithoutWALSnapshot(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
585 |         // Start from a read access. The whole point of using a DatabasePool
586 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:649:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
647 |     {
648 |         databaseAccess.dbPool.asyncWriteWithoutTransaction { writerDB in
649 |             let events = self.lock.synchronized { self.notificationCallbacks?.events }
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
650 |             guard let events else { return /* Cancelled */ }
651 |             events.databaseDidChange?()
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:681:43: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
679 |                     // between transactions and notifications!
680 |                     self.reduceQueue.async {
681 |                         let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                           `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
682 |                         guard isNotifying else { return /* Cancelled */ }
683 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:690:52: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
688 |                             if let value {
689 |                                 self.scheduler.schedule {
690 |                                     let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
691 |                                     guard let onChange else { return /* Cancelled */ }
692 |                                     onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:698:33: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
696 |                             let dbPool = self.lock.synchronized { self.databaseAccess?.dbPool }
697 |                             dbPool?.asyncWriteWithoutTransaction { writerDB in
698 |                                 self.stopDatabaseObservation(writerDB)
    |                                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
699 |                             }
700 |                             self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:809:31: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
807 |     private func asyncFetch(databaseAccess: DatabaseAccess) {
808 |         databaseAccess.dbPool.asyncRead { [self] dbResult in
809 |             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
810 |             guard isNotifying else { return /* Cancelled */ }
811 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:808:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
806 |
807 |     private func asyncFetch(databaseAccess: DatabaseAccess) {
808 |         databaseAccess.dbPool.asyncRead { [self] dbResult in
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
809 |             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
810 |             guard isNotifying else { return /* Cancelled */ }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:837:33: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
835 |     private func reduce(_ fetchResult: Result<Reducer.Fetcher.Value, Error>) {
836 |         // Assume this value can safely be sent to the reduce queue.
837 |         nonisolated(unsafe) let fetchResult = fetchResult
    |                                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
838 |
839 |         reduceQueue.async {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:843:35: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
841 |                 let fetchedValue = try fetchResult.get()
842 |
843 |                 let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                   `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
844 |                 guard isNotifying else { return /* Cancelled */ }
845 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:851:40: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
849 |                 if let value {
850 |                     self.scheduler.schedule {
851 |                         let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                        `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
852 |                         guard let onChange else { return /* Cancelled */ }
853 |                         onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:835:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
833 |     }
834 |
835 |     private func reduce(_ fetchResult: Result<Reducer.Fetcher.Value, Error>) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
836 |         // Assume this value can safely be sent to the reduce queue.
837 |         nonisolated(unsafe) let fetchResult = fetchResult
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:859:21: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
857 |                 let dbPool = self.lock.synchronized { self.databaseAccess?.dbPool }
858 |                 dbPool?.asyncWriteWithoutTransaction { writerDB in
859 |                     self.stopDatabaseObservation(writerDB)
    |                     `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
860 |                 }
861 |                 self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:835:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
833 |     }
834 |
835 |     private func reduce(_ fetchResult: Result<Reducer.Fetcher.Value, Error>) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
836 |         // Assume this value can safely be sent to the reduce queue.
837 |         nonisolated(unsafe) let fetchResult = fetchResult
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:893:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
891 |         guard let dbPool else { return /* Failed */ }
892 |         dbPool.asyncWriteWithoutTransaction { db in
893 |             self.stopDatabaseObservation(db)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
894 |         }
895 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:875:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
873 |
874 | extension ValueConcurrentObserver: DatabaseCancellable {
875 |     func cancel() {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
876 |         // Notify cancellation
877 |         let (events, dbPool): (ValueObservationEvents?, DatabasePool?) = lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:899:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
897 |     func notifyError(_ error: Error) {
898 |         scheduler.schedule {
899 |             let events = self.lock.synchronized {
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
900 |                 let events = self.notificationCallbacks?.events
901 |                 self.notificationCallbacks = nil
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:897:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
895 |     }
896 |
897 |     func notifyError(_ error: Error) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
898 |         scheduler.schedule {
899 |             let events = self.lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:255:47: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
253 |             do {
254 |                 // Fetch & Start observing the database
255 |                 guard let _fetchedValue = try self.fetchAndStartObservation(db) else {
    |                                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
256 |                     return /* Cancelled */
257 |                 }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:269:39: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
267 |                 // between transactions and notifications!
268 |                 self.reduceQueue.async {
269 |                     let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                       `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
270 |                     guard isNotifying else { return /* Cancelled */ }
271 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:279:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
277 |                         // Notify
278 |                         self.scheduler.schedule {
279 |                             let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
280 |                             guard let onChange else { return /* Cancelled */ }
281 |                             onChange(initialValue)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:286:29: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
284 |                         let writer = self.lock.synchronized { self.databaseAccess?.writer }
285 |                         writer?.asyncWriteWithoutTransaction { db in
286 |                             self.stopDatabaseObservation(db)
    |                             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
287 |                         }
288 |                         self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:413:35: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
411 |             // transactions and notifications!
412 |             reduceQueue.async {
413 |                 let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                   `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
414 |                 guard isNotifying else { return /* Cancelled */ }
415 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:366:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
364 |     }
365 |
366 |     func databaseDidCommit(_ db: Database) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
367 |         // Ignore transaction unless database was modified
368 |         guard observationState.isModified else { return }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:422:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
420 |                     if let value {
421 |                         self.scheduler.schedule {
422 |                             let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
423 |                             guard let onChange else { return /* Cancelled */ }
424 |                             onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:366:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
364 |     }
365 |
366 |     func databaseDidCommit(_ db: Database) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
367 |         // Ignore transaction unless database was modified
368 |         guard observationState.isModified else { return }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:430:25: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
428 |                     let writer = self.lock.synchronized { self.databaseAccess?.writer }
429 |                     writer?.asyncWriteWithoutTransaction { db in
430 |                         self.stopDatabaseObservation(db)
    |                         `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
431 |                     }
432 |                     self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:366:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
364 |     }
365 |
366 |     func databaseDidCommit(_ db: Database) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
367 |         // Ignore transaction unless database was modified
368 |         guard observationState.isModified else { return }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:468:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
466 |         guard let writer else { return /* Failed */ }
467 |         writer.asyncWriteWithoutTransaction { db in
468 |             self.stopDatabaseObservation(db)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
469 |         }
470 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:450:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
448 |
449 | extension ValueWriteOnlyObserver: DatabaseCancellable {
450 |     func cancel() {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
451 |         // Notify cancellation
452 |         let (events, writer) = lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:474:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
472 |     func notifyError(_ error: Error) {
473 |         scheduler.schedule {
474 |             let events = self.lock.synchronized {
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
475 |                 let events = self.notificationCallbacks?.events
476 |                 self.notificationCallbacks = nil
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:472:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
470 |     }
471 |
472 |     func notifyError(_ error: Error) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
473 |         scheduler.schedule {
474 |             let events = self.lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/Map.swift:24:36: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
22 |     -> ValueObservation<ValueReducers.Map<Reducer, T>>
23 |     {
24 |         mapReducer { ValueReducers.Map($0, transform) }
   |                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
25 |     }
26 | }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/Map.swift:21:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
19 |     /// - parameter transform: A closure that takes one value as its parameter
20 |     ///   and returns a new value.
21 |     public func map<T>(_ transform: @escaping @Sendable (Reducer.Value) throws -> T)
   |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
22 |     -> ValueObservation<ValueReducers.Map<Reducer, T>>
23 |     {
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:23:43: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 21 |         nonisolated(unsafe) let predicate = predicate
 22 |
 23 |         return mapReducer { ValueReducers.RemoveDuplicates($0, predicate: predicate) }
    |                                           `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 24 |     }
 25 | }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:21:33: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 19 |         // Anyway if we would not accept non-sendable closures, we could
 20 |         // not deal with `Equatable.==`...
 21 |         nonisolated(unsafe) let predicate = predicate
    |                                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 22 |
 23 |         return mapReducer { ValueReducers.RemoveDuplicates($0, predicate: predicate) }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:73:36: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 71 |     -> ValueObservation<ValueReducers.RemoveDuplicates<Reducer>>
 72 |     {
 73 |         mapReducer { ValueReducers.RemoveDuplicates($0, predicate: ==) }
    |                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 74 |     }
 75 | }
/host/spi-builder-workspace/GRDB/ValueObservation/SharedValueObservation.swift:127:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
125 |     {
126 |         SharedValueObservation(scheduling: scheduler, extent: extent) { onError, onChange in
127 |             self.start(in: reader, scheduling: scheduler, onError: onError, onChange: onChange)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
128 |         }
129 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/SharedValueObservation.swift:119:17: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
117 |     /// - parameter extent: The extent of the shared database observation.
118 |     /// - returns: A `SharedValueObservation`
119 |     public func shared(
    |                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
120 |         in reader: any DatabaseReader,
121 |         scheduling scheduler: some ValueObservationScheduler = .async(onQueue: .main),
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:42:28: warning: capture of non-Sendable type 'R.Type' in an isolated closure
 40 |             requiresWriteAccess: requiresWriteAccess,
 41 |             trackingMode: trackingMode,
 42 |             makeReducer: { transform(makeReducer()) })
    |                            `- warning: capture of non-Sendable type 'R.Type' in an isolated closure
 43 |     }
 44 | }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:42:28: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 40 |             requiresWriteAccess: requiresWriteAccess,
 41 |             trackingMode: trackingMode,
 42 |             makeReducer: { transform(makeReducer()) })
    |                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 43 |     }
 44 | }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:36:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 34 |
 35 |     /// Returns a ValueObservation with a transformed reducer.
 36 |     func mapReducer<R>(_ transform: @escaping @Sendable (Reducer) -> R) -> ValueObservation<R> {
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 37 |         let makeReducer = self.makeReducer
 38 |         return ValueObservation<R>(
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:36:26: warning: capture of non-Sendable type 'R.Type' in an isolated closure
 34 |
 35 |     /// Returns a ValueObservation with a transformed reducer.
 36 |     func mapReducer<R>(_ transform: @escaping @Sendable (Reducer) -> R) -> ValueObservation<R> {
    |                          `- warning: capture of non-Sendable type 'R.Type' in an isolated closure
 37 |         let makeReducer = self.makeReducer
 38 |         return ValueObservation<R>(
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:186:9: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
184 |         scheduling scheduler: some ValueObservationMainActorScheduler = .mainActor,
185 |         onError: @escaping @MainActor (Error) -> Void,
186 |         onChange: @escaping @MainActor (Reducer.Value) -> Void)
    |         `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
187 |     -> AnyDatabaseCancellable
188 |     where Reducer: ValueReducer
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:239:31: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
237 |         self
238 |             .mapReducer { reducer in
239 |                 ValueReducers.Trace(
    |                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
240 |                     base: reducer,
241 |                     // Adding the willFetch handler to the reducer is handy: we
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:232:9: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
230 |         willTrackRegion: (@Sendable (DatabaseRegion) -> Void)? = nil,
231 |         databaseDidChange: (@Sendable () -> Void)? = nil,
232 |         didReceiveValue: (@Sendable (Reducer.Value) -> Void)? = nil,
    |         `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
233 |         didFail: (@Sendable (Error) -> Void)? = nil,
234 |         didCancel: (@Sendable () -> Void)? = nil)
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:358:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
356 |     {
357 |         AsyncValueObservation(bufferingPolicy: bufferingPolicy) { onError, onChange in
358 |             self.start(in: reader, scheduling: scheduler, onError: onError, onChange: onChange)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
359 |         }
360 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:350:17: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
348 |     /// - parameter bufferingPolicy: see the documntation
349 |     ///   of `AsyncThrowingStream`.
350 |     public func values(
    |                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
351 |         in reader: any DatabaseReader,
352 |         scheduling scheduler: some ValueObservationScheduler = .task,
[169/172] Compiling GRDB resource_bundle_accessor.swift
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:351:59: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
349 |         // open until we grab a write access, and compare the database versions.
350 |         databaseAccess.dbPool.asyncWALSnapshotTransaction { result in
351 |             let (isNotifying, databaseAccess) = self.lock.synchronized {
    |                                                           `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
352 |                 (self.notificationCallbacks != nil, self.databaseAccess)
353 |             }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:367:32: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
365 |                         let db = try dbResult.get()
366 |
367 |                         switch self.trackingMode {
    |                                `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
368 |                         case let .constantRegion(regions):
369 |                             fetchedValue = try databaseAccess.fetch(db)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:383:47: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
381 |                         // a database dispatch queue longer than necessary.
382 |                         self.reduceQueue.async {
383 |                             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
384 |                             guard isNotifying else { return /* Cancelled */ }
385 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:393:52: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
391 |                                 // Notify
392 |                                 self.scheduler.schedule {
393 |                                     let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
394 |                                     guard let onChange else { return /* Cancelled */ }
395 |                                     onChange(initialValue)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:341:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
339 |     ///
340 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
341 |     private func asyncStart(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
342 |         // Start from a read access. The whole point of using a DatabasePool
343 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:444:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
442 |
443 |         databaseAccess.dbPool.asyncWriteWithoutTransaction { writerDB in
444 |             let events = self.lock.synchronized { self.notificationCallbacks?.events }
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
445 |             guard let events else { return /* Cancelled */ }
446 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:494:47: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
492 |                         // between transactions and notifications!
493 |                         self.reduceQueue.async {
494 |                             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
495 |                             guard isNotifying else { return /* Cancelled */ }
496 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:503:56: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
501 |                                 if let value {
502 |                                     self.scheduler.schedule {
503 |                                         let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                                        `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
504 |                                         guard let onChange else { return /* Cancelled */ }
505 |                                         onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:511:37: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
509 |                                 let dbPool = self.lock.synchronized { self.databaseAccess?.dbPool }
510 |                                 dbPool?.asyncWriteWithoutTransaction { writerDB in
511 |                                     self.stopDatabaseObservation(writerDB)
    |                                     `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
512 |                                 }
513 |                                 self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:423:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
421 |     }
422 |
423 |     private func asyncStartObservation(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
424 |         from databaseAccess: DatabaseAccess,
425 |         initialFetchTransaction: WALSnapshotTransaction,
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:590:31: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
588 |         // transaction to complete.
589 |         databaseAccess.dbPool.asyncRead { dbResult in
590 |             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
591 |             guard isNotifying else { return /* Cancelled */ }
592 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:584:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
582 |     ///
583 |     /// Unlike `syncStartWithoutWALSnapshot()`, this method does notify the initial value or error.
584 |     private func asyncStartWithoutWALSnapshot(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
585 |         // Start from a read access. The whole point of using a DatabasePool
586 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:615:39: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
613 |                 // a database dispatch queue longer than necessary.
614 |                 self.reduceQueue.async {
615 |                     let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                       `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
616 |                     guard isNotifying else { return /* Cancelled */ }
617 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:584:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
582 |     ///
583 |     /// Unlike `syncStartWithoutWALSnapshot()`, this method does notify the initial value or error.
584 |     private func asyncStartWithoutWALSnapshot(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
585 |         // Start from a read access. The whole point of using a DatabasePool
586 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:625:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
623 |                         // Notify
624 |                         self.scheduler.schedule {
625 |                             let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
626 |                             guard let onChange else { return /* Cancelled */ }
627 |                             onChange(initialValue)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:584:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
582 |     ///
583 |     /// Unlike `syncStartWithoutWALSnapshot()`, this method does notify the initial value or error.
584 |     private func asyncStartWithoutWALSnapshot(from databaseAccess: DatabaseAccess) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
585 |         // Start from a read access. The whole point of using a DatabasePool
586 |         // for observing the database is to be able to fetch the initial value
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:649:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
647 |     {
648 |         databaseAccess.dbPool.asyncWriteWithoutTransaction { writerDB in
649 |             let events = self.lock.synchronized { self.notificationCallbacks?.events }
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
650 |             guard let events else { return /* Cancelled */ }
651 |             events.databaseDidChange?()
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:681:43: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
679 |                     // between transactions and notifications!
680 |                     self.reduceQueue.async {
681 |                         let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                           `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
682 |                         guard isNotifying else { return /* Cancelled */ }
683 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:690:52: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
688 |                             if let value {
689 |                                 self.scheduler.schedule {
690 |                                     let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
691 |                                     guard let onChange else { return /* Cancelled */ }
692 |                                     onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:698:33: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
696 |                             let dbPool = self.lock.synchronized { self.databaseAccess?.dbPool }
697 |                             dbPool?.asyncWriteWithoutTransaction { writerDB in
698 |                                 self.stopDatabaseObservation(writerDB)
    |                                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
699 |                             }
700 |                             self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:644:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
642 |     }
643 |
644 |     private func asyncStartObservationWithoutWALSnapshot(
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
645 |         from databaseAccess: DatabaseAccess,
646 |         initialRegion: DatabaseRegion)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:809:31: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
807 |     private func asyncFetch(databaseAccess: DatabaseAccess) {
808 |         databaseAccess.dbPool.asyncRead { [self] dbResult in
809 |             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
810 |             guard isNotifying else { return /* Cancelled */ }
811 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:808:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
806 |
807 |     private func asyncFetch(databaseAccess: DatabaseAccess) {
808 |         databaseAccess.dbPool.asyncRead { [self] dbResult in
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
809 |             let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
810 |             guard isNotifying else { return /* Cancelled */ }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:837:33: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
835 |     private func reduce(_ fetchResult: Result<Reducer.Fetcher.Value, Error>) {
836 |         // Assume this value can safely be sent to the reduce queue.
837 |         nonisolated(unsafe) let fetchResult = fetchResult
    |                                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
838 |
839 |         reduceQueue.async {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:843:35: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
841 |                 let fetchedValue = try fetchResult.get()
842 |
843 |                 let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                   `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
844 |                 guard isNotifying else { return /* Cancelled */ }
845 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:851:40: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
849 |                 if let value {
850 |                     self.scheduler.schedule {
851 |                         let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                        `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
852 |                         guard let onChange else { return /* Cancelled */ }
853 |                         onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:835:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
833 |     }
834 |
835 |     private func reduce(_ fetchResult: Result<Reducer.Fetcher.Value, Error>) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
836 |         // Assume this value can safely be sent to the reduce queue.
837 |         nonisolated(unsafe) let fetchResult = fetchResult
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:859:21: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
857 |                 let dbPool = self.lock.synchronized { self.databaseAccess?.dbPool }
858 |                 dbPool?.asyncWriteWithoutTransaction { writerDB in
859 |                     self.stopDatabaseObservation(writerDB)
    |                     `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
860 |                 }
861 |                 self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:835:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
833 |     }
834 |
835 |     private func reduce(_ fetchResult: Result<Reducer.Fetcher.Value, Error>) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
836 |         // Assume this value can safely be sent to the reduce queue.
837 |         nonisolated(unsafe) let fetchResult = fetchResult
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:893:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
891 |         guard let dbPool else { return /* Failed */ }
892 |         dbPool.asyncWriteWithoutTransaction { db in
893 |             self.stopDatabaseObservation(db)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
894 |         }
895 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:875:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
873 |
874 | extension ValueConcurrentObserver: DatabaseCancellable {
875 |     func cancel() {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
876 |         // Notify cancellation
877 |         let (events, dbPool): (ValueObservationEvents?, DatabasePool?) = lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:899:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
897 |     func notifyError(_ error: Error) {
898 |         scheduler.schedule {
899 |             let events = self.lock.synchronized {
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
900 |                 let events = self.notificationCallbacks?.events
901 |                 self.notificationCallbacks = nil
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift:897:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
895 |     }
896 |
897 |     func notifyError(_ error: Error) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
898 |         scheduler.schedule {
899 |             let events = self.lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:255:47: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
253 |             do {
254 |                 // Fetch & Start observing the database
255 |                 guard let _fetchedValue = try self.fetchAndStartObservation(db) else {
    |                                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
256 |                     return /* Cancelled */
257 |                 }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:269:39: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
267 |                 // between transactions and notifications!
268 |                 self.reduceQueue.async {
269 |                     let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                       `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
270 |                     guard isNotifying else { return /* Cancelled */ }
271 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:279:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
277 |                         // Notify
278 |                         self.scheduler.schedule {
279 |                             let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
280 |                             guard let onChange else { return /* Cancelled */ }
281 |                             onChange(initialValue)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:286:29: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
284 |                         let writer = self.lock.synchronized { self.databaseAccess?.writer }
285 |                         writer?.asyncWriteWithoutTransaction { db in
286 |                             self.stopDatabaseObservation(db)
    |                             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
287 |                         }
288 |                         self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:249:18: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
247 |     ///
248 |     /// Unlike `syncStart()`, this method does notify the initial value or error.
249 |     private func asyncStart(from writer: Writer) {
    |                  `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
250 |         // Start from a write access, so that self can register as a
251 |         // transaction observer.
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:413:35: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
411 |             // transactions and notifications!
412 |             reduceQueue.async {
413 |                 let isNotifying = self.lock.synchronized { self.notificationCallbacks != nil }
    |                                   `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
414 |                 guard isNotifying else { return /* Cancelled */ }
415 |
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:366:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
364 |     }
365 |
366 |     func databaseDidCommit(_ db: Database) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
367 |         // Ignore transaction unless database was modified
368 |         guard observationState.isModified else { return }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:422:44: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
420 |                     if let value {
421 |                         self.scheduler.schedule {
422 |                             let onChange = self.lock.synchronized { self.notificationCallbacks?.onChange }
    |                                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
423 |                             guard let onChange else { return /* Cancelled */ }
424 |                             onChange(value)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:366:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
364 |     }
365 |
366 |     func databaseDidCommit(_ db: Database) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
367 |         // Ignore transaction unless database was modified
368 |         guard observationState.isModified else { return }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:430:25: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
428 |                     let writer = self.lock.synchronized { self.databaseAccess?.writer }
429 |                     writer?.asyncWriteWithoutTransaction { db in
430 |                         self.stopDatabaseObservation(db)
    |                         `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
431 |                     }
432 |                     self.notifyError(error)
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:366:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
364 |     }
365 |
366 |     func databaseDidCommit(_ db: Database) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
367 |         // Ignore transaction unless database was modified
368 |         guard observationState.isModified else { return }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:468:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
466 |         guard let writer else { return /* Failed */ }
467 |         writer.asyncWriteWithoutTransaction { db in
468 |             self.stopDatabaseObservation(db)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
469 |         }
470 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:450:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
448 |
449 | extension ValueWriteOnlyObserver: DatabaseCancellable {
450 |     func cancel() {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
451 |         // Notify cancellation
452 |         let (events, writer) = lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:474:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
472 |     func notifyError(_ error: Error) {
473 |         scheduler.schedule {
474 |             let events = self.lock.synchronized {
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
475 |                 let events = self.notificationCallbacks?.events
476 |                 self.notificationCallbacks = nil
/host/spi-builder-workspace/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift:472:10: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
470 |     }
471 |
472 |     func notifyError(_ error: Error) {
    |          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
473 |         scheduler.schedule {
474 |             let events = self.lock.synchronized {
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/Map.swift:24:36: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
22 |     -> ValueObservation<ValueReducers.Map<Reducer, T>>
23 |     {
24 |         mapReducer { ValueReducers.Map($0, transform) }
   |                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
25 |     }
26 | }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/Map.swift:21:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
19 |     /// - parameter transform: A closure that takes one value as its parameter
20 |     ///   and returns a new value.
21 |     public func map<T>(_ transform: @escaping @Sendable (Reducer.Value) throws -> T)
   |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
22 |     -> ValueObservation<ValueReducers.Map<Reducer, T>>
23 |     {
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:23:43: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 21 |         nonisolated(unsafe) let predicate = predicate
 22 |
 23 |         return mapReducer { ValueReducers.RemoveDuplicates($0, predicate: predicate) }
    |                                           `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 24 |     }
 25 | }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:21:33: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 19 |         // Anyway if we would not accept non-sendable closures, we could
 20 |         // not deal with `Equatable.==`...
 21 |         nonisolated(unsafe) let predicate = predicate
    |                                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 22 |
 23 |         return mapReducer { ValueReducers.RemoveDuplicates($0, predicate: predicate) }
/host/spi-builder-workspace/GRDB/ValueObservation/Reducers/RemoveDuplicates.swift:73:36: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 71 |     -> ValueObservation<ValueReducers.RemoveDuplicates<Reducer>>
 72 |     {
 73 |         mapReducer { ValueReducers.RemoveDuplicates($0, predicate: ==) }
    |                                    `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 74 |     }
 75 | }
/host/spi-builder-workspace/GRDB/ValueObservation/SharedValueObservation.swift:127:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
125 |     {
126 |         SharedValueObservation(scheduling: scheduler, extent: extent) { onError, onChange in
127 |             self.start(in: reader, scheduling: scheduler, onError: onError, onChange: onChange)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
128 |         }
129 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/SharedValueObservation.swift:119:17: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
117 |     /// - parameter extent: The extent of the shared database observation.
118 |     /// - returns: A `SharedValueObservation`
119 |     public func shared(
    |                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
120 |         in reader: any DatabaseReader,
121 |         scheduling scheduler: some ValueObservationScheduler = .async(onQueue: .main),
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:42:28: warning: capture of non-Sendable type 'R.Type' in an isolated closure
 40 |             requiresWriteAccess: requiresWriteAccess,
 41 |             trackingMode: trackingMode,
 42 |             makeReducer: { transform(makeReducer()) })
    |                            `- warning: capture of non-Sendable type 'R.Type' in an isolated closure
 43 |     }
 44 | }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:42:28: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 40 |             requiresWriteAccess: requiresWriteAccess,
 41 |             trackingMode: trackingMode,
 42 |             makeReducer: { transform(makeReducer()) })
    |                            `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 43 |     }
 44 | }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:36:26: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 34 |
 35 |     /// Returns a ValueObservation with a transformed reducer.
 36 |     func mapReducer<R>(_ transform: @escaping @Sendable (Reducer) -> R) -> ValueObservation<R> {
    |                          `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
 37 |         let makeReducer = self.makeReducer
 38 |         return ValueObservation<R>(
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:36:26: warning: capture of non-Sendable type 'R.Type' in an isolated closure
 34 |
 35 |     /// Returns a ValueObservation with a transformed reducer.
 36 |     func mapReducer<R>(_ transform: @escaping @Sendable (Reducer) -> R) -> ValueObservation<R> {
    |                          `- warning: capture of non-Sendable type 'R.Type' in an isolated closure
 37 |         let makeReducer = self.makeReducer
 38 |         return ValueObservation<R>(
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:186:9: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
184 |         scheduling scheduler: some ValueObservationMainActorScheduler = .mainActor,
185 |         onError: @escaping @MainActor (Error) -> Void,
186 |         onChange: @escaping @MainActor (Reducer.Value) -> Void)
    |         `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
187 |     -> AnyDatabaseCancellable
188 |     where Reducer: ValueReducer
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:239:31: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
237 |         self
238 |             .mapReducer { reducer in
239 |                 ValueReducers.Trace(
    |                               `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
240 |                     base: reducer,
241 |                     // Adding the willFetch handler to the reducer is handy: we
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:232:9: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
230 |         willTrackRegion: (@Sendable (DatabaseRegion) -> Void)? = nil,
231 |         databaseDidChange: (@Sendable () -> Void)? = nil,
232 |         didReceiveValue: (@Sendable (Reducer.Value) -> Void)? = nil,
    |         `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
233 |         didFail: (@Sendable (Error) -> Void)? = nil,
234 |         didCancel: (@Sendable () -> Void)? = nil)
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:358:13: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
356 |     {
357 |         AsyncValueObservation(bufferingPolicy: bufferingPolicy) { onError, onChange in
358 |             self.start(in: reader, scheduling: scheduler, onError: onError, onChange: onChange)
    |             `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
359 |         }
360 |     }
/host/spi-builder-workspace/GRDB/ValueObservation/ValueObservation.swift:350:17: warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
348 |     /// - parameter bufferingPolicy: see the documntation
349 |     ///   of `AsyncThrowingStream`.
350 |     public func values(
    |                 `- warning: capture of non-Sendable type 'Reducer.Type' in an isolated closure
351 |         in reader: any DatabaseReader,
352 |         scheduling scheduler: some ValueObservationScheduler = .task,
[170/173] Wrapping AST for GRDB for debugging
[171/173] Write Objects.LinkFileList
[172/173] Linking libGRDB-dynamic.so
Build complete! (40.62s)
Build complete.
{
  "default_localization" : "en",
  "dependencies" : [
  ],
  "manifest_display_name" : "GRDB",
  "name" : "GRDB",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "watchos",
      "version" : "7.0"
    }
  ],
  "products" : [
    {
      "name" : "GRDBSQLite",
      "targets" : [
        "GRDBSQLite"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "GRDB",
      "targets" : [
        "GRDB"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "GRDB-dynamic",
      "targets" : [
        "GRDB"
      ],
      "type" : {
        "library" : [
          "dynamic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "6"
  ],
  "targets" : [
    {
      "c99name" : "GRDBTests",
      "module_type" : "SwiftTarget",
      "name" : "GRDBTests",
      "path" : "Tests",
      "resources" : [
        {
          "path" : "/host/spi-builder-workspace/Tests/GRDBTests/Betty.jpeg",
          "rule" : {
            "copy" : {
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Tests/GRDBTests/InflectionsTests.json",
          "rule" : {
            "copy" : {
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Tests/GRDBTests/Issue1383.sqlite",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "CombineExpectations/PublisherExpectation.swift",
        "CombineExpectations/PublisherExpectations/AvailableElements.swift",
        "CombineExpectations/PublisherExpectations/Finished.swift",
        "CombineExpectations/PublisherExpectations/Inverted.swift",
        "CombineExpectations/PublisherExpectations/Map.swift",
        "CombineExpectations/PublisherExpectations/Next.swift",
        "CombineExpectations/PublisherExpectations/NextOne.swift",
        "CombineExpectations/PublisherExpectations/Prefix.swift",
        "CombineExpectations/PublisherExpectations/Recording.swift",
        "CombineExpectations/Recorder.swift",
        "CombineExpectations/RecordingError.swift",
        "GRDBCombineTests/DatabaseReaderReadPublisherTests.swift",
        "GRDBCombineTests/DatabaseRegionObservationPublisherTests.swift",
        "GRDBCombineTests/DatabaseWriterWritePublisherTests.swift",
        "GRDBCombineTests/Support.swift",
        "GRDBCombineTests/ValueObservationPublisherTests.swift",
        "GRDBTests/AnyCursorTests.swift",
        "GRDBTests/AssociationAggregateTests.swift",
        "GRDBTests/AssociationBelongsToDecodableRecordTests.swift",
        "GRDBTests/AssociationBelongsToFetchableRecordTests.swift",
        "GRDBTests/AssociationBelongsToRowScopeTests.swift",
        "GRDBTests/AssociationBelongsToSQLDerivationTests.swift",
        "GRDBTests/AssociationBelongsToSQLTests.swift",
        "GRDBTests/AssociationChainRowScopesTests.swift",
        "GRDBTests/AssociationChainSQLTests.swift",
        "GRDBTests/AssociationHasManyOrderingTests.swift",
        "GRDBTests/AssociationHasManyRowScopeTests.swift",
        "GRDBTests/AssociationHasManySQLTests.swift",
        "GRDBTests/AssociationHasManyThroughOrderingTests.swift",
        "GRDBTests/AssociationHasManyThroughRowScopeTests.swift",
        "GRDBTests/AssociationHasManyThroughSQLTests.swift",
        "GRDBTests/AssociationHasOneSQLDerivationTests.swift",
        "GRDBTests/AssociationHasOneSQLTests.swift",
        "GRDBTests/AssociationHasOneThroughDecodableRecordTests.swift",
        "GRDBTests/AssociationHasOneThroughFetchableRecordTests.swift",
        "GRDBTests/AssociationHasOneThroughRowScopeTests.swift",
        "GRDBTests/AssociationHasOneThroughSQLDerivationTests.swift",
        "GRDBTests/AssociationHasOneThroughSQLTests.swift",
        "GRDBTests/AssociationParallelDecodableRecordTests.swift",
        "GRDBTests/AssociationParallelRowScopesTests.swift",
        "GRDBTests/AssociationParallelSQLTests.swift",
        "GRDBTests/AssociationPrefetchingCodableRecordTests.swift",
        "GRDBTests/AssociationPrefetchingFetchableRecordTests.swift",
        "GRDBTests/AssociationPrefetchingObservationTests.swift",
        "GRDBTests/AssociationPrefetchingRelationTests.swift",
        "GRDBTests/AssociationPrefetchingRowTests.swift",
        "GRDBTests/AssociationPrefetchingSQLTests.swift",
        "GRDBTests/AssociationRowScopeSearchTests.swift",
        "GRDBTests/AssociationTableAliasTestsSQLTests.swift",
        "GRDBTests/AsyncSemaphore.swift",
        "GRDBTests/BackupTestCase.swift",
        "GRDBTests/CGFloatTests.swift",
        "GRDBTests/CaseInsensitiveIdentifierTests.swift",
        "GRDBTests/ColumnExpressionTests.swift",
        "GRDBTests/ColumnInfoTests.swift",
        "GRDBTests/CommonTableExpressionTests.swift",
        "GRDBTests/CompilationProtocolTests.swift",
        "GRDBTests/CompilationSubClassTests.swift",
        "GRDBTests/CursorTests.swift",
        "GRDBTests/DataMemoryTests.swift",
        "GRDBTests/DatabaseAbortedTransactionTests.swift",
        "GRDBTests/DatabaseAfterNextTransactionCommitTests.swift",
        "GRDBTests/DatabaseAggregateTests.swift",
        "GRDBTests/DatabaseCollationTests.swift",
        "GRDBTests/DatabaseColumnEncodingStrategyTests.swift",
        "GRDBTests/DatabaseConfigurationTests.swift",
        "GRDBTests/DatabaseCursorTests.swift",
        "GRDBTests/DatabaseDataDecodingStrategyTests.swift",
        "GRDBTests/DatabaseDataEncodingStrategyTests.swift",
        "GRDBTests/DatabaseDateDecodingStrategyTests.swift",
        "GRDBTests/DatabaseDateEncodingStrategyTests.swift",
        "GRDBTests/DatabaseDumpTests.swift",
        "GRDBTests/DatabaseErrorTests.swift",
        "GRDBTests/DatabaseFunctionTests.swift",
        "GRDBTests/DatabaseLogErrorTests.swift",
        "GRDBTests/DatabaseMigratorTests.swift",
        "GRDBTests/DatabasePoolBackupTests.swift",
        "GRDBTests/DatabasePoolCollationTests.swift",
        "GRDBTests/DatabasePoolConcurrencyTests.swift",
        "GRDBTests/DatabasePoolFunctionTests.swift",
        "GRDBTests/DatabasePoolReadOnlyTests.swift",
        "GRDBTests/DatabasePoolReleaseMemoryTests.swift",
        "GRDBTests/DatabasePoolSchemaCacheTests.swift",
        "GRDBTests/DatabasePoolTests.swift",
        "GRDBTests/DatabaseQueueBackupTests.swift",
        "GRDBTests/DatabaseQueueConcurrencyTests.swift",
        "GRDBTests/DatabaseQueueInMemoryCopyTests.swift",
        "GRDBTests/DatabaseQueueInMemoryTests.swift",
        "GRDBTests/DatabaseQueueReadOnlyTests.swift",
        "GRDBTests/DatabaseQueueReleaseMemoryTests.swift",
        "GRDBTests/DatabaseQueueSchemaCacheTests.swift",
        "GRDBTests/DatabaseQueueTemporaryCopyTests.swift",
        "GRDBTests/DatabaseQueueTests.swift",
        "GRDBTests/DatabaseReaderDumpTests.swift",
        "GRDBTests/DatabaseReaderTests.swift",
        "GRDBTests/DatabaseRegionObservationTests.swift",
        "GRDBTests/DatabaseRegionTests.swift",
        "GRDBTests/DatabaseSavepointTests.swift",
        "GRDBTests/DatabaseSnapshotPoolTests.swift",
        "GRDBTests/DatabaseSnapshotTests.swift",
        "GRDBTests/DatabaseSuspensionTests.swift",
        "GRDBTests/DatabaseTests.swift",
        "GRDBTests/DatabaseTimestampTests.swift",
        "GRDBTests/DatabaseTraceTests.swift",
        "GRDBTests/DatabaseUUIDEncodingStrategyTests.swift",
        "GRDBTests/DatabaseValueConversionErrorTests.swift",
        "GRDBTests/DatabaseValueConversionTests.swift",
        "GRDBTests/DatabaseValueConvertibleDecodableTests.swift",
        "GRDBTests/DatabaseValueConvertibleEncodableTests.swift",
        "GRDBTests/DatabaseValueConvertibleEscapingTests.swift",
        "GRDBTests/DatabaseValueConvertibleFetchTests.swift",
        "GRDBTests/DatabaseValueConvertibleSubclassTests.swift",
        "GRDBTests/DatabaseValueTests.swift",
        "GRDBTests/DatabaseWriterTests.swift",
        "GRDBTests/DerivableRequestTests.swift",
        "GRDBTests/DropFirstCursorTests.swift",
        "GRDBTests/DropWhileCursorTests.swift",
        "GRDBTests/EncryptionTests.swift",
        "GRDBTests/EnumeratedCursorTests.swift",
        "GRDBTests/FTS3PatternTests.swift",
        "GRDBTests/FTS3RecordTests.swift",
        "GRDBTests/FTS3TableBuilderTests.swift",
        "GRDBTests/FTS3TokenizerTests.swift",
        "GRDBTests/FTS4RecordTests.swift",
        "GRDBTests/FTS4TableBuilderTests.swift",
        "GRDBTests/FTS5CustomTokenizerTests.swift",
        "GRDBTests/FTS5PatternTests.swift",
        "GRDBTests/FTS5RecordTests.swift",
        "GRDBTests/FTS5TableBuilderTests.swift",
        "GRDBTests/FTS5TokenizerTests.swift",
        "GRDBTests/FTS5WrapperTokenizerTests.swift",
        "GRDBTests/FailureTestCase.swift",
        "GRDBTests/FetchRequestTests.swift",
        "GRDBTests/FetchableRecord+QueryInterfaceRequestTests.swift",
        "GRDBTests/FetchableRecordDecodableTests.swift",
        "GRDBTests/FetchableRecordTests.swift",
        "GRDBTests/FilterCursorTests.swift",
        "GRDBTests/FlattenCursorTests.swift",
        "GRDBTests/ForeignKeyDefinitionTests.swift",
        "GRDBTests/ForeignKeyInfoTests.swift",
        "GRDBTests/FoundationDataTests.swift",
        "GRDBTests/FoundationDateComponentsTests.swift",
        "GRDBTests/FoundationDateTests.swift",
        "GRDBTests/FoundationDecimalTests.swift",
        "GRDBTests/FoundationNSDataTests.swift",
        "GRDBTests/FoundationNSDateTests.swift",
        "GRDBTests/FoundationNSDecimalNumberTests.swift",
        "GRDBTests/FoundationNSNullTests.swift",
        "GRDBTests/FoundationNSNumberTests.swift",
        "GRDBTests/FoundationNSStringTests.swift",
        "GRDBTests/FoundationNSURLTests.swift",
        "GRDBTests/FoundationNSUUIDTests.swift",
        "GRDBTests/FoundationURLTests.swift",
        "GRDBTests/FoundationUUIDTests.swift",
        "GRDBTests/GRDBTestCase.swift",
        "GRDBTests/IndexInfoTests.swift",
        "GRDBTests/InflectionsTests.swift",
        "GRDBTests/JSONColumnTests.swift",
        "GRDBTests/JSONExpressionsTests.swift",
        "GRDBTests/JoinSupportTests.swift",
        "GRDBTests/MapCursorTests.swift",
        "GRDBTests/MutablePersistableRecordChangesTests.swift",
        "GRDBTests/MutablePersistableRecordEncodableTests.swift",
        "GRDBTests/MutablePersistableRecordPersistenceConflictPolicyTests.swift",
        "GRDBTests/MutablePersistableRecordTests.swift",
        "GRDBTests/Mutex.swift",
        "GRDBTests/NumericOverflowTests.swift",
        "GRDBTests/OrderedDictionaryTests.swift",
        "GRDBTests/PersistableRecordTests.swift",
        "GRDBTests/PoolTests.swift",
        "GRDBTests/PrefixCursorTests.swift",
        "GRDBTests/PrefixWhileCursorTests.swift",
        "GRDBTests/PrimaryKeyInfoTests.swift",
        "GRDBTests/QueryInterfaceExpressionsTests.swift",
        "GRDBTests/QueryInterfaceExtensibilityTests.swift",
        "GRDBTests/QueryInterfacePromiseTests.swift",
        "GRDBTests/QueryInterfaceRequestTests.swift",
        "GRDBTests/RawRepresentable+DatabaseValueConvertibleTests.swift",
        "GRDBTests/Record+QueryInterfaceRequestTests.swift",
        "GRDBTests/RecordEditedTests.swift",
        "GRDBTests/RecordInitializersTests.swift",
        "GRDBTests/RecordMinimalNonOptionalPrimaryKeySingleTests.swift",
        "GRDBTests/RecordMinimalPrimaryKeyRowIDTests.swift",
        "GRDBTests/RecordMinimalPrimaryKeySingleTests.swift",
        "GRDBTests/RecordPersistenceConflictPolicy.swift",
        "GRDBTests/RecordPrimaryKeyHiddenRowIDTests.swift",
        "GRDBTests/RecordPrimaryKeyMultipleTests.swift",
        "GRDBTests/RecordPrimaryKeyNoneTests.swift",
        "GRDBTests/RecordPrimaryKeyRowIDTests.swift",
        "GRDBTests/RecordPrimaryKeySingleTests.swift",
        "GRDBTests/RecordPrimaryKeySingleWithReplaceConflictResolutionTests.swift",
        "GRDBTests/RecordSubClassTests.swift",
        "GRDBTests/RecordUniqueIndexTests.swift",
        "GRDBTests/RecordWithColumnNameManglingTests.swift",
        "GRDBTests/ResultCodeTests.swift",
        "GRDBTests/Row+FoundationTests.swift",
        "GRDBTests/RowAdapterTests.swift",
        "GRDBTests/RowCopiedFromStatementTests.swift",
        "GRDBTests/RowFetchTests.swift",
        "GRDBTests/RowFromDictionaryLiteralTests.swift",
        "GRDBTests/RowFromDictionaryTests.swift",
        "GRDBTests/RowFromStatementTests.swift",
        "GRDBTests/RowTestCase.swift",
        "GRDBTests/SQLExpressionIsConstantTests.swift",
        "GRDBTests/SQLExpressionLiteralTests.swift",
        "GRDBTests/SQLIdentifyingColumnsTests.swift",
        "GRDBTests/SQLLiteralTests.swift",
        "GRDBTests/SQLRequestTests.swift",
        "GRDBTests/SchedulingWatchdogTests.swift",
        "GRDBTests/SelectStatementTests.swift",
        "GRDBTests/SharedValueObservationTests.swift",
        "GRDBTests/SingletonRecordTest.swift",
        "GRDBTests/SingletonUserDefaultsTest.swift",
        "GRDBTests/StatementArguments+FoundationTests.swift",
        "GRDBTests/StatementArgumentsTests.swift",
        "GRDBTests/StatementColumnConvertibleFetchTests.swift",
        "GRDBTests/TableDefinitionTests.swift",
        "GRDBTests/TableRecord+QueryInterfaceRequestTests.swift",
        "GRDBTests/TableRecordDeleteTests.swift",
        "GRDBTests/TableRecordTests.swift",
        "GRDBTests/TableRecordUpdateTests.swift",
        "GRDBTests/TableTests.swift",
        "GRDBTests/TransactionDateTests.swift",
        "GRDBTests/TransactionObserverSavepointsTests.swift",
        "GRDBTests/TransactionObserverTests.swift",
        "GRDBTests/TruncateOptimizationTests.swift",
        "GRDBTests/UpdateStatementTests.swift",
        "GRDBTests/UtilsTests.swift",
        "GRDBTests/ValueObservationCountTests.swift",
        "GRDBTests/ValueObservationDatabaseValueConvertibleTests.swift",
        "GRDBTests/ValueObservationFetchTests.swift",
        "GRDBTests/ValueObservationMapTests.swift",
        "GRDBTests/ValueObservationPrintTests.swift",
        "GRDBTests/ValueObservationQueryInterfaceRequestTests.swift",
        "GRDBTests/ValueObservationReadonlyTests.swift",
        "GRDBTests/ValueObservationRecordTests.swift",
        "GRDBTests/ValueObservationRecorder.swift",
        "GRDBTests/ValueObservationRecorderTests.swift",
        "GRDBTests/ValueObservationRegionRecordingTests.swift",
        "GRDBTests/ValueObservationRowTests.swift",
        "GRDBTests/ValueObservationTests.swift",
        "GRDBTests/VirtualTableModuleTests.swift"
      ],
      "target_dependencies" : [
        "GRDB"
      ],
      "type" : "test"
    },
    {
      "c99name" : "GRDBSQLite",
      "module_type" : "SystemLibraryTarget",
      "name" : "GRDBSQLite",
      "path" : "Sources/GRDBSQLite",
      "product_memberships" : [
        "GRDBSQLite",
        "GRDB",
        "GRDB-dynamic"
      ],
      "sources" : [
      ],
      "type" : "system-target"
    },
    {
      "c99name" : "GRDB",
      "module_type" : "SwiftTarget",
      "name" : "GRDB",
      "path" : "GRDB",
      "product_memberships" : [
        "GRDB",
        "GRDB-dynamic"
      ],
      "resources" : [
        {
          "path" : "/host/spi-builder-workspace/GRDB/PrivacyInfo.xcprivacy",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "Core/Configuration.swift",
        "Core/Cursor.swift",
        "Core/Database+Schema.swift",
        "Core/Database+Statements.swift",
        "Core/Database.swift",
        "Core/DatabaseBackupProgress.swift",
        "Core/DatabaseCollation.swift",
        "Core/DatabaseError.swift",
        "Core/DatabaseFunction.swift",
        "Core/DatabasePool.swift",
        "Core/DatabasePublishers.swift",
        "Core/DatabaseQueue.swift",
        "Core/DatabaseReader.swift",
        "Core/DatabaseRegion.swift",
        "Core/DatabaseRegionObservation.swift",
        "Core/DatabaseSchemaCache.swift",
        "Core/DatabaseSnapshot.swift",
        "Core/DatabaseSnapshotPool.swift",
        "Core/DatabaseValue.swift",
        "Core/DatabaseValueConvertible.swift",
        "Core/DatabaseWriter.swift",
        "Core/FetchRequest.swift",
        "Core/Row.swift",
        "Core/RowAdapter.swift",
        "Core/RowDecodingError.swift",
        "Core/SQL.swift",
        "Core/SQLInterpolation.swift",
        "Core/SQLRequest.swift",
        "Core/SchedulingWatchdog.swift",
        "Core/SerializedDatabase.swift",
        "Core/Statement.swift",
        "Core/StatementAuthorizer.swift",
        "Core/StatementColumnConvertible.swift",
        "Core/Support/CoreGraphics/CGFloat.swift",
        "Core/Support/Foundation/Data.swift",
        "Core/Support/Foundation/DatabaseDateComponents.swift",
        "Core/Support/Foundation/DatabaseValueConvertible+ReferenceConvertible.swift",
        "Core/Support/Foundation/Date.swift",
        "Core/Support/Foundation/Decimal.swift",
        "Core/Support/Foundation/NSData.swift",
        "Core/Support/Foundation/NSNull.swift",
        "Core/Support/Foundation/NSNumber.swift",
        "Core/Support/Foundation/NSString.swift",
        "Core/Support/Foundation/SQLiteDateParser.swift",
        "Core/Support/Foundation/URL.swift",
        "Core/Support/Foundation/UUID.swift",
        "Core/Support/StandardLibrary/DatabaseValueConvertible+Decodable.swift",
        "Core/Support/StandardLibrary/DatabaseValueConvertible+Encodable.swift",
        "Core/Support/StandardLibrary/DatabaseValueConvertible+RawRepresentable.swift",
        "Core/Support/StandardLibrary/JSONRequiredEncoder.swift",
        "Core/Support/StandardLibrary/Optional.swift",
        "Core/Support/StandardLibrary/StandardLibrary.swift",
        "Core/TransactionClock.swift",
        "Core/TransactionObserver.swift",
        "Core/WALSnapshot.swift",
        "Core/WALSnapshotTransaction.swift",
        "Dump/Database+Dump.swift",
        "Dump/DatabaseReader+dump.swift",
        "Dump/DumpFormat.swift",
        "Dump/DumpFormats/DebugDumpFormat.swift",
        "Dump/DumpFormats/JSONDumpFormat.swift",
        "Dump/DumpFormats/LineDumpFormat.swift",
        "Dump/DumpFormats/ListDumpFormat.swift",
        "Dump/DumpFormats/QuoteDumpFormat.swift",
        "FTS/FTS3.swift",
        "FTS/FTS3Pattern.swift",
        "FTS/FTS3TokenizerDescriptor.swift",
        "FTS/FTS4.swift",
        "FTS/FTS5.swift",
        "FTS/FTS5CustomTokenizer.swift",
        "FTS/FTS5Pattern.swift",
        "FTS/FTS5Tokenizer.swift",
        "FTS/FTS5TokenizerDescriptor.swift",
        "FTS/FTS5WrapperTokenizer.swift",
        "Fixits.swift",
        "JSON/JSONColumn.swift",
        "JSON/SQLJSONExpressible.swift",
        "JSON/SQLJSONFunctions.swift",
        "Migration/DatabaseMigrator.swift",
        "Migration/Migration.swift",
        "QueryInterface/FTS3+QueryInterface.swift",
        "QueryInterface/FTS5+QueryInterface.swift",
        "QueryInterface/ForeignKey.swift",
        "QueryInterface/Request/Association/Association.swift",
        "QueryInterface/Request/Association/AssociationAggregate.swift",
        "QueryInterface/Request/Association/BelongsToAssociation.swift",
        "QueryInterface/Request/Association/HasManyAssociation.swift",
        "QueryInterface/Request/Association/HasManyThroughAssociation.swift",
        "QueryInterface/Request/Association/HasOneAssociation.swift",
        "QueryInterface/Request/Association/HasOneThroughAssociation.swift",
        "QueryInterface/Request/Association/JoinAssociation.swift",
        "QueryInterface/Request/CommonTableExpression.swift",
        "QueryInterface/Request/QueryInterfaceRequest.swift",
        "QueryInterface/Request/RequestProtocols.swift",
        "QueryInterface/SQL/Column.swift",
        "QueryInterface/SQL/DatabasePromise.swift",
        "QueryInterface/SQL/SQLAssociation.swift",
        "QueryInterface/SQL/SQLCollection.swift",
        "QueryInterface/SQL/SQLExpression.swift",
        "QueryInterface/SQL/SQLForeignKeyRequest.swift",
        "QueryInterface/SQL/SQLFunctions.swift",
        "QueryInterface/SQL/SQLOperators.swift",
        "QueryInterface/SQL/SQLOrdering.swift",
        "QueryInterface/SQL/SQLRelation.swift",
        "QueryInterface/SQL/SQLSelection.swift",
        "QueryInterface/SQL/SQLSubquery.swift",
        "QueryInterface/SQL/Table.swift",
        "QueryInterface/SQLGeneration/SQLColumnGenerator.swift",
        "QueryInterface/SQLGeneration/SQLGenerationContext.swift",
        "QueryInterface/SQLGeneration/SQLIndexGenerator.swift",
        "QueryInterface/SQLGeneration/SQLQueryGenerator.swift",
        "QueryInterface/SQLGeneration/SQLTableAlterationGenerator.swift",
        "QueryInterface/SQLGeneration/SQLTableGenerator.swift",
        "QueryInterface/SQLInterpolation+QueryInterface.swift",
        "QueryInterface/Schema/ColumnDefinition.swift",
        "QueryInterface/Schema/Database+SchemaDefinition.swift",
        "QueryInterface/Schema/ForeignKeyDefinition.swift",
        "QueryInterface/Schema/IndexDefinition.swift",
        "QueryInterface/Schema/TableAlteration.swift",
        "QueryInterface/Schema/TableDefinition.swift",
        "QueryInterface/Schema/VirtualTableModule.swift",
        "QueryInterface/TableRecord+Association.swift",
        "QueryInterface/TableRecord+QueryInterfaceRequest.swift",
        "Record/EncodableRecord+Encodable.swift",
        "Record/EncodableRecord.swift",
        "Record/FetchableRecord+Decodable.swift",
        "Record/FetchableRecord+TableRecord.swift",
        "Record/FetchableRecord.swift",
        "Record/MutablePersistableRecord+DAO.swift",
        "Record/MutablePersistableRecord+Delete.swift",
        "Record/MutablePersistableRecord+Insert.swift",
        "Record/MutablePersistableRecord+Save.swift",
        "Record/MutablePersistableRecord+Update.swift",
        "Record/MutablePersistableRecord+Upsert.swift",
        "Record/MutablePersistableRecord.swift",
        "Record/PersistableRecord+Insert.swift",
        "Record/PersistableRecord+Save.swift",
        "Record/PersistableRecord+Upsert.swift",
        "Record/PersistableRecord.swift",
        "Record/Record.swift",
        "Record/TableRecord.swift",
        "Utils/CaseInsensitiveIdentifier.swift",
        "Utils/Inflections+English.swift",
        "Utils/Inflections.swift",
        "Utils/Mutex.swift",
        "Utils/OnDemandFuture.swift",
        "Utils/OrderedDictionary.swift",
        "Utils/Pool.swift",
        "Utils/ReadWriteLock.swift",
        "Utils/ReceiveValuesOn.swift",
        "Utils/Refinable.swift",
        "Utils/Utils.swift",
        "ValueObservation/DatabaseCancellable.swift",
        "ValueObservation/Observers/ValueConcurrentObserver.swift",
        "ValueObservation/Observers/ValueWriteOnlyObserver.swift",
        "ValueObservation/Reducers/Fetch.swift",
        "ValueObservation/Reducers/Map.swift",
        "ValueObservation/Reducers/RemoveDuplicates.swift",
        "ValueObservation/Reducers/Trace.swift",
        "ValueObservation/Reducers/ValueReducer.swift",
        "ValueObservation/SharedValueObservation.swift",
        "ValueObservation/ValueObservation.swift",
        "ValueObservation/ValueObservationScheduler.swift"
      ],
      "target_dependencies" : [
        "GRDBSQLite"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "6.0"
}
basic-6.2-latest: Pulling from finestructure/spi-images
Digest: sha256:f81a7bd7aa87a0f81848d48c5bcc03f5f78deebd37fa5f9be9913077205d3687
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.2-latest
Done.