Build Information
Successful build of Tiercel, reference 3.3.0 (2c025a), with Swift 6.1 for macOS (SPM) on 25 Aug 2026 07:28:31 UTC.
Swift 6 data race errors: 6
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCapturesBuild Log
========================================
RunAll
========================================
Builder version: 5.0.2
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/Danie1s/Tiercel.git
Reference: 3.3.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/Danie1s/Tiercel
* tag 3.3.0 -> FETCH_HEAD
HEAD is now at 2c025a7 chore: bump version to 3.3.0
Cloned https://github.com/Danie1s/Tiercel.git
Revision (git rev-parse @):
2c025a7937ab65bc5b110c62c35ec1f2f72d4b5d
SUCCESS checkout https://github.com/Danie1s/Tiercel.git at 3.3.0
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/Danie1s/Tiercel.git
https://github.com/Danie1s/Tiercel.git
{
"dependencies" : [
],
"manifest_display_name" : "Tiercel",
"name" : "Tiercel",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "12.0"
}
],
"products" : [
{
"name" : "Tiercel",
"targets" : [
"Tiercel"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"swift_languages_versions" : [
"5"
],
"targets" : [
{
"c99name" : "Tiercel",
"module_type" : "SwiftTarget",
"name" : "Tiercel",
"path" : "Sources",
"product_memberships" : [
"Tiercel"
],
"sources" : [
"Extensions/Array+Safe.swift",
"Extensions/CodingUserInfoKey+Cache.swift",
"Extensions/Data+Hash.swift",
"Extensions/DispatchQueue+Safe.swift",
"Extensions/Double+TaskInfo.swift",
"Extensions/FileManager+AvailableCapacity.swift",
"Extensions/Int64+TaskInfo.swift",
"Extensions/OperationQueue+DispatchQueue.swift",
"Extensions/String+Hash.swift",
"General/Cache.swift",
"General/Common.swift",
"General/DownloadResumeData.swift",
"General/DownloadTask.swift",
"General/Executer.swift",
"General/Notifications.swift",
"General/Protected.swift",
"General/SessionConfiguration.swift",
"General/SessionDelegate.swift",
"General/SessionManager.swift",
"General/Task.swift",
"General/TiercelError.swift",
"General/URLConvertible.swift",
"Utility/FileChecksumHelper.swift"
],
"type" : "library"
}
],
"tools_version" : "5.1"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-2F0A5646E1D333AE.txt
[3/24] Emitting module Tiercel
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionDelegate.swift:45:7: warning: non-final class 'SessionDelegate' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
43 | }
44 |
45 | class SessionDelegate: NSObject {
| `- warning: non-final class 'SessionDelegate' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
46 |
47 | weak var stateProvider: SessionStateProvider?
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionDelegate.swift:47:14: warning: stored property 'stateProvider' of 'Sendable'-conforming class 'SessionDelegate' is mutable; this is an error in the Swift 6 language mode
45 | class SessionDelegate: NSObject {
46 |
47 | weak var stateProvider: SessionStateProvider?
| `- warning: stored property 'stateProvider' of 'Sendable'-conforming class 'SessionDelegate' is mutable; this is an error in the Swift 6 language mode
48 |
49 | func task<TaskType, R: Task<TaskType>>(for url: URL, as type: R.Type) -> R? {
/Users/admin/builder/spi-builder-workspace/Sources/General/TiercelError.swift:43:10: warning: associated value 'invalidURL(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
41 |
42 | case unknown
43 | case invalidURL(url: URLConvertible)
| `- warning: associated value 'invalidURL(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
44 | case duplicateURL(url: URLConvertible)
45 | case indexOutOfRange
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/TiercelError.swift:44:10: warning: associated value 'duplicateURL(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
42 | case unknown
43 | case invalidURL(url: URLConvertible)
44 | case duplicateURL(url: URLConvertible)
| `- warning: associated value 'duplicateURL(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
45 | case indexOutOfRange
46 | case fetchDownloadTaskFailed(url: URLConvertible)
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/TiercelError.swift:46:10: warning: associated value 'fetchDownloadTaskFailed(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
44 | case duplicateURL(url: URLConvertible)
45 | case indexOutOfRange
46 | case fetchDownloadTaskFailed(url: URLConvertible)
| `- warning: associated value 'fetchDownloadTaskFailed(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
47 | case headersMatchFailed
48 | case fileNamesMatchFailed
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/TiercelError.swift:50:10: warning: associated value 'cacheError(reason:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'TiercelError.CacheErrorReason'; this is an error in the Swift 6 language mode
29 | public enum TiercelError: Error {
30 |
31 | public enum CacheErrorReason {
| `- note: consider making enum 'CacheErrorReason' conform to the 'Sendable' protocol
32 | case cannotCreateDirectory(path: String, error: Error)
33 | case cannotRemoveItem(path: String, error: Error)
:
48 | case fileNamesMatchFailed
49 | case unacceptableStatusCode(code: Int)
50 | case cacheError(reason: CacheErrorReason)
| `- warning: associated value 'cacheError(reason:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'TiercelError.CacheErrorReason'; this is an error in the Swift 6 language mode
51 | }
52 |
[4/26] Compiling Tiercel URLConvertible.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utility/FileChecksumHelper.swift:60:17: warning: capture of 'completion' with non-sendable type '(Result<Bool, FileChecksumHelper.FileVerificationError>) -> ()' in a '@Sendable' closure
58 | ioQueue.async {
59 | guard FileManager.default.fileExists(atPath: filePath) else {
60 | completion(.failure(FileVerificationError.fileDoesnotExist(path: filePath)))
| |- warning: capture of 'completion' with non-sendable type '(Result<Bool, FileChecksumHelper.FileVerificationError>) -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
61 | return
62 | }
/Users/admin/builder/spi-builder-workspace/Sources/Utility/FileChecksumHelper.swift:68:24: warning: capture of 'type' with non-sendable type 'FileChecksumHelper.VerificationType' in a '@Sendable' closure
30 | public enum FileChecksumHelper {
31 |
32 | public enum VerificationType : Int {
| `- note: consider making enum 'VerificationType' conform to the 'Sendable' protocol
33 | case md5
34 | case sha1
:
66 | let data = try Data(contentsOf: url, options: .mappedIfSafe)
67 | var string: String
68 | switch type {
| `- warning: capture of 'type' with non-sendable type 'FileChecksumHelper.VerificationType' in a '@Sendable' closure
69 | case .md5:
70 | string = data.tr.md5
[5/26] Compiling Tiercel FileChecksumHelper.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utility/FileChecksumHelper.swift:60:17: warning: capture of 'completion' with non-sendable type '(Result<Bool, FileChecksumHelper.FileVerificationError>) -> ()' in a '@Sendable' closure
58 | ioQueue.async {
59 | guard FileManager.default.fileExists(atPath: filePath) else {
60 | completion(.failure(FileVerificationError.fileDoesnotExist(path: filePath)))
| |- warning: capture of 'completion' with non-sendable type '(Result<Bool, FileChecksumHelper.FileVerificationError>) -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
61 | return
62 | }
/Users/admin/builder/spi-builder-workspace/Sources/Utility/FileChecksumHelper.swift:68:24: warning: capture of 'type' with non-sendable type 'FileChecksumHelper.VerificationType' in a '@Sendable' closure
30 | public enum FileChecksumHelper {
31 |
32 | public enum VerificationType : Int {
| `- note: consider making enum 'VerificationType' conform to the 'Sendable' protocol
33 | case md5
34 | case sha1
:
66 | let data = try Data(contentsOf: url, options: .mappedIfSafe)
67 | var string: String
68 | switch type {
| `- warning: capture of 'type' with non-sendable type 'FileChecksumHelper.VerificationType' in a '@Sendable' closure
69 | case .md5:
70 | string = data.tr.md5
[6/26] Compiling Tiercel Int64+TaskInfo.swift
[7/26] Compiling Tiercel OperationQueue+DispatchQueue.swift
[8/26] Compiling Tiercel String+Hash.swift
[9/26] Compiling Tiercel SessionDelegate.swift
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionDelegate.swift:45:7: warning: non-final class 'SessionDelegate' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
43 | }
44 |
45 | class SessionDelegate: NSObject {
| `- warning: non-final class 'SessionDelegate' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
46 |
47 | weak var stateProvider: SessionStateProvider?
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionDelegate.swift:47:14: warning: stored property 'stateProvider' of 'Sendable'-conforming class 'SessionDelegate' is mutable; this is an error in the Swift 6 language mode
45 | class SessionDelegate: NSObject {
46 |
47 | weak var stateProvider: SessionStateProvider?
| `- warning: stored property 'stateProvider' of 'Sendable'-conforming class 'SessionDelegate' is mutable; this is an error in the Swift 6 language mode
48 |
49 | func task<TaskType, R: Task<TaskType>>(for url: URL, as type: R.Type) -> R? {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:82:21: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
80 | }
81 | operationQueue.async {
82 | if !self.shouldCreatSession {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
83 | self.shouldCreatSession = true
84 | let (status, maxConcurrentTasksLimit, runningTasks, tasks) = self.mutableState.read {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:89:55: warning: reference to captured var 'oldMaxConcurrentTasksLimit' in concurrently-executing code
87 | if status == .running {
88 | let restartTasks: [DownloadTask]
89 | if maxConcurrentTasksLimit <= oldMaxConcurrentTasksLimit {
| `- warning: reference to captured var 'oldMaxConcurrentTasksLimit' in concurrently-executing code
90 | restartTasks = runningTasks + tasks.filter { $0.status == .waiting }
91 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:396:17: warning: capture of 'uniqueTasks' with non-sendable type '[DownloadTask]' in a '@Sendable' closure
394 | // TODO: - 待优化
395 | operationQueue.async {
396 | uniqueTasks.forEach {
| `- warning: capture of 'uniqueTasks' with non-sendable type '[DownloadTask]' in a '@Sendable' closure
397 | if $0.status != .succeeded {
398 | self._start($0)
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:42:14: note: class 'DownloadTask' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:398:25: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
396 | uniqueTasks.forEach {
397 | if $0.status != .succeeded {
398 | self._start($0)
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
399 | }
400 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:396:17: warning: reference to captured var 'uniqueTasks' in concurrently-executing code
394 | // TODO: - 待优化
395 | operationQueue.async {
396 | uniqueTasks.forEach {
| `- warning: reference to captured var 'uniqueTasks' in concurrently-executing code
397 | if $0.status != .succeeded {
398 | self._start($0)
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:398:25: warning: capture of 'self' with non-sendable type 'SessionManager' in an isolated closure; this is an error in the Swift 6 language mode
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
396 | uniqueTasks.forEach {
397 | if $0.status != .succeeded {
398 | self._start($0)
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in an isolated closure; this is an error in the Swift 6 language mode
399 | }
400 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:434:13: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
432 | public func start(_ url: URLConvertible, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
433 | operationQueue.async {
434 | self._start(url, onMainQueue: onMainQueue, handler: handler)
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
435 | }
436 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:434:25: warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
432 | public func start(_ url: URLConvertible, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
433 | operationQueue.async {
434 | self._start(url, onMainQueue: onMainQueue, handler: handler)
| `- warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
435 | }
436 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:434:65: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
432 | public func start(_ url: URLConvertible, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
433 | operationQueue.async {
434 | self._start(url, onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
435 | }
436 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:440:13: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
438 | public func start(_ task: DownloadTask, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
439 | operationQueue.async {
440 | self._start(task.url, onMainQueue: onMainQueue, handler: handler)
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
441 | }
442 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:440:25: warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
438 | public func start(_ task: DownloadTask, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
439 | operationQueue.async {
440 | self._start(task.url, onMainQueue: onMainQueue, handler: handler)
| `- warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
441 | }
442 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:42:14: note: class 'DownloadTask' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:440:70: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
438 | public func start(_ task: DownloadTask, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
439 | operationQueue.async {
440 | self._start(task.url, onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
441 | }
442 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:490:30: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
488 | public func suspend(_ url: URLConvertible, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
489 | operationQueue.async {
490 | guard let task = self.fetchTask(url) else {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
491 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: url), message: "can't suspend downloadTask"))
492 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:490:45: warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
488 | public func suspend(_ url: URLConvertible, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
489 | operationQueue.async {
490 | guard let task = self.fetchTask(url) else {
| `- warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
491 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: url), message: "can't suspend downloadTask"))
492 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:494:61: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
492 | return
493 | }
494 | task.suspend(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
495 | }
496 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:500:19: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
498 | public func suspend(_ task: DownloadTask, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
499 | operationQueue.async {
500 | guard self.fetchTask(task.url) === task else {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
501 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: task.url), message: "can't suspend downloadTask"))
502 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:500:34: warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
498 | public func suspend(_ task: DownloadTask, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
499 | operationQueue.async {
500 | guard self.fetchTask(task.url) === task else {
| `- warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
501 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: task.url), message: "can't suspend downloadTask"))
502 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:42:14: note: class 'DownloadTask' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:504:61: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
502 | return
503 | }
504 | task.suspend(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
505 | }
506 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:515:30: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
513 | public func cancel(_ url: URLConvertible, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
514 | operationQueue.async {
515 | guard let task = self.fetchTask(url) else {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
516 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: url), message: "can't cancel downloadTask"))
517 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:515:45: warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
513 | public func cancel(_ url: URLConvertible, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
514 | operationQueue.async {
515 | guard let task = self.fetchTask(url) else {
| `- warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
516 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: url), message: "can't cancel downloadTask"))
517 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:519:60: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
517 | return
518 | }
519 | task.cancel(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
520 | }
521 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:525:19: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
523 | public func cancel(_ task: DownloadTask, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
524 | operationQueue.async {
525 | guard self.fetchTask(task.url) === task else {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
526 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: task.url), message: "can't cancel downloadTask"))
527 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:525:34: warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
523 | public func cancel(_ task: DownloadTask, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
524 | operationQueue.async {
525 | guard self.fetchTask(task.url) === task else {
| `- warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
526 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: task.url), message: "can't cancel downloadTask"))
527 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:42:14: note: class 'DownloadTask' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:529:60: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
527 | return
528 | }
529 | task.cancel(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
530 | }
531 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:545:30: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
543 | public func remove(_ url: URLConvertible, completely: Bool = false, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
544 | operationQueue.async {
545 | guard let task = self.fetchTask(url) else {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
546 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: url), message: "can't remove downloadTask"))
547 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:545:45: warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
543 | public func remove(_ url: URLConvertible, completely: Bool = false, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
544 | operationQueue.async {
545 | guard let task = self.fetchTask(url) else {
| `- warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
546 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: url), message: "can't remove downloadTask"))
547 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:549:84: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
547 | return
548 | }
549 | task.remove(completely: completely, onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
550 | }
551 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:555:19: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
553 | public func remove(_ task: DownloadTask, completely: Bool = false, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
554 | operationQueue.async {
555 | guard self.fetchTask(task.url) === task else {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
556 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: task.url),
557 | message: "can't remove downloadTask"))
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:555:34: warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
553 | public func remove(_ task: DownloadTask, completely: Bool = false, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
554 | operationQueue.async {
555 | guard self.fetchTask(task.url) === task else {
| `- warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
556 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: task.url),
557 | message: "can't remove downloadTask"))
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:42:14: note: class 'DownloadTask' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:560:84: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
558 | return
559 | }
560 | task.remove(completely: completely, onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
561 | }
562 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:590:13: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
588 | public func totalStart(onMainQueue: Bool = true, handler: Handler<SessionManager>? = nil) {
589 | operationQueue.async {
590 | self.mutableState.read { $0.tasks }.forEach { task in
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
591 | if task.status != .succeeded {
592 | self._start(task)
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:595:57: warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
593 | }
594 | }
595 | Executer(onMainQueue: onMainQueue, handler: handler).execute(self)
| |- warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
596 | }
597 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:592:21: warning: capture of 'self' with non-sendable type 'SessionManager' in an isolated closure; this is an error in the Swift 6 language mode
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
590 | self.mutableState.read { $0.tasks }.forEach { task in
591 | if task.status != .succeeded {
592 | self._start(task)
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in an isolated closure; this is an error in the Swift 6 language mode
593 | }
594 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:601:13: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
599 | public func totalSuspend(onMainQueue: Bool = true, handler: Handler<SessionManager>? = nil) {
600 | operationQueue.async {
601 | self.totalSuspendOnOperationQueue(onMainQueue: onMainQueue, handler: handler)
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
602 | }
603 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:601:82: warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
599 | public func totalSuspend(onMainQueue: Bool = true, handler: Handler<SessionManager>? = nil) {
600 | operationQueue.async {
601 | self.totalSuspendOnOperationQueue(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
602 | }
603 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:624:42: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
622 | public func totalCancel(onMainQueue: Bool = true, handler: Handler<SessionManager>? = nil) {
623 | operationQueue.async {
624 | let tasks: [DownloadTask]? = self.mutableState.write {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
625 | guard $0.status != .succeeded && $0.status != .canceled else { return nil }
626 | $0.status = .canceled
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:628:82: warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
626 | $0.status = .canceled
627 | $0.isSuspending = false
628 | $0.controlExecuter = Executer(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
629 | return $0.tasks
630 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:628:82: warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in an isolated closure; this is an error in the Swift 6 language mode
626 | $0.status = .canceled
627 | $0.isSuspending = false
628 | $0.controlExecuter = Executer(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
629 | return $0.tasks
630 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:643:42: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
641 | public func totalRemove(completely: Bool = false, onMainQueue: Bool = true, handler: Handler<SessionManager>? = nil) {
642 | operationQueue.async {
643 | let tasks: [DownloadTask]? = self.mutableState.write {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
644 | guard $0.status != .removed else { return nil }
645 | $0.status = .removed
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:647:82: warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
645 | $0.status = .removed
646 | $0.isSuspending = false
647 | $0.controlExecuter = Executer(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
648 | return $0.tasks
649 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:647:82: warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in an isolated closure; this is an error in the Swift 6 language mode
645 | $0.status = .removed
646 | $0.isSuspending = false
647 | $0.controlExecuter = Executer(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
648 | return $0.tasks
649 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:736:30: warning: capture of 'self' with non-sendable type 'SessionManager?' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
734 | }
735 | session?.getTasksWithCompletionHandler { [weak self] (dataTasks, uploadTasks, downloadTasks) in
736 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'SessionManager?' in a '@Sendable' closure
737 | dispatchPrecondition(condition: .onQueue(operationQueue))
738 | reconcile(
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:740:34: warning: capture of 'restorableTasks' with non-sendable type '[ObjectIdentifier : DownloadTask]' in a '@Sendable' closure
738 | reconcile(
739 | downloadTasks: downloadTasks,
740 | restorableTasks: restorableTasks,
| `- warning: capture of 'restorableTasks' with non-sendable type '[ObjectIdentifier : DownloadTask]' in a '@Sendable' closure
741 | runningTaskIDs: runningTaskIDs
742 | )
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:42:14: note: class 'DownloadTask' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:1000:13: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
998 | guard fromRunningTask else { return }
999 | operationQueue.async {
1000 | self.startNextTask()
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
1001 | }
1002 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:1127:17: warning: capture of 'executer' with non-sendable type 'Executer<SessionManager>' in a '@Sendable' closure
1125 | if shouldReplay {
1126 | operationQueue.async {
1127 | executer.execute(self)
| `- warning: capture of 'executer' with non-sendable type 'Executer<SessionManager>' in a '@Sendable' closure
1128 | }
1129 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Executer.swift:31:14: note: generic class 'Executer' does not conform to the 'Sendable' protocol
29 | public typealias Handler<T> = (T) -> ()
30 |
31 | public class Executer<T> {
| `- note: generic class 'Executer' does not conform to the 'Sendable' protocol
32 | private let onMainQueue: Bool
33 | private let handler: Handler<T>?
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:1127:34: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
1125 | if shouldReplay {
1126 | operationQueue.async {
1127 | executer.execute(self)
| `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
1128 | }
1129 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:1146:17: warning: capture of 'executer' with non-sendable type 'Executer<SessionManager>' in a '@Sendable' closure
1144 | if shouldReplay {
1145 | operationQueue.async {
1146 | executer.execute(self)
| `- warning: capture of 'executer' with non-sendable type 'Executer<SessionManager>' in a '@Sendable' closure
1147 | }
1148 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Executer.swift:31:14: note: generic class 'Executer' does not conform to the 'Sendable' protocol
29 | public typealias Handler<T> = (T) -> ()
30 |
31 | public class Executer<T> {
| `- note: generic class 'Executer' does not conform to the 'Sendable' protocol
32 | private let onMainQueue: Bool
33 | private let handler: Handler<T>?
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:1146:34: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
1144 | if shouldReplay {
1145 | operationQueue.async {
1146 | executer.execute(self)
| `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
1147 | }
1148 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:1165:17: warning: capture of 'executer' with non-sendable type 'Executer<SessionManager>' in a '@Sendable' closure
1163 | if shouldReplay {
1164 | operationQueue.async {
1165 | executer.execute(self)
| `- warning: capture of 'executer' with non-sendable type 'Executer<SessionManager>' in a '@Sendable' closure
1166 | }
1167 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Executer.swift:31:14: note: generic class 'Executer' does not conform to the 'Sendable' protocol
29 | public typealias Handler<T> = (T) -> ()
30 |
31 | public class Executer<T> {
| `- note: generic class 'Executer' does not conform to the 'Sendable' protocol
32 | private let onMainQueue: Bool
33 | private let handler: Handler<T>?
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:1165:34: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
1163 | if shouldReplay {
1164 | operationQueue.async {
1165 | executer.execute(self)
| `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
1166 | }
1167 | }
[10/26] Compiling Tiercel SessionManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionDelegate.swift:45:7: warning: non-final class 'SessionDelegate' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
43 | }
44 |
45 | class SessionDelegate: NSObject {
| `- warning: non-final class 'SessionDelegate' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
46 |
47 | weak var stateProvider: SessionStateProvider?
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionDelegate.swift:47:14: warning: stored property 'stateProvider' of 'Sendable'-conforming class 'SessionDelegate' is mutable; this is an error in the Swift 6 language mode
45 | class SessionDelegate: NSObject {
46 |
47 | weak var stateProvider: SessionStateProvider?
| `- warning: stored property 'stateProvider' of 'Sendable'-conforming class 'SessionDelegate' is mutable; this is an error in the Swift 6 language mode
48 |
49 | func task<TaskType, R: Task<TaskType>>(for url: URL, as type: R.Type) -> R? {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:82:21: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
80 | }
81 | operationQueue.async {
82 | if !self.shouldCreatSession {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
83 | self.shouldCreatSession = true
84 | let (status, maxConcurrentTasksLimit, runningTasks, tasks) = self.mutableState.read {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:89:55: warning: reference to captured var 'oldMaxConcurrentTasksLimit' in concurrently-executing code
87 | if status == .running {
88 | let restartTasks: [DownloadTask]
89 | if maxConcurrentTasksLimit <= oldMaxConcurrentTasksLimit {
| `- warning: reference to captured var 'oldMaxConcurrentTasksLimit' in concurrently-executing code
90 | restartTasks = runningTasks + tasks.filter { $0.status == .waiting }
91 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:396:17: warning: capture of 'uniqueTasks' with non-sendable type '[DownloadTask]' in a '@Sendable' closure
394 | // TODO: - 待优化
395 | operationQueue.async {
396 | uniqueTasks.forEach {
| `- warning: capture of 'uniqueTasks' with non-sendable type '[DownloadTask]' in a '@Sendable' closure
397 | if $0.status != .succeeded {
398 | self._start($0)
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:42:14: note: class 'DownloadTask' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:398:25: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
396 | uniqueTasks.forEach {
397 | if $0.status != .succeeded {
398 | self._start($0)
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
399 | }
400 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:396:17: warning: reference to captured var 'uniqueTasks' in concurrently-executing code
394 | // TODO: - 待优化
395 | operationQueue.async {
396 | uniqueTasks.forEach {
| `- warning: reference to captured var 'uniqueTasks' in concurrently-executing code
397 | if $0.status != .succeeded {
398 | self._start($0)
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:398:25: warning: capture of 'self' with non-sendable type 'SessionManager' in an isolated closure; this is an error in the Swift 6 language mode
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
396 | uniqueTasks.forEach {
397 | if $0.status != .succeeded {
398 | self._start($0)
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in an isolated closure; this is an error in the Swift 6 language mode
399 | }
400 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:434:13: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
432 | public func start(_ url: URLConvertible, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
433 | operationQueue.async {
434 | self._start(url, onMainQueue: onMainQueue, handler: handler)
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
435 | }
436 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:434:25: warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
432 | public func start(_ url: URLConvertible, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
433 | operationQueue.async {
434 | self._start(url, onMainQueue: onMainQueue, handler: handler)
| `- warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
435 | }
436 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:434:65: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
432 | public func start(_ url: URLConvertible, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
433 | operationQueue.async {
434 | self._start(url, onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
435 | }
436 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:440:13: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
438 | public func start(_ task: DownloadTask, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
439 | operationQueue.async {
440 | self._start(task.url, onMainQueue: onMainQueue, handler: handler)
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
441 | }
442 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:440:25: warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
438 | public func start(_ task: DownloadTask, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
439 | operationQueue.async {
440 | self._start(task.url, onMainQueue: onMainQueue, handler: handler)
| `- warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
441 | }
442 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:42:14: note: class 'DownloadTask' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:440:70: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
438 | public func start(_ task: DownloadTask, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
439 | operationQueue.async {
440 | self._start(task.url, onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
441 | }
442 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:490:30: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
488 | public func suspend(_ url: URLConvertible, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
489 | operationQueue.async {
490 | guard let task = self.fetchTask(url) else {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
491 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: url), message: "can't suspend downloadTask"))
492 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:490:45: warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
488 | public func suspend(_ url: URLConvertible, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
489 | operationQueue.async {
490 | guard let task = self.fetchTask(url) else {
| `- warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
491 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: url), message: "can't suspend downloadTask"))
492 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:494:61: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
492 | return
493 | }
494 | task.suspend(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
495 | }
496 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:500:19: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
498 | public func suspend(_ task: DownloadTask, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
499 | operationQueue.async {
500 | guard self.fetchTask(task.url) === task else {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
501 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: task.url), message: "can't suspend downloadTask"))
502 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:500:34: warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
498 | public func suspend(_ task: DownloadTask, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
499 | operationQueue.async {
500 | guard self.fetchTask(task.url) === task else {
| `- warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
501 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: task.url), message: "can't suspend downloadTask"))
502 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:42:14: note: class 'DownloadTask' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:504:61: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
502 | return
503 | }
504 | task.suspend(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
505 | }
506 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:515:30: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
513 | public func cancel(_ url: URLConvertible, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
514 | operationQueue.async {
515 | guard let task = self.fetchTask(url) else {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
516 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: url), message: "can't cancel downloadTask"))
517 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:515:45: warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
513 | public func cancel(_ url: URLConvertible, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
514 | operationQueue.async {
515 | guard let task = self.fetchTask(url) else {
| `- warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
516 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: url), message: "can't cancel downloadTask"))
517 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:519:60: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
517 | return
518 | }
519 | task.cancel(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
520 | }
521 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:525:19: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
523 | public func cancel(_ task: DownloadTask, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
524 | operationQueue.async {
525 | guard self.fetchTask(task.url) === task else {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
526 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: task.url), message: "can't cancel downloadTask"))
527 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:525:34: warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
523 | public func cancel(_ task: DownloadTask, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
524 | operationQueue.async {
525 | guard self.fetchTask(task.url) === task else {
| `- warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
526 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: task.url), message: "can't cancel downloadTask"))
527 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:42:14: note: class 'DownloadTask' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:529:60: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
527 | return
528 | }
529 | task.cancel(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
530 | }
531 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:545:30: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
543 | public func remove(_ url: URLConvertible, completely: Bool = false, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
544 | operationQueue.async {
545 | guard let task = self.fetchTask(url) else {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
546 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: url), message: "can't remove downloadTask"))
547 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:545:45: warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
543 | public func remove(_ url: URLConvertible, completely: Bool = false, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
544 | operationQueue.async {
545 | guard let task = self.fetchTask(url) else {
| `- warning: capture of 'url' with non-sendable type 'any URLConvertible' in a '@Sendable' closure
546 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: url), message: "can't remove downloadTask"))
547 | return
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:549:84: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
547 | return
548 | }
549 | task.remove(completely: completely, onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
550 | }
551 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:555:19: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
553 | public func remove(_ task: DownloadTask, completely: Bool = false, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
554 | operationQueue.async {
555 | guard self.fetchTask(task.url) === task else {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
556 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: task.url),
557 | message: "can't remove downloadTask"))
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:555:34: warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
553 | public func remove(_ task: DownloadTask, completely: Bool = false, onMainQueue: Bool = true, handler: Handler<DownloadTask>? = nil) {
554 | operationQueue.async {
555 | guard self.fetchTask(task.url) === task else {
| `- warning: capture of 'task' with non-sendable type 'DownloadTask' in a '@Sendable' closure
556 | self.log(.error(TiercelError.fetchDownloadTaskFailed(url: task.url),
557 | message: "can't remove downloadTask"))
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:42:14: note: class 'DownloadTask' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:560:84: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
558 | return
559 | }
560 | task.remove(completely: completely, onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>?' (aka 'Optional<(DownloadTask) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
561 | }
562 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:590:13: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
588 | public func totalStart(onMainQueue: Bool = true, handler: Handler<SessionManager>? = nil) {
589 | operationQueue.async {
590 | self.mutableState.read { $0.tasks }.forEach { task in
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
591 | if task.status != .succeeded {
592 | self._start(task)
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:595:57: warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
593 | }
594 | }
595 | Executer(onMainQueue: onMainQueue, handler: handler).execute(self)
| |- warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
596 | }
597 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:592:21: warning: capture of 'self' with non-sendable type 'SessionManager' in an isolated closure; this is an error in the Swift 6 language mode
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
590 | self.mutableState.read { $0.tasks }.forEach { task in
591 | if task.status != .succeeded {
592 | self._start(task)
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in an isolated closure; this is an error in the Swift 6 language mode
593 | }
594 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:601:13: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
599 | public func totalSuspend(onMainQueue: Bool = true, handler: Handler<SessionManager>? = nil) {
600 | operationQueue.async {
601 | self.totalSuspendOnOperationQueue(onMainQueue: onMainQueue, handler: handler)
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
602 | }
603 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:601:82: warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
599 | public func totalSuspend(onMainQueue: Bool = true, handler: Handler<SessionManager>? = nil) {
600 | operationQueue.async {
601 | self.totalSuspendOnOperationQueue(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
602 | }
603 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:624:42: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
622 | public func totalCancel(onMainQueue: Bool = true, handler: Handler<SessionManager>? = nil) {
623 | operationQueue.async {
624 | let tasks: [DownloadTask]? = self.mutableState.write {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
625 | guard $0.status != .succeeded && $0.status != .canceled else { return nil }
626 | $0.status = .canceled
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:628:82: warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
626 | $0.status = .canceled
627 | $0.isSuspending = false
628 | $0.controlExecuter = Executer(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
629 | return $0.tasks
630 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:628:82: warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in an isolated closure; this is an error in the Swift 6 language mode
626 | $0.status = .canceled
627 | $0.isSuspending = false
628 | $0.controlExecuter = Executer(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
629 | return $0.tasks
630 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:643:42: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
641 | public func totalRemove(completely: Bool = false, onMainQueue: Bool = true, handler: Handler<SessionManager>? = nil) {
642 | operationQueue.async {
643 | let tasks: [DownloadTask]? = self.mutableState.write {
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
644 | guard $0.status != .removed else { return nil }
645 | $0.status = .removed
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:647:82: warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
645 | $0.status = .removed
646 | $0.isSuspending = false
647 | $0.controlExecuter = Executer(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
648 | return $0.tasks
649 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:647:82: warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in an isolated closure; this is an error in the Swift 6 language mode
645 | $0.status = .removed
646 | $0.isSuspending = false
647 | $0.controlExecuter = Executer(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<SessionManager>?' (aka 'Optional<(SessionManager) -> ()>') in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
648 | return $0.tasks
649 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:736:30: warning: capture of 'self' with non-sendable type 'SessionManager?' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
734 | }
735 | session?.getTasksWithCompletionHandler { [weak self] (dataTasks, uploadTasks, downloadTasks) in
736 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'SessionManager?' in a '@Sendable' closure
737 | dispatchPrecondition(condition: .onQueue(operationQueue))
738 | reconcile(
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:740:34: warning: capture of 'restorableTasks' with non-sendable type '[ObjectIdentifier : DownloadTask]' in a '@Sendable' closure
738 | reconcile(
739 | downloadTasks: downloadTasks,
740 | restorableTasks: restorableTasks,
| `- warning: capture of 'restorableTasks' with non-sendable type '[ObjectIdentifier : DownloadTask]' in a '@Sendable' closure
741 | runningTaskIDs: runningTaskIDs
742 | )
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:42:14: note: class 'DownloadTask' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:1000:13: warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
998 | guard fromRunningTask else { return }
999 | operationQueue.async {
1000 | self.startNextTask()
| `- warning: capture of 'self' with non-sendable type 'SessionManager' in a '@Sendable' closure
1001 | }
1002 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:1127:17: warning: capture of 'executer' with non-sendable type 'Executer<SessionManager>' in a '@Sendable' closure
1125 | if shouldReplay {
1126 | operationQueue.async {
1127 | executer.execute(self)
| `- warning: capture of 'executer' with non-sendable type 'Executer<SessionManager>' in a '@Sendable' closure
1128 | }
1129 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Executer.swift:31:14: note: generic class 'Executer' does not conform to the 'Sendable' protocol
29 | public typealias Handler<T> = (T) -> ()
30 |
31 | public class Executer<T> {
| `- note: generic class 'Executer' does not conform to the 'Sendable' protocol
32 | private let onMainQueue: Bool
33 | private let handler: Handler<T>?
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:1127:34: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
1125 | if shouldReplay {
1126 | operationQueue.async {
1127 | executer.execute(self)
| `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
1128 | }
1129 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:1146:17: warning: capture of 'executer' with non-sendable type 'Executer<SessionManager>' in a '@Sendable' closure
1144 | if shouldReplay {
1145 | operationQueue.async {
1146 | executer.execute(self)
| `- warning: capture of 'executer' with non-sendable type 'Executer<SessionManager>' in a '@Sendable' closure
1147 | }
1148 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Executer.swift:31:14: note: generic class 'Executer' does not conform to the 'Sendable' protocol
29 | public typealias Handler<T> = (T) -> ()
30 |
31 | public class Executer<T> {
| `- note: generic class 'Executer' does not conform to the 'Sendable' protocol
32 | private let onMainQueue: Bool
33 | private let handler: Handler<T>?
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:1146:34: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
1144 | if shouldReplay {
1145 | operationQueue.async {
1146 | executer.execute(self)
| `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
1147 | }
1148 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:1165:17: warning: capture of 'executer' with non-sendable type 'Executer<SessionManager>' in a '@Sendable' closure
1163 | if shouldReplay {
1164 | operationQueue.async {
1165 | executer.execute(self)
| `- warning: capture of 'executer' with non-sendable type 'Executer<SessionManager>' in a '@Sendable' closure
1166 | }
1167 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Executer.swift:31:14: note: generic class 'Executer' does not conform to the 'Sendable' protocol
29 | public typealias Handler<T> = (T) -> ()
30 |
31 | public class Executer<T> {
| `- note: generic class 'Executer' does not conform to the 'Sendable' protocol
32 | private let onMainQueue: Bool
33 | private let handler: Handler<T>?
/Users/admin/builder/spi-builder-workspace/Sources/General/SessionManager.swift:1165:34: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
31 | #endif
32 |
33 | public class SessionManager {
| `- note: class 'SessionManager' does not conform to the 'Sendable' protocol
34 |
35 | enum MaintainTasksAction {
:
1163 | if shouldReplay {
1164 | operationQueue.async {
1165 | executer.execute(self)
| `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
1166 | }
1167 | }
[11/26] Compiling Tiercel Task.swift
/Users/admin/builder/spi-builder-workspace/Sources/General/Task.swift:290:17: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
60 | }
61 |
62 | public class Task<TaskType>: NSObject, Codable {
| `- note: generic class 'Task' does not conform to the 'Sendable' protocol
63 |
64 | private enum CodingKeys: CodingKey {
:
288 | if shouldReplay {
289 | operationQueue.async {
290 | self.execute(executer)
| `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
291 | }
292 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Task.swift:290:30: warning: capture of 'executer' with non-sendable type 'Executer<TaskType>' in a '@Sendable' closure
288 | if shouldReplay {
289 | operationQueue.async {
290 | self.execute(executer)
| `- warning: capture of 'executer' with non-sendable type 'Executer<TaskType>' in a '@Sendable' closure
291 | }
292 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Executer.swift:31:14: note: generic class 'Executer' does not conform to the 'Sendable' protocol
29 | public typealias Handler<T> = (T) -> ()
30 |
31 | public class Executer<T> {
| `- note: generic class 'Executer' does not conform to the 'Sendable' protocol
32 | private let onMainQueue: Bool
33 | private let handler: Handler<T>?
/Users/admin/builder/spi-builder-workspace/Sources/General/Task.swift:310:17: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
60 | }
61 |
62 | public class Task<TaskType>: NSObject, Codable {
| `- note: generic class 'Task' does not conform to the 'Sendable' protocol
63 |
64 | private enum CodingKeys: CodingKey {
:
308 | if shouldReplay {
309 | operationQueue.async {
310 | self.execute(executer)
| `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
311 | }
312 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Task.swift:310:30: warning: capture of 'executer' with non-sendable type 'Executer<TaskType>' in a '@Sendable' closure
308 | if shouldReplay {
309 | operationQueue.async {
310 | self.execute(executer)
| `- warning: capture of 'executer' with non-sendable type 'Executer<TaskType>' in a '@Sendable' closure
311 | }
312 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Executer.swift:31:14: note: generic class 'Executer' does not conform to the 'Sendable' protocol
29 | public typealias Handler<T> = (T) -> ()
30 |
31 | public class Executer<T> {
| `- note: generic class 'Executer' does not conform to the 'Sendable' protocol
32 | private let onMainQueue: Bool
33 | private let handler: Handler<T>?
/Users/admin/builder/spi-builder-workspace/Sources/General/Task.swift:329:17: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
60 | }
61 |
62 | public class Task<TaskType>: NSObject, Codable {
| `- note: generic class 'Task' does not conform to the 'Sendable' protocol
63 |
64 | private enum CodingKeys: CodingKey {
:
327 | if shouldReplay {
328 | operationQueue.async {
329 | self.execute(executer)
| `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
330 | }
331 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Task.swift:329:30: warning: capture of 'executer' with non-sendable type 'Executer<TaskType>' in a '@Sendable' closure
327 | if shouldReplay {
328 | operationQueue.async {
329 | self.execute(executer)
| `- warning: capture of 'executer' with non-sendable type 'Executer<TaskType>' in a '@Sendable' closure
330 | }
331 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Executer.swift:31:14: note: generic class 'Executer' does not conform to the 'Sendable' protocol
29 | public typealias Handler<T> = (T) -> ()
30 |
31 | public class Executer<T> {
| `- note: generic class 'Executer' does not conform to the 'Sendable' protocol
32 | private let onMainQueue: Bool
33 | private let handler: Handler<T>?
/Users/admin/builder/spi-builder-workspace/Sources/General/TiercelError.swift:43:10: warning: associated value 'invalidURL(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
41 |
42 | case unknown
43 | case invalidURL(url: URLConvertible)
| `- warning: associated value 'invalidURL(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
44 | case duplicateURL(url: URLConvertible)
45 | case indexOutOfRange
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/TiercelError.swift:44:10: warning: associated value 'duplicateURL(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
42 | case unknown
43 | case invalidURL(url: URLConvertible)
44 | case duplicateURL(url: URLConvertible)
| `- warning: associated value 'duplicateURL(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
45 | case indexOutOfRange
46 | case fetchDownloadTaskFailed(url: URLConvertible)
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/TiercelError.swift:46:10: warning: associated value 'fetchDownloadTaskFailed(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
44 | case duplicateURL(url: URLConvertible)
45 | case indexOutOfRange
46 | case fetchDownloadTaskFailed(url: URLConvertible)
| `- warning: associated value 'fetchDownloadTaskFailed(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
47 | case headersMatchFailed
48 | case fileNamesMatchFailed
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/TiercelError.swift:50:10: warning: associated value 'cacheError(reason:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'TiercelError.CacheErrorReason'; this is an error in the Swift 6 language mode
29 | public enum TiercelError: Error {
30 |
31 | public enum CacheErrorReason {
| `- note: consider making enum 'CacheErrorReason' conform to the 'Sendable' protocol
32 | case cannotCreateDirectory(path: String, error: Error)
33 | case cannotRemoveItem(path: String, error: Error)
:
48 | case fileNamesMatchFailed
49 | case unacceptableStatusCode(code: Int)
50 | case cacheError(reason: CacheErrorReason)
| `- warning: associated value 'cacheError(reason:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'TiercelError.CacheErrorReason'; this is an error in the Swift 6 language mode
51 | }
52 |
[12/26] Compiling Tiercel TiercelError.swift
/Users/admin/builder/spi-builder-workspace/Sources/General/Task.swift:290:17: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
60 | }
61 |
62 | public class Task<TaskType>: NSObject, Codable {
| `- note: generic class 'Task' does not conform to the 'Sendable' protocol
63 |
64 | private enum CodingKeys: CodingKey {
:
288 | if shouldReplay {
289 | operationQueue.async {
290 | self.execute(executer)
| `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
291 | }
292 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Task.swift:290:30: warning: capture of 'executer' with non-sendable type 'Executer<TaskType>' in a '@Sendable' closure
288 | if shouldReplay {
289 | operationQueue.async {
290 | self.execute(executer)
| `- warning: capture of 'executer' with non-sendable type 'Executer<TaskType>' in a '@Sendable' closure
291 | }
292 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Executer.swift:31:14: note: generic class 'Executer' does not conform to the 'Sendable' protocol
29 | public typealias Handler<T> = (T) -> ()
30 |
31 | public class Executer<T> {
| `- note: generic class 'Executer' does not conform to the 'Sendable' protocol
32 | private let onMainQueue: Bool
33 | private let handler: Handler<T>?
/Users/admin/builder/spi-builder-workspace/Sources/General/Task.swift:310:17: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
60 | }
61 |
62 | public class Task<TaskType>: NSObject, Codable {
| `- note: generic class 'Task' does not conform to the 'Sendable' protocol
63 |
64 | private enum CodingKeys: CodingKey {
:
308 | if shouldReplay {
309 | operationQueue.async {
310 | self.execute(executer)
| `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
311 | }
312 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Task.swift:310:30: warning: capture of 'executer' with non-sendable type 'Executer<TaskType>' in a '@Sendable' closure
308 | if shouldReplay {
309 | operationQueue.async {
310 | self.execute(executer)
| `- warning: capture of 'executer' with non-sendable type 'Executer<TaskType>' in a '@Sendable' closure
311 | }
312 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Executer.swift:31:14: note: generic class 'Executer' does not conform to the 'Sendable' protocol
29 | public typealias Handler<T> = (T) -> ()
30 |
31 | public class Executer<T> {
| `- note: generic class 'Executer' does not conform to the 'Sendable' protocol
32 | private let onMainQueue: Bool
33 | private let handler: Handler<T>?
/Users/admin/builder/spi-builder-workspace/Sources/General/Task.swift:329:17: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
60 | }
61 |
62 | public class Task<TaskType>: NSObject, Codable {
| `- note: generic class 'Task' does not conform to the 'Sendable' protocol
63 |
64 | private enum CodingKeys: CodingKey {
:
327 | if shouldReplay {
328 | operationQueue.async {
329 | self.execute(executer)
| `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
330 | }
331 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Task.swift:329:30: warning: capture of 'executer' with non-sendable type 'Executer<TaskType>' in a '@Sendable' closure
327 | if shouldReplay {
328 | operationQueue.async {
329 | self.execute(executer)
| `- warning: capture of 'executer' with non-sendable type 'Executer<TaskType>' in a '@Sendable' closure
330 | }
331 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Executer.swift:31:14: note: generic class 'Executer' does not conform to the 'Sendable' protocol
29 | public typealias Handler<T> = (T) -> ()
30 |
31 | public class Executer<T> {
| `- note: generic class 'Executer' does not conform to the 'Sendable' protocol
32 | private let onMainQueue: Bool
33 | private let handler: Handler<T>?
/Users/admin/builder/spi-builder-workspace/Sources/General/TiercelError.swift:43:10: warning: associated value 'invalidURL(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
41 |
42 | case unknown
43 | case invalidURL(url: URLConvertible)
| `- warning: associated value 'invalidURL(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
44 | case duplicateURL(url: URLConvertible)
45 | case indexOutOfRange
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/TiercelError.swift:44:10: warning: associated value 'duplicateURL(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
42 | case unknown
43 | case invalidURL(url: URLConvertible)
44 | case duplicateURL(url: URLConvertible)
| `- warning: associated value 'duplicateURL(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
45 | case indexOutOfRange
46 | case fetchDownloadTaskFailed(url: URLConvertible)
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/TiercelError.swift:46:10: warning: associated value 'fetchDownloadTaskFailed(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
44 | case duplicateURL(url: URLConvertible)
45 | case indexOutOfRange
46 | case fetchDownloadTaskFailed(url: URLConvertible)
| `- warning: associated value 'fetchDownloadTaskFailed(url:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'any URLConvertible'; this is an error in the Swift 6 language mode
47 | case headersMatchFailed
48 | case fileNamesMatchFailed
/Users/admin/builder/spi-builder-workspace/Sources/General/URLConvertible.swift:29:17: note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public protocol URLConvertible {
| `- note: protocol 'URLConvertible' does not conform to the 'Sendable' protocol
30 |
31 | func asURL() throws -> URL
/Users/admin/builder/spi-builder-workspace/Sources/General/TiercelError.swift:50:10: warning: associated value 'cacheError(reason:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'TiercelError.CacheErrorReason'; this is an error in the Swift 6 language mode
29 | public enum TiercelError: Error {
30 |
31 | public enum CacheErrorReason {
| `- note: consider making enum 'CacheErrorReason' conform to the 'Sendable' protocol
32 | case cannotCreateDirectory(path: String, error: Error)
33 | case cannotRemoveItem(path: String, error: Error)
:
48 | case fileNamesMatchFailed
49 | case unacceptableStatusCode(code: Int)
50 | case cacheError(reason: CacheErrorReason)
| `- warning: associated value 'cacheError(reason:)' of 'Sendable'-conforming enum 'TiercelError' has non-sendable type 'TiercelError.CacheErrorReason'; this is an error in the Swift 6 language mode
51 | }
52 |
[13/26] Compiling Tiercel Cache.swift
/Users/admin/builder/spi-builder-workspace/Sources/General/Cache.swift:188:19: warning: capture of 'self' with non-sendable type 'Cache' in a '@Sendable' closure
27 | import Foundation
28 |
29 | public class Cache {
| `- note: class 'Cache' does not conform to the 'Sendable' protocol
30 |
31 | private let ioQueue: DispatchQueue
:
186 | public func clearDiskCache(onMainQueue: Bool = true, handler: Handler<Cache>? = nil) {
187 | ioQueue.async {
188 | guard self.fileManager.fileExists(atPath: self.downloadPath) else { return }
| `- warning: capture of 'self' with non-sendable type 'Cache' in a '@Sendable' closure
189 | do {
190 | try self.fileManager.removeItem(atPath: self.downloadPath)
/Users/admin/builder/spi-builder-workspace/Sources/General/Cache.swift:197:30: warning: capture of 'handler' with non-sendable type 'Handler<Cache>?' (aka 'Optional<(Cache) -> ()>') in a '@Sendable' closure
195 | }
196 | self.createDirectory()
197 | if let handler = handler {
| |- warning: capture of 'handler' with non-sendable type 'Handler<Cache>?' (aka 'Optional<(Cache) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 | Executer(onMainQueue: onMainQueue, handler: handler).execute(self)
199 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Cache.swift:215:48: warning: type 'Cache' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public class Cache {
| `- note: class 'Cache' does not conform to the 'Sendable' protocol
30 |
31 | private let ioQueue: DispatchQueue
:
213 | let data = try Data(contentsOf: url)
214 | let decoder = PropertyListDecoder()
215 | decoder.userInfo[.cache] = self
| `- warning: type 'Cache' does not conform to the 'Sendable' protocol
216 | decoder.userInfo[.operationQueue] = operationQueue
217 | // 逐条解码:单个损坏条目只被跳过,不拖垮整个任务列表
[14/26] Compiling Tiercel Common.swift
/Users/admin/builder/spi-builder-workspace/Sources/General/Cache.swift:188:19: warning: capture of 'self' with non-sendable type 'Cache' in a '@Sendable' closure
27 | import Foundation
28 |
29 | public class Cache {
| `- note: class 'Cache' does not conform to the 'Sendable' protocol
30 |
31 | private let ioQueue: DispatchQueue
:
186 | public func clearDiskCache(onMainQueue: Bool = true, handler: Handler<Cache>? = nil) {
187 | ioQueue.async {
188 | guard self.fileManager.fileExists(atPath: self.downloadPath) else { return }
| `- warning: capture of 'self' with non-sendable type 'Cache' in a '@Sendable' closure
189 | do {
190 | try self.fileManager.removeItem(atPath: self.downloadPath)
/Users/admin/builder/spi-builder-workspace/Sources/General/Cache.swift:197:30: warning: capture of 'handler' with non-sendable type 'Handler<Cache>?' (aka 'Optional<(Cache) -> ()>') in a '@Sendable' closure
195 | }
196 | self.createDirectory()
197 | if let handler = handler {
| |- warning: capture of 'handler' with non-sendable type 'Handler<Cache>?' (aka 'Optional<(Cache) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 | Executer(onMainQueue: onMainQueue, handler: handler).execute(self)
199 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/Cache.swift:215:48: warning: type 'Cache' does not conform to the 'Sendable' protocol
27 | import Foundation
28 |
29 | public class Cache {
| `- note: class 'Cache' does not conform to the 'Sendable' protocol
30 |
31 | private let ioQueue: DispatchQueue
:
213 | let data = try Data(contentsOf: url)
214 | let decoder = PropertyListDecoder()
215 | decoder.userInfo[.cache] = self
| `- warning: type 'Cache' does not conform to the 'Sendable' protocol
216 | decoder.userInfo[.operationQueue] = operationQueue
217 | // 逐条解码:单个损坏条目只被跳过,不拖垮整个任务列表
[15/26] Compiling Tiercel Executer.swift
[16/26] Compiling Tiercel Notifications.swift
[17/26] Compiling Tiercel DispatchQueue+Safe.swift
/Users/admin/builder/spi-builder-workspace/Sources/Extensions/DispatchQueue+Safe.swift:37:17: warning: sending 'block' risks causing data races; this is an error in the Swift 6 language mode
35 | } else {
36 | DispatchQueue.main.async {
37 | block()
| |- warning: sending 'block' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'block' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
38 | }
39 | }
[18/26] Compiling Tiercel Double+TaskInfo.swift
/Users/admin/builder/spi-builder-workspace/Sources/Extensions/DispatchQueue+Safe.swift:37:17: warning: sending 'block' risks causing data races; this is an error in the Swift 6 language mode
35 | } else {
36 | DispatchQueue.main.async {
37 | block()
| |- warning: sending 'block' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'block' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
38 | }
39 | }
[19/26] Compiling Tiercel FileManager+AvailableCapacity.swift
/Users/admin/builder/spi-builder-workspace/Sources/Extensions/DispatchQueue+Safe.swift:37:17: warning: sending 'block' risks causing data races; this is an error in the Swift 6 language mode
35 | } else {
36 | DispatchQueue.main.async {
37 | block()
| |- warning: sending 'block' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'block' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
38 | }
39 | }
[20/26] Compiling Tiercel Protected.swift
/Users/admin/builder/spi-builder-workspace/Sources/General/Protected.swift:108:21: warning: capture of 'work' with non-sendable type '@convention(block) () -> Void' in a '@Sendable' closure
106 | let workItem = DispatchWorkItem { [weak self, weak queue] in
107 | queue?.async {
108 | work()
| |- warning: capture of 'work' with non-sendable type '@convention(block) () -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
109 | }
110 | self?.workItem = nil
/Users/admin/builder/spi-builder-workspace/Sources/General/Protected.swift:140:21: warning: capture of 'work' with non-sendable type '@convention(block) () -> Void' in a '@Sendable' closure
138 | let workItem = DispatchWorkItem { [weak self, weak queue] in
139 | queue?.async {
140 | work()
| |- warning: capture of 'work' with non-sendable type '@convention(block) () -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
141 | }
142 | self?.workItem = nil
/Users/admin/builder/spi-builder-workspace/Sources/General/Protected.swift:149:21: warning: capture of 'self' with non-sendable type 'Throttler?' in a '@Sendable' closure
116 | }
117 |
118 | final public class Throttler {
| `- note: class 'Throttler' does not conform to the 'Sendable' protocol
119 |
120 | private let dispatchQueue: DispatchQueue
:
147 | self.workItem = workItem
148 | dispatchQueue.asyncAfter(deadline: .now() + timeInterval) { [weak self] in
149 | self?.workItem?.perform()
| `- warning: capture of 'self' with non-sendable type 'Throttler?' in a '@Sendable' closure
150 | }
151 | } else {
[21/26] Compiling Tiercel SessionConfiguration.swift
/Users/admin/builder/spi-builder-workspace/Sources/General/Protected.swift:108:21: warning: capture of 'work' with non-sendable type '@convention(block) () -> Void' in a '@Sendable' closure
106 | let workItem = DispatchWorkItem { [weak self, weak queue] in
107 | queue?.async {
108 | work()
| |- warning: capture of 'work' with non-sendable type '@convention(block) () -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
109 | }
110 | self?.workItem = nil
/Users/admin/builder/spi-builder-workspace/Sources/General/Protected.swift:140:21: warning: capture of 'work' with non-sendable type '@convention(block) () -> Void' in a '@Sendable' closure
138 | let workItem = DispatchWorkItem { [weak self, weak queue] in
139 | queue?.async {
140 | work()
| |- warning: capture of 'work' with non-sendable type '@convention(block) () -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
141 | }
142 | self?.workItem = nil
/Users/admin/builder/spi-builder-workspace/Sources/General/Protected.swift:149:21: warning: capture of 'self' with non-sendable type 'Throttler?' in a '@Sendable' closure
116 | }
117 |
118 | final public class Throttler {
| `- note: class 'Throttler' does not conform to the 'Sendable' protocol
119 |
120 | private let dispatchQueue: DispatchQueue
:
147 | self.workItem = workItem
148 | dispatchQueue.asyncAfter(deadline: .now() + timeInterval) { [weak self] in
149 | self?.workItem?.perform()
| `- warning: capture of 'self' with non-sendable type 'Throttler?' in a '@Sendable' closure
150 | }
151 | } else {
[22/26] Compiling Tiercel DownloadResumeData.swift
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:100:38: warning: capture of 'self' with non-sendable type 'DownloadTask?' in a '@Sendable' closure
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
:
98 | currentRequestObservation = newValue?.observe(\.currentRequest,
99 | options: .new) { [weak self] task, change in
100 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'DownloadTask?' in a '@Sendable' closure
101 | if let newRequest = change.newValue, let url = newRequest?.url {
102 | self.mutableState.write { $0.currentURL = url }
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:287:17: warning: capture of 'self' with non-sendable type 'DownloadTask' in a '@Sendable' closure
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
:
285 | executeControl()
286 | operationQueue.async {
287 | self.completeWithLocalFile()
| `- warning: capture of 'self' with non-sendable type 'DownloadTask' in a '@Sendable' closure
288 | }
289 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:556:56: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
:
554 | handler: @escaping Handler<DownloadTask>) -> Self {
555 | operationQueue.async {
556 | let (verificationCode, verificationType) = self.mutableState.read {
| `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
557 | ($0.verificationCode, $0.verificationType)
558 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:560:37: warning: capture of 'type' with non-sendable type 'FileChecksumHelper.VerificationType' in a '@Sendable' closure
558 | }
559 | if verificationCode == code &&
560 | verificationType == type &&
| `- warning: capture of 'type' with non-sendable type 'FileChecksumHelper.VerificationType' in a '@Sendable' closure
561 | self.validation != .unkown {
562 | self.mutableDownloadState.write { $0.shouldValidateFile = false }
/Users/admin/builder/spi-builder-workspace/Sources/Utility/FileChecksumHelper.swift:32:17: note: consider making enum 'VerificationType' conform to the 'Sendable' protocol
30 | public enum FileChecksumHelper {
31 |
32 | public enum VerificationType : Int {
| `- note: consider making enum 'VerificationType' conform to the 'Sendable' protocol
33 | case md5
34 | case sha1
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:572:86: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>' (aka '(DownloadTask) -> ()') in a '@Sendable' closure
570 | }
571 | let shouldValidate = self.mutableState.write { state -> Bool in
572 | state.validateExecuter = Executer(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>' (aka '(DownloadTask) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
573 | return state.status == .succeeded
574 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:560:37: warning: implicit capture of 'type' requires that 'FileChecksumHelper.VerificationType' conforms to 'Sendable'; this is an error in the Swift 6 language mode
558 | }
559 | if verificationCode == code &&
560 | verificationType == type &&
| `- warning: implicit capture of 'type' requires that 'FileChecksumHelper.VerificationType' conforms to 'Sendable'; this is an error in the Swift 6 language mode
561 | self.validation != .unkown {
562 | self.mutableDownloadState.write { $0.shouldValidateFile = false }
/Users/admin/builder/spi-builder-workspace/Sources/Utility/FileChecksumHelper.swift:32:17: note: consider making enum 'VerificationType' conform to the 'Sendable' protocol
30 | public enum FileChecksumHelper {
31 |
32 | public enum VerificationType : Int {
| `- note: consider making enum 'VerificationType' conform to the 'Sendable' protocol
33 | case md5
34 | case sha1
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:561:17: warning: implicit capture of 'self' requires that 'Self' conforms to 'Sendable'; this is an error in the Swift 6 language mode
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
:
559 | if verificationCode == code &&
560 | verificationType == type &&
561 | self.validation != .unkown {
| `- warning: implicit capture of 'self' requires that 'Self' conforms to 'Sendable'; this is an error in the Swift 6 language mode
562 | self.mutableDownloadState.write { $0.shouldValidateFile = false }
563 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:567:43: warning: capture of 'type' with non-sendable type 'FileChecksumHelper.VerificationType' in an isolated closure; this is an error in the Swift 6 language mode
565 | self.mutableState.write {
566 | $0.verificationCode = code
567 | $0.verificationType = type
| `- warning: capture of 'type' with non-sendable type 'FileChecksumHelper.VerificationType' in an isolated closure; this is an error in the Swift 6 language mode
568 | }
569 | (self.delegate as? DownloadTaskDelegate)?.downloadTaskWillValidateFile(self)
/Users/admin/builder/spi-builder-workspace/Sources/Utility/FileChecksumHelper.swift:32:17: note: consider making enum 'VerificationType' conform to the 'Sendable' protocol
30 | public enum FileChecksumHelper {
31 |
32 | public enum VerificationType : Int {
| `- note: consider making enum 'VerificationType' conform to the 'Sendable' protocol
33 | case md5
34 | case sha1
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:572:86: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>' (aka '(DownloadTask) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
570 | }
571 | let shouldValidate = self.mutableState.write { state -> Bool in
572 | state.validateExecuter = Executer(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>' (aka '(DownloadTask) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
573 | return state.status == .succeeded
574 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:217:42: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
215 | @objc private func fixDelegateMethodError() {
216 | DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
217 | let underlyingDownloadTask = self.mutableDownloadState.read { $0.underlyingDownloadTask }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
218 | underlyingDownloadTask?.suspend()
219 | underlyingDownloadTask?.resume()
[23/26] Compiling Tiercel DownloadTask.swift
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:100:38: warning: capture of 'self' with non-sendable type 'DownloadTask?' in a '@Sendable' closure
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
:
98 | currentRequestObservation = newValue?.observe(\.currentRequest,
99 | options: .new) { [weak self] task, change in
100 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'DownloadTask?' in a '@Sendable' closure
101 | if let newRequest = change.newValue, let url = newRequest?.url {
102 | self.mutableState.write { $0.currentURL = url }
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:287:17: warning: capture of 'self' with non-sendable type 'DownloadTask' in a '@Sendable' closure
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
:
285 | executeControl()
286 | operationQueue.async {
287 | self.completeWithLocalFile()
| `- warning: capture of 'self' with non-sendable type 'DownloadTask' in a '@Sendable' closure
288 | }
289 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:556:56: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
:
554 | handler: @escaping Handler<DownloadTask>) -> Self {
555 | operationQueue.async {
556 | let (verificationCode, verificationType) = self.mutableState.read {
| `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
557 | ($0.verificationCode, $0.verificationType)
558 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:560:37: warning: capture of 'type' with non-sendable type 'FileChecksumHelper.VerificationType' in a '@Sendable' closure
558 | }
559 | if verificationCode == code &&
560 | verificationType == type &&
| `- warning: capture of 'type' with non-sendable type 'FileChecksumHelper.VerificationType' in a '@Sendable' closure
561 | self.validation != .unkown {
562 | self.mutableDownloadState.write { $0.shouldValidateFile = false }
/Users/admin/builder/spi-builder-workspace/Sources/Utility/FileChecksumHelper.swift:32:17: note: consider making enum 'VerificationType' conform to the 'Sendable' protocol
30 | public enum FileChecksumHelper {
31 |
32 | public enum VerificationType : Int {
| `- note: consider making enum 'VerificationType' conform to the 'Sendable' protocol
33 | case md5
34 | case sha1
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:572:86: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>' (aka '(DownloadTask) -> ()') in a '@Sendable' closure
570 | }
571 | let shouldValidate = self.mutableState.write { state -> Bool in
572 | state.validateExecuter = Executer(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>' (aka '(DownloadTask) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
573 | return state.status == .succeeded
574 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:560:37: warning: implicit capture of 'type' requires that 'FileChecksumHelper.VerificationType' conforms to 'Sendable'; this is an error in the Swift 6 language mode
558 | }
559 | if verificationCode == code &&
560 | verificationType == type &&
| `- warning: implicit capture of 'type' requires that 'FileChecksumHelper.VerificationType' conforms to 'Sendable'; this is an error in the Swift 6 language mode
561 | self.validation != .unkown {
562 | self.mutableDownloadState.write { $0.shouldValidateFile = false }
/Users/admin/builder/spi-builder-workspace/Sources/Utility/FileChecksumHelper.swift:32:17: note: consider making enum 'VerificationType' conform to the 'Sendable' protocol
30 | public enum FileChecksumHelper {
31 |
32 | public enum VerificationType : Int {
| `- note: consider making enum 'VerificationType' conform to the 'Sendable' protocol
33 | case md5
34 | case sha1
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:561:17: warning: implicit capture of 'self' requires that 'Self' conforms to 'Sendable'; this is an error in the Swift 6 language mode
40 | }
41 |
42 | public class DownloadTask: Task<DownloadTask> {
| `- note: class 'DownloadTask' does not conform to the 'Sendable' protocol
43 |
44 | private enum CallbackSource {
:
559 | if verificationCode == code &&
560 | verificationType == type &&
561 | self.validation != .unkown {
| `- warning: implicit capture of 'self' requires that 'Self' conforms to 'Sendable'; this is an error in the Swift 6 language mode
562 | self.mutableDownloadState.write { $0.shouldValidateFile = false }
563 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:567:43: warning: capture of 'type' with non-sendable type 'FileChecksumHelper.VerificationType' in an isolated closure; this is an error in the Swift 6 language mode
565 | self.mutableState.write {
566 | $0.verificationCode = code
567 | $0.verificationType = type
| `- warning: capture of 'type' with non-sendable type 'FileChecksumHelper.VerificationType' in an isolated closure; this is an error in the Swift 6 language mode
568 | }
569 | (self.delegate as? DownloadTaskDelegate)?.downloadTaskWillValidateFile(self)
/Users/admin/builder/spi-builder-workspace/Sources/Utility/FileChecksumHelper.swift:32:17: note: consider making enum 'VerificationType' conform to the 'Sendable' protocol
30 | public enum FileChecksumHelper {
31 |
32 | public enum VerificationType : Int {
| `- note: consider making enum 'VerificationType' conform to the 'Sendable' protocol
33 | case md5
34 | case sha1
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:572:86: warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>' (aka '(DownloadTask) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
570 | }
571 | let shouldValidate = self.mutableState.write { state -> Bool in
572 | state.validateExecuter = Executer(onMainQueue: onMainQueue, handler: handler)
| |- warning: capture of 'handler' with non-sendable type 'Handler<DownloadTask>' (aka '(DownloadTask) -> ()') in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
573 | return state.status == .succeeded
574 | }
/Users/admin/builder/spi-builder-workspace/Sources/General/DownloadTask.swift:217:42: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
215 | @objc private func fixDelegateMethodError() {
216 | DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
217 | let underlyingDownloadTask = self.mutableDownloadState.read { $0.underlyingDownloadTask }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
218 | underlyingDownloadTask?.suspend()
219 | underlyingDownloadTask?.resume()
[24/26] Compiling Tiercel Array+Safe.swift
[25/26] Compiling Tiercel CodingUserInfoKey+Cache.swift
[26/26] Compiling Tiercel Data+Hash.swift
Build complete! (5.09s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "Tiercel",
"name" : "Tiercel",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "12.0"
}
],
"products" : [
{
"name" : "Tiercel",
"targets" : [
"Tiercel"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"swift_languages_versions" : [
"5"
],
"targets" : [
{
"c99name" : "Tiercel",
"module_type" : "SwiftTarget",
"name" : "Tiercel",
"path" : "Sources",
"product_memberships" : [
"Tiercel"
],
"sources" : [
"Extensions/Array+Safe.swift",
"Extensions/CodingUserInfoKey+Cache.swift",
"Extensions/Data+Hash.swift",
"Extensions/DispatchQueue+Safe.swift",
"Extensions/Double+TaskInfo.swift",
"Extensions/FileManager+AvailableCapacity.swift",
"Extensions/Int64+TaskInfo.swift",
"Extensions/OperationQueue+DispatchQueue.swift",
"Extensions/String+Hash.swift",
"General/Cache.swift",
"General/Common.swift",
"General/DownloadResumeData.swift",
"General/DownloadTask.swift",
"General/Executer.swift",
"General/Notifications.swift",
"General/Protected.swift",
"General/SessionConfiguration.swift",
"General/SessionDelegate.swift",
"General/SessionManager.swift",
"General/Task.swift",
"General/TiercelError.swift",
"General/URLConvertible.swift",
"Utility/FileChecksumHelper.swift"
],
"type" : "library"
}
],
"tools_version" : "5.1"
}
Done.