Build Information
Successful build of Optimizely, reference master (710375), with Swift 6.1 for macOS (SPM) on 30 Oct 2026 02:52:11 UTC.
Swift 6 data race errors: 10
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
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
| |- warning: static property 'sharedInstance' is not concurrency-safe because non-'Sendable' type 'DefaultEventDispatcher' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'sharedInstance' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 |
26 | // timer-interval for batching (0 = no batching, negative = use default)
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:137:20: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
135 | open func flushEvents() {
136 | queueLock.async {
137 | guard !self.isFlushing else { return }
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
138 |
139 | self.isFlushing = true
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:192:25: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
190 | let delay = self.calculateRetryDelay(attempt: attempt)
191 | self.queueLock.asyncAfter(deadline: .now() + delay) {
192 | self.processNextBatch(failureCount: attempt)
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
193 | }
194 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:255:17: warning: capture of 'completionHandler' with non-sendable type 'DispatchCompletionHandler' (aka '(OptimizelyResult<Data>) -> ()') in a '@Sendable' closure
253 | let task = session.uploadTask(with: request, from: event.body) { (_, _, error) in
254 | if let error = error {
255 | completionHandler(.failure(.eventDispatchFailed(error.localizedDescription)))
| |- warning: capture of 'completionHandler' with non-sendable type 'DispatchCompletionHandler' (aka '(OptimizelyResult<Data>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
256 | } else {
257 | self.logger.d("Event Sent")
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:257:17: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
255 | completionHandler(.failure(.eventDispatchFailed(error.localizedDescription)))
256 | } else {
257 | self.logger.d("Event Sent")
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
258 | completionHandler(.success(event.body))
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:258:44: warning: capture of 'event' with non-sendable type 'EventForDispatch' in a '@Sendable' closure
256 | } else {
257 | self.logger.d("Event Sent")
258 | completionHandler(.success(event.body))
| `- warning: capture of 'event' with non-sendable type 'EventForDispatch' in a '@Sendable' closure
259 | }
260 |
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/DispatchEvents/EventForDispatch.swift:19:27: note: class 'EventForDispatch' does not conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | @objcMembers public class EventForDispatch: NSObject, Codable {
| `- note: class 'EventForDispatch' does not conform to the 'Sendable' protocol
20 | public static var eventEndpoint = "https://logx.optimizely.com/v1/events"
21 | public static var euEventEndpoint = "https://eu.logx.optimizely.com/v1/events"
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:319:17: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
317 |
318 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
319 | self.queueLock.async {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
320 | if self.eventQueue.count > 0 {
321 | self.flushEvents()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:320:24: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
318 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
319 | self.queueLock.async {
320 | if self.eventQueue.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
321 | self.flushEvents()
322 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultLogger.swift:21:24: warning: static property '_logLevel' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
19 |
20 | open class DefaultLogger: OPTLogger {
21 | private static var _logLevel: OptimizelyLogLevel?
| |- warning: static property '_logLevel' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_logLevel' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_logLevel' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
22 | public static var logLevel: OptimizelyLogLevel {
23 | get {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultUserProfileService.swift:83:13: warning: capture of 'self' with non-sendable type 'DefaultUserProfileService' in a '@Sendable' closure
72 | // }
73 |
74 | open class DefaultUserProfileService: OPTUserProfileService {
| `- note: class 'DefaultUserProfileService' does not conform to the 'Sendable' protocol
75 | public typealias UserProfileData = [String: UPProfile]
76 |
:
81 | public required init() {
82 | lock.async {
83 | self.profiles = UserDefaults.standard.dictionary(forKey: self.kStorageName) as? UserProfileData ?? UserProfileData()
| `- warning: capture of 'self' with non-sendable type 'DefaultUserProfileService' in a '@Sendable' closure
84 |
85 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultUserProfileService.swift:100:13: warning: capture of 'self' with non-sendable type 'DefaultUserProfileService' in a '@Sendable' closure
72 | // }
73 |
74 | open class DefaultUserProfileService: OPTUserProfileService {
| `- note: class 'DefaultUserProfileService' does not conform to the 'Sendable' protocol
75 | public typealias UserProfileData = [String: UPProfile]
76 |
:
98 |
99 | lock.async {
100 | self.profiles?[userId] = userProfile
| `- warning: capture of 'self' with non-sendable type 'DefaultUserProfileService' in a '@Sendable' closure
101 | let defaults = UserDefaults.standard
102 | defaults.set(self.profiles, forKey: self.kStorageName)
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultUserProfileService.swift:100:38: warning: capture of 'userProfile' with non-sendable type 'DefaultUserProfileService.UPProfile' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
98 |
99 | lock.async {
100 | self.profiles?[userId] = userProfile
| `- warning: capture of 'userProfile' with non-sendable type 'DefaultUserProfileService.UPProfile' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
101 | let defaults = UserDefaults.standard
102 | defaults.set(self.profiles, forKey: self.kStorageName)
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultUserProfileService.swift:109:13: warning: capture of 'self' with non-sendable type 'DefaultUserProfileService' in a '@Sendable' closure
72 | // }
73 |
74 | open class DefaultUserProfileService: OPTUserProfileService {
| `- note: class 'DefaultUserProfileService' does not conform to the 'Sendable' protocol
75 | public typealias UserProfileData = [String: UPProfile]
76 |
:
107 | open func reset(userProfiles: UserProfileData? = nil) {
108 | lock.async {
109 | self.profiles = userProfiles ?? UserProfileData()
| `- warning: capture of 'self' with non-sendable type 'DefaultUserProfileService' in a '@Sendable' closure
110 | let defaults = UserDefaults.standard
111 | defaults.set(self.profiles, forKey: self.kStorageName)
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultUserProfileService.swift:109:29: warning: capture of 'userProfiles' with non-sendable type 'DefaultUserProfileService.UserProfileData?' (aka 'Optional<Dictionary<String, Dictionary<String, Any>>>') in a '@Sendable' closure
107 | open func reset(userProfiles: UserProfileData? = nil) {
108 | lock.async {
109 | self.profiles = userProfiles ?? UserProfileData()
| `- warning: capture of 'userProfiles' with non-sendable type 'DefaultUserProfileService.UserProfileData?' (aka 'Optional<Dictionary<String, Dictionary<String, Any>>>') in a '@Sendable' closure
110 | let defaults = UserDefaults.standard
111 | defaults.set(self.profiles, forKey: self.kStorageName)
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:249:28: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
247 | let now = Date()
248 | DispatchQueue.main.async {
249 | if let timer = self.timers.property?[sdkKey]?.timer, timer.isValid {
| |- 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
250 | return
251 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:257:73: warning: sending 'datafileChangeNotification' risks causing data races; this is an error in the Swift 6 language mode
255 | startTime: now,
256 | updateInterval: updateInterval,
257 | datafileChangeNotification: datafileChangeNotification)
| |- warning: sending 'datafileChangeNotification' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'datafileChangeNotification' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
258 |
259 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:316:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
314 | DispatchQueue.main.async {
315 | // should check here again
316 | guard self.timer.property == nil else { return }
| |- 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
317 |
318 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
[74/102] Compiling Optimizely MurmurHash3.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:78:21: warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
18 | import Network
19 |
20 | class NetworkReachability {
| `- note: class 'NetworkReachability' does not conform to the 'Sendable' protocol
21 |
22 | private let queue = DispatchQueue(label: "reachability")
:
76 | self.monitor = pathMonitor
77 | pathMonitor.pathUpdateHandler = { [weak self] path in
78 | self?._connected = (path.status == .satisfied)
| `- warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
79 | }
80 | monitorToStart = pathMonitor
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:30:16: warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
| |- warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'sdkVersion' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'sdkVersion' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
31 | static var swiftSdkClientName = "swift-sdk"
32 |
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:31:16: warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
31 | static var swiftSdkClientName = "swift-sdk"
| |- warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'swiftSdkClientName' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'swiftSdkClientName' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |
33 | static var os: String {
[75/102] Compiling Optimizely NetworkReachability.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:78:21: warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
18 | import Network
19 |
20 | class NetworkReachability {
| `- note: class 'NetworkReachability' does not conform to the 'Sendable' protocol
21 |
22 | private let queue = DispatchQueue(label: "reachability")
:
76 | self.monitor = pathMonitor
77 | pathMonitor.pathUpdateHandler = { [weak self] path in
78 | self?._connected = (path.status == .satisfied)
| `- warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
79 | }
80 | monitorToStart = pathMonitor
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:30:16: warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
| |- warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'sdkVersion' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'sdkVersion' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
31 | static var swiftSdkClientName = "swift-sdk"
32 |
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:31:16: warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
31 | static var swiftSdkClientName = "swift-sdk"
| |- warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'swiftSdkClientName' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'swiftSdkClientName' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |
33 | static var os: String {
[76/102] Compiling Optimizely Notifications.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:78:21: warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
18 | import Network
19 |
20 | class NetworkReachability {
| `- note: class 'NetworkReachability' does not conform to the 'Sendable' protocol
21 |
22 | private let queue = DispatchQueue(label: "reachability")
:
76 | self.monitor = pathMonitor
77 | pathMonitor.pathUpdateHandler = { [weak self] path in
78 | self?._connected = (path.status == .satisfied)
| `- warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
79 | }
80 | monitorToStart = pathMonitor
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:30:16: warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
| |- warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'sdkVersion' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'sdkVersion' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
31 | static var swiftSdkClientName = "swift-sdk"
32 |
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:31:16: warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
31 | static var swiftSdkClientName = "swift-sdk"
| |- warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'swiftSdkClientName' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'swiftSdkClientName' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |
33 | static var os: String {
[77/102] Compiling Optimizely RetryStrategy.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:78:21: warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
18 | import Network
19 |
20 | class NetworkReachability {
| `- note: class 'NetworkReachability' does not conform to the 'Sendable' protocol
21 |
22 | private let queue = DispatchQueue(label: "reachability")
:
76 | self.monitor = pathMonitor
77 | pathMonitor.pathUpdateHandler = { [weak self] path in
78 | self?._connected = (path.status == .satisfied)
| `- warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
79 | }
80 | monitorToStart = pathMonitor
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:30:16: warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
| |- warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'sdkVersion' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'sdkVersion' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
31 | static var swiftSdkClientName = "swift-sdk"
32 |
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:31:16: warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
31 | static var swiftSdkClientName = "swift-sdk"
| |- warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'swiftSdkClientName' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'swiftSdkClientName' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |
33 | static var os: String {
[78/102] Compiling Optimizely SDKVersion.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:78:21: warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
18 | import Network
19 |
20 | class NetworkReachability {
| `- note: class 'NetworkReachability' does not conform to the 'Sendable' protocol
21 |
22 | private let queue = DispatchQueue(label: "reachability")
:
76 | self.monitor = pathMonitor
77 | pathMonitor.pathUpdateHandler = { [weak self] path in
78 | self?._connected = (path.status == .satisfied)
| `- warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
79 | }
80 | monitorToStart = pathMonitor
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:30:16: warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
| |- warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'sdkVersion' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'sdkVersion' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
31 | static var swiftSdkClientName = "swift-sdk"
32 |
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:31:16: warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
31 | static var swiftSdkClientName = "swift-sdk"
| |- warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'swiftSdkClientName' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'swiftSdkClientName' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |
33 | static var os: String {
[79/102] Compiling Optimizely ThreadSafeLogger.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:78:21: warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
18 | import Network
19 |
20 | class NetworkReachability {
| `- note: class 'NetworkReachability' does not conform to the 'Sendable' protocol
21 |
22 | private let queue = DispatchQueue(label: "reachability")
:
76 | self.monitor = pathMonitor
77 | pathMonitor.pathUpdateHandler = { [weak self] path in
78 | self?._connected = (path.status == .satisfied)
| `- warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
79 | }
80 | monitorToStart = pathMonitor
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:30:16: warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
| |- warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'sdkVersion' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'sdkVersion' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
31 | static var swiftSdkClientName = "swift-sdk"
32 |
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:31:16: warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
31 | static var swiftSdkClientName = "swift-sdk"
| |- warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'swiftSdkClientName' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'swiftSdkClientName' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |
33 | static var os: String {
[80/102] Compiling Optimizely Utils.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:78:21: warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
18 | import Network
19 |
20 | class NetworkReachability {
| `- note: class 'NetworkReachability' does not conform to the 'Sendable' protocol
21 |
22 | private let queue = DispatchQueue(label: "reachability")
:
76 | self.monitor = pathMonitor
77 | pathMonitor.pathUpdateHandler = { [weak self] path in
78 | self?._connected = (path.status == .satisfied)
| `- warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
79 | }
80 | monitorToStart = pathMonitor
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:30:16: warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
| |- warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'sdkVersion' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'sdkVersion' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
31 | static var swiftSdkClientName = "swift-sdk"
32 |
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:31:16: warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
31 | static var swiftSdkClientName = "swift-sdk"
| |- warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'swiftSdkClientName' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'swiftSdkClientName' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |
33 | static var os: String {
[81/102] Compiling Optimizely WatchBackgroundNotifier.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:78:21: warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
18 | import Network
19 |
20 | class NetworkReachability {
| `- note: class 'NetworkReachability' does not conform to the 'Sendable' protocol
21 |
22 | private let queue = DispatchQueue(label: "reachability")
:
76 | self.monitor = pathMonitor
77 | pathMonitor.pathUpdateHandler = { [weak self] path in
78 | self?._connected = (path.status == .satisfied)
| `- warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
79 | }
80 | monitorToStart = pathMonitor
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:30:16: warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
| |- warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'sdkVersion' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'sdkVersion' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
31 | static var swiftSdkClientName = "swift-sdk"
32 |
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:31:16: warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
31 | static var swiftSdkClientName = "swift-sdk"
| |- warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'swiftSdkClientName' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'swiftSdkClientName' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |
33 | static var os: String {
[82/102] Compiling Optimizely resource_bundle_accessor.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:78:21: warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
18 | import Network
19 |
20 | class NetworkReachability {
| `- note: class 'NetworkReachability' does not conform to the 'Sendable' protocol
21 |
22 | private let queue = DispatchQueue(label: "reachability")
:
76 | self.monitor = pathMonitor
77 | pathMonitor.pathUpdateHandler = { [weak self] path in
78 | self?._connected = (path.status == .satisfied)
| `- warning: capture of 'self' with non-sendable type 'NetworkReachability?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
79 | }
80 | monitorToStart = pathMonitor
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:30:16: warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
| |- warning: static property 'sdkVersion' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'sdkVersion' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'sdkVersion' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
31 | static var swiftSdkClientName = "swift-sdk"
32 |
/Users/admin/builder/spi-builder-workspace/Sources/Utils/Utils.swift:31:16: warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
29 | // from auto-generated variable OPTIMIZELYSDKVERSION
30 | static var sdkVersion: String = OPTIMIZELYSDKVERSION
31 | static var swiftSdkClientName = "swift-sdk"
| |- warning: static property 'swiftSdkClientName' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'swiftSdkClientName' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'swiftSdkClientName' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |
33 | static var os: String {
[83/102] Compiling Optimizely BatchEventBuilder.swift
/Users/admin/builder/spi-builder-workspace/Sources/Implementation/Events/BatchEventBuilder.swift:20:24: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class BatchEventBuilder {
20 | static private var logger = OPTLoggerFactory.getLogger()
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | // MARK: - Impression Event
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:31: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:40: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:76:61: warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'V' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
76 | let newSegments = CacheElement(key: key, value: value)
| `- warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
77 | self.map[key] = newSegments
78 |
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:20: warning: variable 'item' was never mutated; consider changing to 'let' constant
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: variable 'item' was never mutated; consider changing to 'let' constant
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:27: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:36: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:77:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
75 | set {
76 | queue.async {
77 | self._apiHost = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
78 | }
79 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:92:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
90 | set {
91 | queue.async {
92 | self._apiKey = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
93 | }
94 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:107:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
105 | set {
106 | queue.async {
107 | self._segmentsToCheck = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
108 | }
109 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:122:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
120 | set {
121 | queue.async {
122 | self._odpServiceIntegrated = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
123 | }
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:150:20: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
148 |
149 | queueLock.async {
150 | guard !self.isFlushing else { return }
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
151 |
152 | self.isFlushing = true
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:201:29: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
199 | let delay = self.calculateRetryDelay(attempt: attempt)
200 | self.queueLock.asyncAfter(deadline: .now() + delay) {
201 | self.processNextBatch(failureCount: attempt, apiKey: apiKey, apiHost: apiHost)
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
202 | }
203 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:144:17: warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
97 | */
98 |
99 | open class OdpSegmentApiManager {
| `- note: class 'OdpSegmentApiManager' does not conform to the 'Sendable' protocol
100 | let logger = OPTLoggerFactory.getLogger()
101 | let resourceTimeoutInSecs: Int?
:
142 | guard error == nil, let data = data, let response = response as? HTTPURLResponse else {
143 | let msg = error?.localizedDescription ?? "invalid response"
144 | self.logger.d {
| `- warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
145 | "GraphQL download failed: \(msg)"
146 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
[84/102] Compiling Optimizely UserProfileTracker.swift
/Users/admin/builder/spi-builder-workspace/Sources/Implementation/Events/BatchEventBuilder.swift:20:24: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class BatchEventBuilder {
20 | static private var logger = OPTLoggerFactory.getLogger()
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | // MARK: - Impression Event
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:31: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:40: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:76:61: warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'V' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
76 | let newSegments = CacheElement(key: key, value: value)
| `- warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
77 | self.map[key] = newSegments
78 |
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:20: warning: variable 'item' was never mutated; consider changing to 'let' constant
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: variable 'item' was never mutated; consider changing to 'let' constant
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:27: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:36: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:77:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
75 | set {
76 | queue.async {
77 | self._apiHost = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
78 | }
79 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:92:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
90 | set {
91 | queue.async {
92 | self._apiKey = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
93 | }
94 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:107:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
105 | set {
106 | queue.async {
107 | self._segmentsToCheck = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
108 | }
109 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:122:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
120 | set {
121 | queue.async {
122 | self._odpServiceIntegrated = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
123 | }
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:150:20: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
148 |
149 | queueLock.async {
150 | guard !self.isFlushing else { return }
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
151 |
152 | self.isFlushing = true
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:201:29: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
199 | let delay = self.calculateRetryDelay(attempt: attempt)
200 | self.queueLock.asyncAfter(deadline: .now() + delay) {
201 | self.processNextBatch(failureCount: attempt, apiKey: apiKey, apiHost: apiHost)
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
202 | }
203 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:144:17: warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
97 | */
98 |
99 | open class OdpSegmentApiManager {
| `- note: class 'OdpSegmentApiManager' does not conform to the 'Sendable' protocol
100 | let logger = OPTLoggerFactory.getLogger()
101 | let resourceTimeoutInSecs: Int?
:
142 | guard error == nil, let data = data, let response = response as? HTTPURLResponse else {
143 | let msg = error?.localizedDescription ?? "invalid response"
144 | self.logger.d {
| `- warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
145 | "GraphQL download failed: \(msg)"
146 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
[85/102] Compiling Optimizely LruCache.swift
/Users/admin/builder/spi-builder-workspace/Sources/Implementation/Events/BatchEventBuilder.swift:20:24: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class BatchEventBuilder {
20 | static private var logger = OPTLoggerFactory.getLogger()
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | // MARK: - Impression Event
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:31: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:40: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:76:61: warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'V' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
76 | let newSegments = CacheElement(key: key, value: value)
| `- warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
77 | self.map[key] = newSegments
78 |
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:20: warning: variable 'item' was never mutated; consider changing to 'let' constant
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: variable 'item' was never mutated; consider changing to 'let' constant
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:27: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:36: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:77:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
75 | set {
76 | queue.async {
77 | self._apiHost = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
78 | }
79 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:92:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
90 | set {
91 | queue.async {
92 | self._apiKey = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
93 | }
94 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:107:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
105 | set {
106 | queue.async {
107 | self._segmentsToCheck = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
108 | }
109 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:122:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
120 | set {
121 | queue.async {
122 | self._odpServiceIntegrated = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
123 | }
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:150:20: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
148 |
149 | queueLock.async {
150 | guard !self.isFlushing else { return }
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
151 |
152 | self.isFlushing = true
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:201:29: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
199 | let delay = self.calculateRetryDelay(attempt: attempt)
200 | self.queueLock.asyncAfter(deadline: .now() + delay) {
201 | self.processNextBatch(failureCount: attempt, apiKey: apiKey, apiHost: apiHost)
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
202 | }
203 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:144:17: warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
97 | */
98 |
99 | open class OdpSegmentApiManager {
| `- note: class 'OdpSegmentApiManager' does not conform to the 'Sendable' protocol
100 | let logger = OPTLoggerFactory.getLogger()
101 | let resourceTimeoutInSecs: Int?
:
142 | guard error == nil, let data = data, let response = response as? HTTPURLResponse else {
143 | let msg = error?.localizedDescription ?? "invalid response"
144 | self.logger.d {
| `- warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
145 | "GraphQL download failed: \(msg)"
146 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
[86/102] Compiling Optimizely OdpConfig.swift
/Users/admin/builder/spi-builder-workspace/Sources/Implementation/Events/BatchEventBuilder.swift:20:24: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class BatchEventBuilder {
20 | static private var logger = OPTLoggerFactory.getLogger()
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | // MARK: - Impression Event
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:31: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:40: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:76:61: warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'V' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
76 | let newSegments = CacheElement(key: key, value: value)
| `- warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
77 | self.map[key] = newSegments
78 |
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:20: warning: variable 'item' was never mutated; consider changing to 'let' constant
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: variable 'item' was never mutated; consider changing to 'let' constant
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:27: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:36: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:77:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
75 | set {
76 | queue.async {
77 | self._apiHost = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
78 | }
79 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:92:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
90 | set {
91 | queue.async {
92 | self._apiKey = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
93 | }
94 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:107:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
105 | set {
106 | queue.async {
107 | self._segmentsToCheck = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
108 | }
109 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:122:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
120 | set {
121 | queue.async {
122 | self._odpServiceIntegrated = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
123 | }
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:150:20: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
148 |
149 | queueLock.async {
150 | guard !self.isFlushing else { return }
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
151 |
152 | self.isFlushing = true
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:201:29: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
199 | let delay = self.calculateRetryDelay(attempt: attempt)
200 | self.queueLock.asyncAfter(deadline: .now() + delay) {
201 | self.processNextBatch(failureCount: attempt, apiKey: apiKey, apiHost: apiHost)
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
202 | }
203 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:144:17: warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
97 | */
98 |
99 | open class OdpSegmentApiManager {
| `- note: class 'OdpSegmentApiManager' does not conform to the 'Sendable' protocol
100 | let logger = OPTLoggerFactory.getLogger()
101 | let resourceTimeoutInSecs: Int?
:
142 | guard error == nil, let data = data, let response = response as? HTTPURLResponse else {
143 | let msg = error?.localizedDescription ?? "invalid response"
144 | self.logger.d {
| `- warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
145 | "GraphQL download failed: \(msg)"
146 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
[87/102] Compiling Optimizely OdpEvent.swift
/Users/admin/builder/spi-builder-workspace/Sources/Implementation/Events/BatchEventBuilder.swift:20:24: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class BatchEventBuilder {
20 | static private var logger = OPTLoggerFactory.getLogger()
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | // MARK: - Impression Event
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:31: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:40: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:76:61: warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'V' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
76 | let newSegments = CacheElement(key: key, value: value)
| `- warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
77 | self.map[key] = newSegments
78 |
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:20: warning: variable 'item' was never mutated; consider changing to 'let' constant
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: variable 'item' was never mutated; consider changing to 'let' constant
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:27: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:36: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:77:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
75 | set {
76 | queue.async {
77 | self._apiHost = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
78 | }
79 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:92:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
90 | set {
91 | queue.async {
92 | self._apiKey = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
93 | }
94 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:107:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
105 | set {
106 | queue.async {
107 | self._segmentsToCheck = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
108 | }
109 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:122:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
120 | set {
121 | queue.async {
122 | self._odpServiceIntegrated = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
123 | }
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:150:20: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
148 |
149 | queueLock.async {
150 | guard !self.isFlushing else { return }
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
151 |
152 | self.isFlushing = true
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:201:29: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
199 | let delay = self.calculateRetryDelay(attempt: attempt)
200 | self.queueLock.asyncAfter(deadline: .now() + delay) {
201 | self.processNextBatch(failureCount: attempt, apiKey: apiKey, apiHost: apiHost)
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
202 | }
203 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:144:17: warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
97 | */
98 |
99 | open class OdpSegmentApiManager {
| `- note: class 'OdpSegmentApiManager' does not conform to the 'Sendable' protocol
100 | let logger = OPTLoggerFactory.getLogger()
101 | let resourceTimeoutInSecs: Int?
:
142 | guard error == nil, let data = data, let response = response as? HTTPURLResponse else {
143 | let msg = error?.localizedDescription ?? "invalid response"
144 | self.logger.d {
| `- warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
145 | "GraphQL download failed: \(msg)"
146 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
[88/102] Compiling Optimizely OdpEventApiManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/Implementation/Events/BatchEventBuilder.swift:20:24: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class BatchEventBuilder {
20 | static private var logger = OPTLoggerFactory.getLogger()
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | // MARK: - Impression Event
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:31: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:40: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:76:61: warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'V' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
76 | let newSegments = CacheElement(key: key, value: value)
| `- warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
77 | self.map[key] = newSegments
78 |
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:20: warning: variable 'item' was never mutated; consider changing to 'let' constant
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: variable 'item' was never mutated; consider changing to 'let' constant
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:27: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:36: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:77:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
75 | set {
76 | queue.async {
77 | self._apiHost = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
78 | }
79 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:92:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
90 | set {
91 | queue.async {
92 | self._apiKey = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
93 | }
94 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:107:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
105 | set {
106 | queue.async {
107 | self._segmentsToCheck = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
108 | }
109 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:122:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
120 | set {
121 | queue.async {
122 | self._odpServiceIntegrated = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
123 | }
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:150:20: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
148 |
149 | queueLock.async {
150 | guard !self.isFlushing else { return }
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
151 |
152 | self.isFlushing = true
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:201:29: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
199 | let delay = self.calculateRetryDelay(attempt: attempt)
200 | self.queueLock.asyncAfter(deadline: .now() + delay) {
201 | self.processNextBatch(failureCount: attempt, apiKey: apiKey, apiHost: apiHost)
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
202 | }
203 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:144:17: warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
97 | */
98 |
99 | open class OdpSegmentApiManager {
| `- note: class 'OdpSegmentApiManager' does not conform to the 'Sendable' protocol
100 | let logger = OPTLoggerFactory.getLogger()
101 | let resourceTimeoutInSecs: Int?
:
142 | guard error == nil, let data = data, let response = response as? HTTPURLResponse else {
143 | let msg = error?.localizedDescription ?? "invalid response"
144 | self.logger.d {
| `- warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
145 | "GraphQL download failed: \(msg)"
146 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
[89/102] Compiling Optimizely OdpEventManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/Implementation/Events/BatchEventBuilder.swift:20:24: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class BatchEventBuilder {
20 | static private var logger = OPTLoggerFactory.getLogger()
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | // MARK: - Impression Event
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:31: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:40: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:76:61: warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'V' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
76 | let newSegments = CacheElement(key: key, value: value)
| `- warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
77 | self.map[key] = newSegments
78 |
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:20: warning: variable 'item' was never mutated; consider changing to 'let' constant
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: variable 'item' was never mutated; consider changing to 'let' constant
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:27: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:36: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:77:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
75 | set {
76 | queue.async {
77 | self._apiHost = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
78 | }
79 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:92:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
90 | set {
91 | queue.async {
92 | self._apiKey = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
93 | }
94 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:107:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
105 | set {
106 | queue.async {
107 | self._segmentsToCheck = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
108 | }
109 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:122:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
120 | set {
121 | queue.async {
122 | self._odpServiceIntegrated = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
123 | }
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:150:20: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
148 |
149 | queueLock.async {
150 | guard !self.isFlushing else { return }
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
151 |
152 | self.isFlushing = true
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:201:29: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
199 | let delay = self.calculateRetryDelay(attempt: attempt)
200 | self.queueLock.asyncAfter(deadline: .now() + delay) {
201 | self.processNextBatch(failureCount: attempt, apiKey: apiKey, apiHost: apiHost)
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
202 | }
203 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:144:17: warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
97 | */
98 |
99 | open class OdpSegmentApiManager {
| `- note: class 'OdpSegmentApiManager' does not conform to the 'Sendable' protocol
100 | let logger = OPTLoggerFactory.getLogger()
101 | let resourceTimeoutInSecs: Int?
:
142 | guard error == nil, let data = data, let response = response as? HTTPURLResponse else {
143 | let msg = error?.localizedDescription ?? "invalid response"
144 | self.logger.d {
| `- warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
145 | "GraphQL download failed: \(msg)"
146 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
[90/102] Compiling Optimizely OdpManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/Implementation/Events/BatchEventBuilder.swift:20:24: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class BatchEventBuilder {
20 | static private var logger = OPTLoggerFactory.getLogger()
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | // MARK: - Impression Event
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:31: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:40: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:76:61: warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'V' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
76 | let newSegments = CacheElement(key: key, value: value)
| `- warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
77 | self.map[key] = newSegments
78 |
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:20: warning: variable 'item' was never mutated; consider changing to 'let' constant
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: variable 'item' was never mutated; consider changing to 'let' constant
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:27: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:36: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:77:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
75 | set {
76 | queue.async {
77 | self._apiHost = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
78 | }
79 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:92:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
90 | set {
91 | queue.async {
92 | self._apiKey = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
93 | }
94 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:107:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
105 | set {
106 | queue.async {
107 | self._segmentsToCheck = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
108 | }
109 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:122:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
120 | set {
121 | queue.async {
122 | self._odpServiceIntegrated = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
123 | }
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:150:20: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
148 |
149 | queueLock.async {
150 | guard !self.isFlushing else { return }
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
151 |
152 | self.isFlushing = true
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:201:29: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
199 | let delay = self.calculateRetryDelay(attempt: attempt)
200 | self.queueLock.asyncAfter(deadline: .now() + delay) {
201 | self.processNextBatch(failureCount: attempt, apiKey: apiKey, apiHost: apiHost)
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
202 | }
203 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:144:17: warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
97 | */
98 |
99 | open class OdpSegmentApiManager {
| `- note: class 'OdpSegmentApiManager' does not conform to the 'Sendable' protocol
100 | let logger = OPTLoggerFactory.getLogger()
101 | let resourceTimeoutInSecs: Int?
:
142 | guard error == nil, let data = data, let response = response as? HTTPURLResponse else {
143 | let msg = error?.localizedDescription ?? "invalid response"
144 | self.logger.d {
| `- warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
145 | "GraphQL download failed: \(msg)"
146 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
[91/102] Compiling Optimizely OdpSegmentApiManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/Implementation/Events/BatchEventBuilder.swift:20:24: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class BatchEventBuilder {
20 | static private var logger = OPTLoggerFactory.getLogger()
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | // MARK: - Impression Event
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:31: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:40: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:76:61: warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'V' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
76 | let newSegments = CacheElement(key: key, value: value)
| `- warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
77 | self.map[key] = newSegments
78 |
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:20: warning: variable 'item' was never mutated; consider changing to 'let' constant
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: variable 'item' was never mutated; consider changing to 'let' constant
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:27: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:36: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:77:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
75 | set {
76 | queue.async {
77 | self._apiHost = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
78 | }
79 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:92:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
90 | set {
91 | queue.async {
92 | self._apiKey = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
93 | }
94 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:107:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
105 | set {
106 | queue.async {
107 | self._segmentsToCheck = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
108 | }
109 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:122:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
120 | set {
121 | queue.async {
122 | self._odpServiceIntegrated = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
123 | }
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:150:20: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
148 |
149 | queueLock.async {
150 | guard !self.isFlushing else { return }
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
151 |
152 | self.isFlushing = true
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:201:29: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
199 | let delay = self.calculateRetryDelay(attempt: attempt)
200 | self.queueLock.asyncAfter(deadline: .now() + delay) {
201 | self.processNextBatch(failureCount: attempt, apiKey: apiKey, apiHost: apiHost)
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
202 | }
203 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:144:17: warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
97 | */
98 |
99 | open class OdpSegmentApiManager {
| `- note: class 'OdpSegmentApiManager' does not conform to the 'Sendable' protocol
100 | let logger = OPTLoggerFactory.getLogger()
101 | let resourceTimeoutInSecs: Int?
:
142 | guard error == nil, let data = data, let response = response as? HTTPURLResponse else {
143 | let msg = error?.localizedDescription ?? "invalid response"
144 | self.logger.d {
| `- warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
145 | "GraphQL download failed: \(msg)"
146 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
[92/102] Compiling Optimizely OdpSegmentManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/Implementation/Events/BatchEventBuilder.swift:20:24: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class BatchEventBuilder {
20 | static private var logger = OPTLoggerFactory.getLogger()
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | // MARK: - Impression Event
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:31: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:75:40: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
73 |
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
76 | let newSegments = CacheElement(key: key, value: value)
77 | self.map[key] = newSegments
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:76:61: warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'V' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
74 | queue.async(flags: .barrier) {
75 | let oldSegments = self.map[key]
76 | let newSegments = CacheElement(key: key, value: value)
| `- warning: capture of 'value' with non-sendable type 'V' in a '@Sendable' closure
77 | self.map[key] = newSegments
78 |
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:20: warning: variable 'item' was never mutated; consider changing to 'let' constant
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: variable 'item' was never mutated; consider changing to 'let' constant
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:27: warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: generic class 'LruCache' does not conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'self' with non-sendable type 'LruCache<K, V>' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/LruCache.swift:95:36: warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class LruCache<K: Hashable, V> {
| `- note: consider making generic parameter 'K' conform to the 'Sendable' protocol
20 |
21 | class CacheElement {
:
93 | if maxSize <= 0 { return }
94 | queue.async(flags: .barrier) {
95 | if var item = self.map[key] {
| `- warning: capture of 'key' with non-sendable type 'K' in a '@Sendable' closure
96 | self.removeFromLink(item)
97 | self.map[key] = nil
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:77:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
75 | set {
76 | queue.async {
77 | self._apiHost = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
78 | }
79 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:92:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
90 | set {
91 | queue.async {
92 | self._apiKey = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
93 | }
94 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:107:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
105 | set {
106 | queue.async {
107 | self._segmentsToCheck = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
108 | }
109 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpConfig.swift:122:17: warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
17 | import Foundation
18 |
19 | class OdpConfig {
| `- note: class 'OdpConfig' does not conform to the 'Sendable' protocol
20 | /// The host URL for the ODP audience segments API (optional).
21 | private var _apiHost: String?
:
120 | set {
121 | queue.async {
122 | self._odpServiceIntegrated = newValue
| `- warning: capture of 'self' with non-sendable type 'OdpConfig' in a '@Sendable' closure
123 | }
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventApiManager.swift:73:21: warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
71 | defer {
72 | if let errMessage = errMessage {
73 | completionHandler(.odpEventFailed(errMessage, canRetry))
| |- warning: capture of 'completionHandler' with non-sendable type '(OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
74 | } else {
75 | completionHandler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:150:20: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
148 |
149 | queueLock.async {
150 | guard !self.isFlushing else { return }
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
151 |
152 | self.isFlushing = true
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpEventManager.swift:201:29: warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class OdpEventManager {
| `- note: class 'OdpEventManager' does not conform to the 'Sendable' protocol
20 | var odpConfig = OdpConfig()
21 | var apiMgr: OdpEventApiManager
:
199 | let delay = self.calculateRetryDelay(attempt: attempt)
200 | self.queueLock.asyncAfter(deadline: .now() + delay) {
201 | self.processNextBatch(failureCount: attempt, apiKey: apiKey, apiHost: apiHost)
| `- warning: capture of 'self' with non-sendable type 'OdpEventManager' in a '@Sendable' closure
202 | }
203 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:144:17: warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
97 | */
98 |
99 | open class OdpSegmentApiManager {
| `- note: class 'OdpSegmentApiManager' does not conform to the 'Sendable' protocol
100 | let logger = OPTLoggerFactory.getLogger()
101 | let resourceTimeoutInSecs: Int?
:
142 | guard error == nil, let data = data, let response = response as? HTTPURLResponse else {
143 | let msg = error?.localizedDescription ?? "invalid response"
144 | self.logger.d {
| `- warning: capture of 'self' with non-sendable type 'OdpSegmentApiManager' in a '@Sendable' closure
145 | "GraphQL download failed: \(msg)"
146 | }
/Users/admin/builder/spi-builder-workspace/Sources/ODP/OdpSegmentApiManager.swift:138:17: warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
136 |
137 | defer {
138 | completionHandler(returnSegments, returnError)
| |- warning: capture of 'completionHandler' with non-sendable type '([String]?, OptimizelyError?) -> Void' in an isolated local function; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
139 | session.finishTasksAndInvalidate()
140 | }
[93/102] Compiling Optimizely OptimizelyConfig.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyError.swift:54:10: warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
52 | case conditionCannotBeEvaluated(_ hint: String)
53 | case evaluateAttributeInvalidCondition(_ condition: String)
54 | case evaluateAttributeInvalidType(_ condition: String, _ value: Any, _ key: String)
| `- warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
55 | case evaluateAttributeValueOutOfRange(_ condition: String, _ key: String)
56 | case evaluateAttributeInvalidFormat(_ hint: String)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/VuidManager.swift:24:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | public class VuidManager {
| `- note: class 'VuidManager' does not conform to the 'Sendable' protocol
20 | private var _vuid: String = ""
21 | private(set) var enable: Bool = false
22 | let logger = OPTLoggerFactory.getLogger()
23 | // a single vuid should be shared for all SDK instances
24 | public static let shared = VuidManager()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 |
26 | public func configure(enable: Bool) {
[94/102] Compiling Optimizely OptimizelyError.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyError.swift:54:10: warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
52 | case conditionCannotBeEvaluated(_ hint: String)
53 | case evaluateAttributeInvalidCondition(_ condition: String)
54 | case evaluateAttributeInvalidType(_ condition: String, _ value: Any, _ key: String)
| `- warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
55 | case evaluateAttributeValueOutOfRange(_ condition: String, _ key: String)
56 | case evaluateAttributeInvalidFormat(_ hint: String)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/VuidManager.swift:24:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | public class VuidManager {
| `- note: class 'VuidManager' does not conform to the 'Sendable' protocol
20 | private var _vuid: String = ""
21 | private(set) var enable: Bool = false
22 | let logger = OPTLoggerFactory.getLogger()
23 | // a single vuid should be shared for all SDK instances
24 | public static let shared = VuidManager()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 |
26 | public func configure(enable: Bool) {
[95/102] Compiling Optimizely OptimizelyJSON+ObjC.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyError.swift:54:10: warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
52 | case conditionCannotBeEvaluated(_ hint: String)
53 | case evaluateAttributeInvalidCondition(_ condition: String)
54 | case evaluateAttributeInvalidType(_ condition: String, _ value: Any, _ key: String)
| `- warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
55 | case evaluateAttributeValueOutOfRange(_ condition: String, _ key: String)
56 | case evaluateAttributeInvalidFormat(_ hint: String)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/VuidManager.swift:24:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | public class VuidManager {
| `- note: class 'VuidManager' does not conform to the 'Sendable' protocol
20 | private var _vuid: String = ""
21 | private(set) var enable: Bool = false
22 | let logger = OPTLoggerFactory.getLogger()
23 | // a single vuid should be shared for all SDK instances
24 | public static let shared = VuidManager()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 |
26 | public func configure(enable: Bool) {
[96/102] Compiling Optimizely OptimizelyJSON.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyError.swift:54:10: warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
52 | case conditionCannotBeEvaluated(_ hint: String)
53 | case evaluateAttributeInvalidCondition(_ condition: String)
54 | case evaluateAttributeInvalidType(_ condition: String, _ value: Any, _ key: String)
| `- warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
55 | case evaluateAttributeValueOutOfRange(_ condition: String, _ key: String)
56 | case evaluateAttributeInvalidFormat(_ hint: String)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/VuidManager.swift:24:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | public class VuidManager {
| `- note: class 'VuidManager' does not conform to the 'Sendable' protocol
20 | private var _vuid: String = ""
21 | private(set) var enable: Bool = false
22 | let logger = OPTLoggerFactory.getLogger()
23 | // a single vuid should be shared for all SDK instances
24 | public static let shared = VuidManager()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 |
26 | public func configure(enable: Bool) {
[97/102] Compiling Optimizely OptimizelyLogLevel.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyError.swift:54:10: warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
52 | case conditionCannotBeEvaluated(_ hint: String)
53 | case evaluateAttributeInvalidCondition(_ condition: String)
54 | case evaluateAttributeInvalidType(_ condition: String, _ value: Any, _ key: String)
| `- warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
55 | case evaluateAttributeValueOutOfRange(_ condition: String, _ key: String)
56 | case evaluateAttributeInvalidFormat(_ hint: String)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/VuidManager.swift:24:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | public class VuidManager {
| `- note: class 'VuidManager' does not conform to the 'Sendable' protocol
20 | private var _vuid: String = ""
21 | private(set) var enable: Bool = false
22 | let logger = OPTLoggerFactory.getLogger()
23 | // a single vuid should be shared for all SDK instances
24 | public static let shared = VuidManager()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 |
26 | public func configure(enable: Bool) {
[98/102] Compiling Optimizely OptimizelyResult.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyError.swift:54:10: warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
52 | case conditionCannotBeEvaluated(_ hint: String)
53 | case evaluateAttributeInvalidCondition(_ condition: String)
54 | case evaluateAttributeInvalidType(_ condition: String, _ value: Any, _ key: String)
| `- warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
55 | case evaluateAttributeValueOutOfRange(_ condition: String, _ key: String)
56 | case evaluateAttributeInvalidFormat(_ hint: String)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/VuidManager.swift:24:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | public class VuidManager {
| `- note: class 'VuidManager' does not conform to the 'Sendable' protocol
20 | private var _vuid: String = ""
21 | private(set) var enable: Bool = false
22 | let logger = OPTLoggerFactory.getLogger()
23 | // a single vuid should be shared for all SDK instances
24 | public static let shared = VuidManager()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 |
26 | public func configure(enable: Bool) {
[99/102] Compiling Optimizely VuidManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyError.swift:54:10: warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
52 | case conditionCannotBeEvaluated(_ hint: String)
53 | case evaluateAttributeInvalidCondition(_ condition: String)
54 | case evaluateAttributeInvalidType(_ condition: String, _ value: Any, _ key: String)
| `- warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
55 | case evaluateAttributeValueOutOfRange(_ condition: String, _ key: String)
56 | case evaluateAttributeInvalidFormat(_ hint: String)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/VuidManager.swift:24:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | public class VuidManager {
| `- note: class 'VuidManager' does not conform to the 'Sendable' protocol
20 | private var _vuid: String = ""
21 | private(set) var enable: Bool = false
22 | let logger = OPTLoggerFactory.getLogger()
23 | // a single vuid should be shared for all SDK instances
24 | public static let shared = VuidManager()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 |
26 | public func configure(enable: Bool) {
[100/102] Compiling Optimizely BackgroundingCallbacks.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyError.swift:54:10: warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
52 | case conditionCannotBeEvaluated(_ hint: String)
53 | case evaluateAttributeInvalidCondition(_ condition: String)
54 | case evaluateAttributeInvalidType(_ condition: String, _ value: Any, _ key: String)
| `- warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
55 | case evaluateAttributeValueOutOfRange(_ condition: String, _ key: String)
56 | case evaluateAttributeInvalidFormat(_ hint: String)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/VuidManager.swift:24:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | public class VuidManager {
| `- note: class 'VuidManager' does not conform to the 'Sendable' protocol
20 | private var _vuid: String = ""
21 | private(set) var enable: Bool = false
22 | let logger = OPTLoggerFactory.getLogger()
23 | // a single vuid should be shared for all SDK instances
24 | public static let shared = VuidManager()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 |
26 | public func configure(enable: Bool) {
[101/102] Compiling Optimizely DataStoreQueueStack.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyError.swift:54:10: warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
52 | case conditionCannotBeEvaluated(_ hint: String)
53 | case evaluateAttributeInvalidCondition(_ condition: String)
54 | case evaluateAttributeInvalidType(_ condition: String, _ value: Any, _ key: String)
| `- warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
55 | case evaluateAttributeValueOutOfRange(_ condition: String, _ key: String)
56 | case evaluateAttributeInvalidFormat(_ hint: String)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/VuidManager.swift:24:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | public class VuidManager {
| `- note: class 'VuidManager' does not conform to the 'Sendable' protocol
20 | private var _vuid: String = ""
21 | private(set) var enable: Bool = false
22 | let logger = OPTLoggerFactory.getLogger()
23 | // a single vuid should be shared for all SDK instances
24 | public static let shared = VuidManager()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 |
26 | public func configure(enable: Bool) {
[102/102] Compiling Optimizely OPTBucketer.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyError.swift:54:10: warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
52 | case conditionCannotBeEvaluated(_ hint: String)
53 | case evaluateAttributeInvalidCondition(_ condition: String)
54 | case evaluateAttributeInvalidType(_ condition: String, _ value: Any, _ key: String)
| `- warning: associated value 'evaluateAttributeInvalidType' of 'Sendable'-conforming enum 'OptimizelyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
55 | case evaluateAttributeValueOutOfRange(_ condition: String, _ key: String)
56 | case evaluateAttributeInvalidFormat(_ hint: String)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/VuidManager.swift:24:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | public class VuidManager {
| `- note: class 'VuidManager' does not conform to the 'Sendable' protocol
20 | private var _vuid: String = ""
21 | private(set) var enable: Bool = false
22 | let logger = OPTLoggerFactory.getLogger()
23 | // a single vuid should be shared for all SDK instances
24 | public static let shared = VuidManager()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'VuidManager' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 |
26 | public func configure(enable: Bool) {
Build complete! (8.45s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "Optimizely",
"name" : "Optimizely",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "15.0"
},
{
"name" : "tvos",
"version" : "15.0"
},
{
"name" : "macos",
"version" : "12.0"
},
{
"name" : "watchos",
"version" : "9.0"
}
],
"products" : [
{
"name" : "Optimizely",
"targets" : [
"Optimizely"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"swift_languages_versions" : [
"5"
],
"targets" : [
{
"c99name" : "Optimizely",
"module_type" : "SwiftTarget",
"name" : "Optimizely",
"path" : "Sources",
"product_memberships" : [
"Optimizely"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/Supporting Files/PrivacyInfo.xcprivacy",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"CMAB/CmabClient.swift",
"CMAB/CmabConfig.swift",
"CMAB/CmabService.swift",
"Customization/DefaultDatafileHandler.swift",
"Customization/DefaultEventDispatcher.swift",
"Customization/DefaultLogger.swift",
"Customization/DefaultUserProfileService.swift",
"Customization/Protocols/OPTDatafileHandler.swift",
"Customization/Protocols/OPTEventDispatcher.swift",
"Customization/Protocols/OPTLogger.swift",
"Customization/Protocols/OPTUserProfileService.swift",
"Data Model/Attribute.swift",
"Data Model/Audience/AttributeValue.swift",
"Data Model/Audience/Audience.swift",
"Data Model/Audience/ConditionHolder.swift",
"Data Model/Audience/ConditionLeaf.swift",
"Data Model/Audience/SemanticVersion.swift",
"Data Model/Audience/UserAttribute.swift",
"Data Model/Cmab.swift",
"Data Model/DispatchEvents/BatchEvent.swift",
"Data Model/DispatchEvents/EventForDispatch.swift",
"Data Model/Event.swift",
"Data Model/Experiment.swift",
"Data Model/ExperimentCore.swift",
"Data Model/FeatureFlag.swift",
"Data Model/FeatureVariable.swift",
"Data Model/Group.swift",
"Data Model/Holdout.swift",
"Data Model/HoldoutConfig.swift",
"Data Model/Integration.swift",
"Data Model/Project.swift",
"Data Model/ProjectConfig.swift",
"Data Model/Rollout.swift",
"Data Model/TrafficAllocation.swift",
"Data Model/Variable.swift",
"Data Model/Variation.swift",
"Extensions/Array+Extension.swift",
"Extensions/ArrayEventForDispatch+Extension.swift",
"Extensions/DataStoreQueueStackImpl+Extension.swift",
"Extensions/OptimizelyClient+Extension.swift",
"Implementation/Datastore/DataStoreFile.swift",
"Implementation/Datastore/DataStoreMemory.swift",
"Implementation/Datastore/DataStoreQueueStackImpl.swift",
"Implementation/Datastore/DataStoreUserDefaults.swift",
"Implementation/DecisionInfo.swift",
"Implementation/DecisionReasons.swift",
"Implementation/DecisionResponse.swift",
"Implementation/DefaultBucketer.swift",
"Implementation/DefaultDecisionService.swift",
"Implementation/DefaultNotificationCenter.swift",
"Implementation/Events/BatchEventBuilder.swift",
"Implementation/UserProfileTracker.swift",
"ODP/LruCache.swift",
"ODP/OdpConfig.swift",
"ODP/OdpEvent.swift",
"ODP/OdpEventApiManager.swift",
"ODP/OdpEventManager.swift",
"ODP/OdpManager.swift",
"ODP/OdpSegmentApiManager.swift",
"ODP/OdpSegmentManager.swift",
"ODP/OptimizelySdkSettings.swift",
"ODP/OptimizelySegmentOption.swift",
"Optimizely+Decide/OptimizelyClient+Decide.swift",
"Optimizely+Decide/OptimizelyDecideOption.swift",
"Optimizely+Decide/OptimizelyDecision.swift",
"Optimizely+Decide/OptimizelyUserContext+ObjC.swift",
"Optimizely+Decide/OptimizelyUserContext.swift",
"Optimizely/OptimizelyClient+ObjC.swift",
"Optimizely/OptimizelyClient.swift",
"Optimizely/OptimizelyConfig+ObjC.swift",
"Optimizely/OptimizelyConfig.swift",
"Optimizely/OptimizelyError.swift",
"Optimizely/OptimizelyJSON+ObjC.swift",
"Optimizely/OptimizelyJSON.swift",
"Optimizely/OptimizelyLogLevel.swift",
"Optimizely/OptimizelyResult.swift",
"Optimizely/VuidManager.swift",
"Protocols/BackgroundingCallbacks.swift",
"Protocols/DataStoreQueueStack.swift",
"Protocols/OPTBucketer.swift",
"Protocols/OPTDataStore.swift",
"Protocols/OPTDecisionService.swift",
"Protocols/OPTNotificationCenter.swift",
"Utils/AtomicArray.swift",
"Utils/AtomicDictionary.swift",
"Utils/AtomicProperty.swift",
"Utils/Constants.swift",
"Utils/HandlerRegistryService.swift",
"Utils/LogMessage.swift",
"Utils/MurmurHash3.swift",
"Utils/NetworkReachability.swift",
"Utils/Notifications.swift",
"Utils/RetryStrategy.swift",
"Utils/SDKVersion.swift",
"Utils/ThreadSafeLogger.swift",
"Utils/Utils.swift",
"watchOS/WatchBackgroundNotifier.swift"
],
"type" : "library"
}
],
"tools_version" : "5.3"
}
Done.