Build Information
Successful build of Optimizely, reference v5.1.1 (ae8f6b
), with Swift 6.1 for macOS (SPM) on 2 Jun 2025 23:26:30 UTC.
Swift 6 data race errors: 9
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 InferSendableFromCaptures
Build Log
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:244:28: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
242 | let now = Date()
243 | DispatchQueue.main.async {
244 | 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
245 | return
246 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:252:73: warning: sending 'datafileChangeNotification' risks causing data races; this is an error in the Swift 6 language mode
250 | startTime: now,
251 | updateInterval: updateInterval,
252 | 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
253 |
254 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:246:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
244 | DispatchQueue.main.async {
245 | // should check here again
246 | 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
247 |
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
[71/94] Compiling Optimizely DefaultUserProfileService.swift
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:55:31: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
56 | return .success(data)
57 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:67:17: warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
65 |
66 | let result = OptimizelyResult<Data?>.failure(optError)
67 | completionHandler(returnCached(result))
| |- warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
68 | return
69 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:55:31: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in an isolated local function; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in an isolated local function; this is an error in the Swift 6 language mode
56 | return .success(data)
57 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:82:21: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
80 | if error != nil {
81 | let optError = OptimizelyError.datafileDownloadFailed(error.debugDescription)
82 | self.logger.e(optError)
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
83 | result = returnCached(.failure(optError)) // error recovery
84 | } else if let response = response as? HTTPURLResponse {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:83:30: warning: capture of 'returnCached' with non-sendable type '(OptimizelyResult<Data?>?) -> OptimizelyResult<Data?>' in a '@Sendable' closure
81 | let optError = OptimizelyError.datafileDownloadFailed(error.debugDescription)
82 | self.logger.e(optError)
83 | result = returnCached(.failure(optError)) // error recovery
| |- warning: capture of 'returnCached' with non-sendable type '(OptimizelyResult<Data?>?) -> OptimizelyResult<Data?>' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
84 | } else if let response = response as? HTTPURLResponse {
85 | switch response.statusCode {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:108:17: warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
106 | self.reachability.updateNumContiguousFails(isError: (error != nil))
107 |
108 | completionHandler(result)
| |- warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
109 | }
110 |
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:54:18: warning: concurrently-executed local function 'returnCached' must be marked as '@Sendable'
52 | downloadQueue.async {
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
| `- warning: concurrently-executed local function 'returnCached' must be marked as '@Sendable'
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
56 | return .success(data)
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:249:17: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
247 |
248 | let timer = Timer.scheduledTimer(withTimeInterval: TimeInterval(updateInterval), repeats: false) { (timer) in
249 | self.performPerodicDownload(sdkKey: sdkKey,
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
250 | startTime: now,
251 | updateInterval: updateInterval,
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:252:73: warning: capture of 'datafileChangeNotification' with non-sendable type '((Data) -> Void)?' in a '@Sendable' closure
250 | startTime: now,
251 | updateInterval: updateInterval,
252 | datafileChangeNotification: datafileChangeNotification)
| |- warning: capture of 'datafileChangeNotification' with non-sendable type '((Data) -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
253 |
254 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:24:16: 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
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:120:38: 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 |
:
118 |
119 | func removeStoredEvents(num: Int) {
120 | if let removedItem = self.eventQueue.removeFirstItems(count: num), removedItem.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
121 | // avoid event-log-message preparation overheads with closure-logging
122 | self.logger.d({ "Removed stored \(num) events starting with \(removedItem.first!)" })
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:120:38: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated local function; this is an error in the Swift 6 language mode
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
118 |
119 | func removeStoredEvents(num: Int) {
120 | if let removedItem = self.eventQueue.removeFirstItems(count: num), removedItem.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated local function; this is an error in the Swift 6 language mode
121 | // avoid event-log-message preparation overheads with closure-logging
122 | self.logger.d({ "Removed stored \(num) events starting with \(removedItem.first!)" })
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:154:25: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated closure; this is an error in the Swift 6 language mode
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
152 | switch result {
153 | case .failure(let error):
154 | self.logger.e(error.reason)
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated closure; this is an error in the Swift 6 language mode
155 | failureCount += 1
156 | case .success:
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:193:17: warning: capture of 'completionHandler' with non-sendable type 'DispatchCompletionHandler' (aka '(OptimizelyResult<Data>) -> ()') in a '@Sendable' closure
191 | let task = session.uploadTask(with: request, from: event.body) { (_, _, error) in
192 | if let error = error {
193 | 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'
194 | } else {
195 | self.logger.d("Event Sent")
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:195: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 |
:
193 | completionHandler(.failure(.eventDispatchFailed(error.localizedDescription)))
194 | } else {
195 | self.logger.d("Event Sent")
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
196 | completionHandler(.success(event.body))
197 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:196:44: warning: capture of 'event' with non-sendable type 'EventForDispatch' in a '@Sendable' closure
194 | } else {
195 | self.logger.d("Event Sent")
196 | completionHandler(.success(event.body))
| `- warning: capture of 'event' with non-sendable type 'EventForDispatch' in a '@Sendable' closure
197 | }
198 |
/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 |
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:249: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 |
:
247 |
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
249 | self.queueLock.async {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
250 | if self.eventQueue.count > 0 {
251 | self.flushEvents()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:250: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 |
:
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
249 | self.queueLock.async {
250 | if self.eventQueue.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
251 | self.flushEvents()
252 | } 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:244:28: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
242 | let now = Date()
243 | DispatchQueue.main.async {
244 | 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
245 | return
246 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:252:73: warning: sending 'datafileChangeNotification' risks causing data races; this is an error in the Swift 6 language mode
250 | startTime: now,
251 | updateInterval: updateInterval,
252 | 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
253 |
254 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:246:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
244 | DispatchQueue.main.async {
245 | // should check here again
246 | 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
247 |
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
[72/94] Compiling Optimizely OPTDatafileHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:55:31: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
56 | return .success(data)
57 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:67:17: warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
65 |
66 | let result = OptimizelyResult<Data?>.failure(optError)
67 | completionHandler(returnCached(result))
| |- warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
68 | return
69 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:55:31: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in an isolated local function; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in an isolated local function; this is an error in the Swift 6 language mode
56 | return .success(data)
57 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:82:21: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
80 | if error != nil {
81 | let optError = OptimizelyError.datafileDownloadFailed(error.debugDescription)
82 | self.logger.e(optError)
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
83 | result = returnCached(.failure(optError)) // error recovery
84 | } else if let response = response as? HTTPURLResponse {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:83:30: warning: capture of 'returnCached' with non-sendable type '(OptimizelyResult<Data?>?) -> OptimizelyResult<Data?>' in a '@Sendable' closure
81 | let optError = OptimizelyError.datafileDownloadFailed(error.debugDescription)
82 | self.logger.e(optError)
83 | result = returnCached(.failure(optError)) // error recovery
| |- warning: capture of 'returnCached' with non-sendable type '(OptimizelyResult<Data?>?) -> OptimizelyResult<Data?>' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
84 | } else if let response = response as? HTTPURLResponse {
85 | switch response.statusCode {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:108:17: warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
106 | self.reachability.updateNumContiguousFails(isError: (error != nil))
107 |
108 | completionHandler(result)
| |- warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
109 | }
110 |
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:54:18: warning: concurrently-executed local function 'returnCached' must be marked as '@Sendable'
52 | downloadQueue.async {
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
| `- warning: concurrently-executed local function 'returnCached' must be marked as '@Sendable'
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
56 | return .success(data)
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:249:17: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
247 |
248 | let timer = Timer.scheduledTimer(withTimeInterval: TimeInterval(updateInterval), repeats: false) { (timer) in
249 | self.performPerodicDownload(sdkKey: sdkKey,
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
250 | startTime: now,
251 | updateInterval: updateInterval,
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:252:73: warning: capture of 'datafileChangeNotification' with non-sendable type '((Data) -> Void)?' in a '@Sendable' closure
250 | startTime: now,
251 | updateInterval: updateInterval,
252 | datafileChangeNotification: datafileChangeNotification)
| |- warning: capture of 'datafileChangeNotification' with non-sendable type '((Data) -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
253 |
254 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:24:16: 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
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:120:38: 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 |
:
118 |
119 | func removeStoredEvents(num: Int) {
120 | if let removedItem = self.eventQueue.removeFirstItems(count: num), removedItem.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
121 | // avoid event-log-message preparation overheads with closure-logging
122 | self.logger.d({ "Removed stored \(num) events starting with \(removedItem.first!)" })
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:120:38: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated local function; this is an error in the Swift 6 language mode
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
118 |
119 | func removeStoredEvents(num: Int) {
120 | if let removedItem = self.eventQueue.removeFirstItems(count: num), removedItem.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated local function; this is an error in the Swift 6 language mode
121 | // avoid event-log-message preparation overheads with closure-logging
122 | self.logger.d({ "Removed stored \(num) events starting with \(removedItem.first!)" })
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:154:25: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated closure; this is an error in the Swift 6 language mode
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
152 | switch result {
153 | case .failure(let error):
154 | self.logger.e(error.reason)
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated closure; this is an error in the Swift 6 language mode
155 | failureCount += 1
156 | case .success:
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:193:17: warning: capture of 'completionHandler' with non-sendable type 'DispatchCompletionHandler' (aka '(OptimizelyResult<Data>) -> ()') in a '@Sendable' closure
191 | let task = session.uploadTask(with: request, from: event.body) { (_, _, error) in
192 | if let error = error {
193 | 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'
194 | } else {
195 | self.logger.d("Event Sent")
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:195: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 |
:
193 | completionHandler(.failure(.eventDispatchFailed(error.localizedDescription)))
194 | } else {
195 | self.logger.d("Event Sent")
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
196 | completionHandler(.success(event.body))
197 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:196:44: warning: capture of 'event' with non-sendable type 'EventForDispatch' in a '@Sendable' closure
194 | } else {
195 | self.logger.d("Event Sent")
196 | completionHandler(.success(event.body))
| `- warning: capture of 'event' with non-sendable type 'EventForDispatch' in a '@Sendable' closure
197 | }
198 |
/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 |
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:249: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 |
:
247 |
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
249 | self.queueLock.async {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
250 | if self.eventQueue.count > 0 {
251 | self.flushEvents()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:250: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 |
:
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
249 | self.queueLock.async {
250 | if self.eventQueue.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
251 | self.flushEvents()
252 | } 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:244:28: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
242 | let now = Date()
243 | DispatchQueue.main.async {
244 | 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
245 | return
246 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:252:73: warning: sending 'datafileChangeNotification' risks causing data races; this is an error in the Swift 6 language mode
250 | startTime: now,
251 | updateInterval: updateInterval,
252 | 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
253 |
254 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:246:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
244 | DispatchQueue.main.async {
245 | // should check here again
246 | 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
247 |
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
[73/94] Compiling Optimizely OPTEventDispatcher.swift
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:55:31: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
56 | return .success(data)
57 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:67:17: warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
65 |
66 | let result = OptimizelyResult<Data?>.failure(optError)
67 | completionHandler(returnCached(result))
| |- warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
68 | return
69 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:55:31: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in an isolated local function; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in an isolated local function; this is an error in the Swift 6 language mode
56 | return .success(data)
57 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:82:21: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
80 | if error != nil {
81 | let optError = OptimizelyError.datafileDownloadFailed(error.debugDescription)
82 | self.logger.e(optError)
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
83 | result = returnCached(.failure(optError)) // error recovery
84 | } else if let response = response as? HTTPURLResponse {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:83:30: warning: capture of 'returnCached' with non-sendable type '(OptimizelyResult<Data?>?) -> OptimizelyResult<Data?>' in a '@Sendable' closure
81 | let optError = OptimizelyError.datafileDownloadFailed(error.debugDescription)
82 | self.logger.e(optError)
83 | result = returnCached(.failure(optError)) // error recovery
| |- warning: capture of 'returnCached' with non-sendable type '(OptimizelyResult<Data?>?) -> OptimizelyResult<Data?>' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
84 | } else if let response = response as? HTTPURLResponse {
85 | switch response.statusCode {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:108:17: warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
106 | self.reachability.updateNumContiguousFails(isError: (error != nil))
107 |
108 | completionHandler(result)
| |- warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
109 | }
110 |
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:54:18: warning: concurrently-executed local function 'returnCached' must be marked as '@Sendable'
52 | downloadQueue.async {
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
| `- warning: concurrently-executed local function 'returnCached' must be marked as '@Sendable'
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
56 | return .success(data)
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:249:17: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
247 |
248 | let timer = Timer.scheduledTimer(withTimeInterval: TimeInterval(updateInterval), repeats: false) { (timer) in
249 | self.performPerodicDownload(sdkKey: sdkKey,
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
250 | startTime: now,
251 | updateInterval: updateInterval,
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:252:73: warning: capture of 'datafileChangeNotification' with non-sendable type '((Data) -> Void)?' in a '@Sendable' closure
250 | startTime: now,
251 | updateInterval: updateInterval,
252 | datafileChangeNotification: datafileChangeNotification)
| |- warning: capture of 'datafileChangeNotification' with non-sendable type '((Data) -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
253 |
254 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:24:16: 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
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:120:38: 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 |
:
118 |
119 | func removeStoredEvents(num: Int) {
120 | if let removedItem = self.eventQueue.removeFirstItems(count: num), removedItem.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
121 | // avoid event-log-message preparation overheads with closure-logging
122 | self.logger.d({ "Removed stored \(num) events starting with \(removedItem.first!)" })
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:120:38: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated local function; this is an error in the Swift 6 language mode
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
118 |
119 | func removeStoredEvents(num: Int) {
120 | if let removedItem = self.eventQueue.removeFirstItems(count: num), removedItem.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated local function; this is an error in the Swift 6 language mode
121 | // avoid event-log-message preparation overheads with closure-logging
122 | self.logger.d({ "Removed stored \(num) events starting with \(removedItem.first!)" })
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:154:25: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated closure; this is an error in the Swift 6 language mode
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
152 | switch result {
153 | case .failure(let error):
154 | self.logger.e(error.reason)
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated closure; this is an error in the Swift 6 language mode
155 | failureCount += 1
156 | case .success:
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:193:17: warning: capture of 'completionHandler' with non-sendable type 'DispatchCompletionHandler' (aka '(OptimizelyResult<Data>) -> ()') in a '@Sendable' closure
191 | let task = session.uploadTask(with: request, from: event.body) { (_, _, error) in
192 | if let error = error {
193 | 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'
194 | } else {
195 | self.logger.d("Event Sent")
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:195: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 |
:
193 | completionHandler(.failure(.eventDispatchFailed(error.localizedDescription)))
194 | } else {
195 | self.logger.d("Event Sent")
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
196 | completionHandler(.success(event.body))
197 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:196:44: warning: capture of 'event' with non-sendable type 'EventForDispatch' in a '@Sendable' closure
194 | } else {
195 | self.logger.d("Event Sent")
196 | completionHandler(.success(event.body))
| `- warning: capture of 'event' with non-sendable type 'EventForDispatch' in a '@Sendable' closure
197 | }
198 |
/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 |
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:249: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 |
:
247 |
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
249 | self.queueLock.async {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
250 | if self.eventQueue.count > 0 {
251 | self.flushEvents()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:250: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 |
:
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
249 | self.queueLock.async {
250 | if self.eventQueue.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
251 | self.flushEvents()
252 | } 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:244:28: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
242 | let now = Date()
243 | DispatchQueue.main.async {
244 | 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
245 | return
246 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:252:73: warning: sending 'datafileChangeNotification' risks causing data races; this is an error in the Swift 6 language mode
250 | startTime: now,
251 | updateInterval: updateInterval,
252 | 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
253 |
254 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:246:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
244 | DispatchQueue.main.async {
245 | // should check here again
246 | 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
247 |
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
[74/94] Compiling Optimizely OPTLogger.swift
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:55:31: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
56 | return .success(data)
57 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:67:17: warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
65 |
66 | let result = OptimizelyResult<Data?>.failure(optError)
67 | completionHandler(returnCached(result))
| |- warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
68 | return
69 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:55:31: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in an isolated local function; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in an isolated local function; this is an error in the Swift 6 language mode
56 | return .success(data)
57 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:82:21: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
80 | if error != nil {
81 | let optError = OptimizelyError.datafileDownloadFailed(error.debugDescription)
82 | self.logger.e(optError)
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
83 | result = returnCached(.failure(optError)) // error recovery
84 | } else if let response = response as? HTTPURLResponse {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:83:30: warning: capture of 'returnCached' with non-sendable type '(OptimizelyResult<Data?>?) -> OptimizelyResult<Data?>' in a '@Sendable' closure
81 | let optError = OptimizelyError.datafileDownloadFailed(error.debugDescription)
82 | self.logger.e(optError)
83 | result = returnCached(.failure(optError)) // error recovery
| |- warning: capture of 'returnCached' with non-sendable type '(OptimizelyResult<Data?>?) -> OptimizelyResult<Data?>' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
84 | } else if let response = response as? HTTPURLResponse {
85 | switch response.statusCode {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:108:17: warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
106 | self.reachability.updateNumContiguousFails(isError: (error != nil))
107 |
108 | completionHandler(result)
| |- warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
109 | }
110 |
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:54:18: warning: concurrently-executed local function 'returnCached' must be marked as '@Sendable'
52 | downloadQueue.async {
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
| `- warning: concurrently-executed local function 'returnCached' must be marked as '@Sendable'
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
56 | return .success(data)
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:249:17: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
247 |
248 | let timer = Timer.scheduledTimer(withTimeInterval: TimeInterval(updateInterval), repeats: false) { (timer) in
249 | self.performPerodicDownload(sdkKey: sdkKey,
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
250 | startTime: now,
251 | updateInterval: updateInterval,
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:252:73: warning: capture of 'datafileChangeNotification' with non-sendable type '((Data) -> Void)?' in a '@Sendable' closure
250 | startTime: now,
251 | updateInterval: updateInterval,
252 | datafileChangeNotification: datafileChangeNotification)
| |- warning: capture of 'datafileChangeNotification' with non-sendable type '((Data) -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
253 |
254 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:24:16: 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
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:120:38: 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 |
:
118 |
119 | func removeStoredEvents(num: Int) {
120 | if let removedItem = self.eventQueue.removeFirstItems(count: num), removedItem.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
121 | // avoid event-log-message preparation overheads with closure-logging
122 | self.logger.d({ "Removed stored \(num) events starting with \(removedItem.first!)" })
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:120:38: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated local function; this is an error in the Swift 6 language mode
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
118 |
119 | func removeStoredEvents(num: Int) {
120 | if let removedItem = self.eventQueue.removeFirstItems(count: num), removedItem.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated local function; this is an error in the Swift 6 language mode
121 | // avoid event-log-message preparation overheads with closure-logging
122 | self.logger.d({ "Removed stored \(num) events starting with \(removedItem.first!)" })
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:154:25: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated closure; this is an error in the Swift 6 language mode
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
152 | switch result {
153 | case .failure(let error):
154 | self.logger.e(error.reason)
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated closure; this is an error in the Swift 6 language mode
155 | failureCount += 1
156 | case .success:
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:193:17: warning: capture of 'completionHandler' with non-sendable type 'DispatchCompletionHandler' (aka '(OptimizelyResult<Data>) -> ()') in a '@Sendable' closure
191 | let task = session.uploadTask(with: request, from: event.body) { (_, _, error) in
192 | if let error = error {
193 | 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'
194 | } else {
195 | self.logger.d("Event Sent")
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:195: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 |
:
193 | completionHandler(.failure(.eventDispatchFailed(error.localizedDescription)))
194 | } else {
195 | self.logger.d("Event Sent")
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
196 | completionHandler(.success(event.body))
197 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:196:44: warning: capture of 'event' with non-sendable type 'EventForDispatch' in a '@Sendable' closure
194 | } else {
195 | self.logger.d("Event Sent")
196 | completionHandler(.success(event.body))
| `- warning: capture of 'event' with non-sendable type 'EventForDispatch' in a '@Sendable' closure
197 | }
198 |
/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 |
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:249: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 |
:
247 |
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
249 | self.queueLock.async {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
250 | if self.eventQueue.count > 0 {
251 | self.flushEvents()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:250: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 |
:
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
249 | self.queueLock.async {
250 | if self.eventQueue.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
251 | self.flushEvents()
252 | } 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:244:28: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
242 | let now = Date()
243 | DispatchQueue.main.async {
244 | 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
245 | return
246 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:252:73: warning: sending 'datafileChangeNotification' risks causing data races; this is an error in the Swift 6 language mode
250 | startTime: now,
251 | updateInterval: updateInterval,
252 | 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
253 |
254 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:246:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
244 | DispatchQueue.main.async {
245 | // should check here again
246 | 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
247 |
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
[75/94] Compiling Optimizely OPTUserProfileService.swift
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:55:31: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
56 | return .success(data)
57 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:67:17: warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
65 |
66 | let result = OptimizelyResult<Data?>.failure(optError)
67 | completionHandler(returnCached(result))
| |- warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
68 | return
69 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:55:31: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in an isolated local function; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in an isolated local function; this is an error in the Swift 6 language mode
56 | return .success(data)
57 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:82:21: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
80 | if error != nil {
81 | let optError = OptimizelyError.datafileDownloadFailed(error.debugDescription)
82 | self.logger.e(optError)
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
83 | result = returnCached(.failure(optError)) // error recovery
84 | } else if let response = response as? HTTPURLResponse {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:83:30: warning: capture of 'returnCached' with non-sendable type '(OptimizelyResult<Data?>?) -> OptimizelyResult<Data?>' in a '@Sendable' closure
81 | let optError = OptimizelyError.datafileDownloadFailed(error.debugDescription)
82 | self.logger.e(optError)
83 | result = returnCached(.failure(optError)) // error recovery
| |- warning: capture of 'returnCached' with non-sendable type '(OptimizelyResult<Data?>?) -> OptimizelyResult<Data?>' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
84 | } else if let response = response as? HTTPURLResponse {
85 | switch response.statusCode {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:108:17: warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
106 | self.reachability.updateNumContiguousFails(isError: (error != nil))
107 |
108 | completionHandler(result)
| |- warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
109 | }
110 |
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:54:18: warning: concurrently-executed local function 'returnCached' must be marked as '@Sendable'
52 | downloadQueue.async {
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
| `- warning: concurrently-executed local function 'returnCached' must be marked as '@Sendable'
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
56 | return .success(data)
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:249:17: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
247 |
248 | let timer = Timer.scheduledTimer(withTimeInterval: TimeInterval(updateInterval), repeats: false) { (timer) in
249 | self.performPerodicDownload(sdkKey: sdkKey,
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
250 | startTime: now,
251 | updateInterval: updateInterval,
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:252:73: warning: capture of 'datafileChangeNotification' with non-sendable type '((Data) -> Void)?' in a '@Sendable' closure
250 | startTime: now,
251 | updateInterval: updateInterval,
252 | datafileChangeNotification: datafileChangeNotification)
| |- warning: capture of 'datafileChangeNotification' with non-sendable type '((Data) -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
253 |
254 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:24:16: 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
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:120:38: 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 |
:
118 |
119 | func removeStoredEvents(num: Int) {
120 | if let removedItem = self.eventQueue.removeFirstItems(count: num), removedItem.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
121 | // avoid event-log-message preparation overheads with closure-logging
122 | self.logger.d({ "Removed stored \(num) events starting with \(removedItem.first!)" })
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:120:38: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated local function; this is an error in the Swift 6 language mode
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
118 |
119 | func removeStoredEvents(num: Int) {
120 | if let removedItem = self.eventQueue.removeFirstItems(count: num), removedItem.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated local function; this is an error in the Swift 6 language mode
121 | // avoid event-log-message preparation overheads with closure-logging
122 | self.logger.d({ "Removed stored \(num) events starting with \(removedItem.first!)" })
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:154:25: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated closure; this is an error in the Swift 6 language mode
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
152 | switch result {
153 | case .failure(let error):
154 | self.logger.e(error.reason)
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated closure; this is an error in the Swift 6 language mode
155 | failureCount += 1
156 | case .success:
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:193:17: warning: capture of 'completionHandler' with non-sendable type 'DispatchCompletionHandler' (aka '(OptimizelyResult<Data>) -> ()') in a '@Sendable' closure
191 | let task = session.uploadTask(with: request, from: event.body) { (_, _, error) in
192 | if let error = error {
193 | 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'
194 | } else {
195 | self.logger.d("Event Sent")
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:195: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 |
:
193 | completionHandler(.failure(.eventDispatchFailed(error.localizedDescription)))
194 | } else {
195 | self.logger.d("Event Sent")
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
196 | completionHandler(.success(event.body))
197 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:196:44: warning: capture of 'event' with non-sendable type 'EventForDispatch' in a '@Sendable' closure
194 | } else {
195 | self.logger.d("Event Sent")
196 | completionHandler(.success(event.body))
| `- warning: capture of 'event' with non-sendable type 'EventForDispatch' in a '@Sendable' closure
197 | }
198 |
/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 |
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:249: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 |
:
247 |
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
249 | self.queueLock.async {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
250 | if self.eventQueue.count > 0 {
251 | self.flushEvents()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:250: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 |
:
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
249 | self.queueLock.async {
250 | if self.eventQueue.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
251 | self.flushEvents()
252 | } 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:244:28: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
242 | let now = Date()
243 | DispatchQueue.main.async {
244 | 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
245 | return
246 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:252:73: warning: sending 'datafileChangeNotification' risks causing data races; this is an error in the Swift 6 language mode
250 | startTime: now,
251 | updateInterval: updateInterval,
252 | 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
253 |
254 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:246:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
244 | DispatchQueue.main.async {
245 | // should check here again
246 | 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
247 |
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
[76/94] Compiling Optimizely Attribute.swift
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:55:31: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
56 | return .success(data)
57 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:67:17: warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
65 |
66 | let result = OptimizelyResult<Data?>.failure(optError)
67 | completionHandler(returnCached(result))
| |- warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
68 | return
69 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:55:31: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in an isolated local function; this is an error in the Swift 6 language mode
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in an isolated local function; this is an error in the Swift 6 language mode
56 | return .success(data)
57 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:82:21: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
80 | if error != nil {
81 | let optError = OptimizelyError.datafileDownloadFailed(error.debugDescription)
82 | self.logger.e(optError)
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
83 | result = returnCached(.failure(optError)) // error recovery
84 | } else if let response = response as? HTTPURLResponse {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:83:30: warning: capture of 'returnCached' with non-sendable type '(OptimizelyResult<Data?>?) -> OptimizelyResult<Data?>' in a '@Sendable' closure
81 | let optError = OptimizelyError.datafileDownloadFailed(error.debugDescription)
82 | self.logger.e(optError)
83 | result = returnCached(.failure(optError)) // error recovery
| |- warning: capture of 'returnCached' with non-sendable type '(OptimizelyResult<Data?>?) -> OptimizelyResult<Data?>' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
84 | } else if let response = response as? HTTPURLResponse {
85 | switch response.statusCode {
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:108:17: warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
106 | self.reachability.updateNumContiguousFails(isError: (error != nil))
107 |
108 | completionHandler(result)
| |- warning: capture of 'completionHandler' with non-sendable type 'DatafileDownloadCompletionHandler' (aka '(OptimizelyResult<Optional<Data>>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
109 | }
110 |
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:54:18: warning: concurrently-executed local function 'returnCached' must be marked as '@Sendable'
52 | downloadQueue.async {
53 |
54 | func returnCached(_ result: OptimizelyResult<Data?>? = nil) -> OptimizelyResult<Data?> {
| `- warning: concurrently-executed local function 'returnCached' must be marked as '@Sendable'
55 | if let data = self.loadSavedDatafile(sdkKey: sdkKey) {
56 | return .success(data)
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:249:17: warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
17 | import Foundation
18 |
19 | open class DefaultDatafileHandler: OPTDatafileHandler {
| `- note: class 'DefaultDatafileHandler' does not conform to the 'Sendable' protocol
20 | // endpoint used to get the datafile. This is settable after you create a OptimizelyClient instance.
21 | public var endPointStringFormat = "https://cdn.optimizely.com/datafiles/%@.json"
:
247 |
248 | let timer = Timer.scheduledTimer(withTimeInterval: TimeInterval(updateInterval), repeats: false) { (timer) in
249 | self.performPerodicDownload(sdkKey: sdkKey,
| `- warning: capture of 'self' with non-sendable type 'DefaultDatafileHandler' in a '@Sendable' closure
250 | startTime: now,
251 | updateInterval: updateInterval,
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:252:73: warning: capture of 'datafileChangeNotification' with non-sendable type '((Data) -> Void)?' in a '@Sendable' closure
250 | startTime: now,
251 | updateInterval: updateInterval,
252 | datafileChangeNotification: datafileChangeNotification)
| |- warning: capture of 'datafileChangeNotification' with non-sendable type '((Data) -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
253 |
254 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:24:16: 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
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:120:38: 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 |
:
118 |
119 | func removeStoredEvents(num: Int) {
120 | if let removedItem = self.eventQueue.removeFirstItems(count: num), removedItem.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
121 | // avoid event-log-message preparation overheads with closure-logging
122 | self.logger.d({ "Removed stored \(num) events starting with \(removedItem.first!)" })
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:120:38: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated local function; this is an error in the Swift 6 language mode
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
118 |
119 | func removeStoredEvents(num: Int) {
120 | if let removedItem = self.eventQueue.removeFirstItems(count: num), removedItem.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated local function; this is an error in the Swift 6 language mode
121 | // avoid event-log-message preparation overheads with closure-logging
122 | self.logger.d({ "Removed stored \(num) events starting with \(removedItem.first!)" })
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:154:25: warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated closure; this is an error in the Swift 6 language mode
21 | }
22 |
23 | open class DefaultEventDispatcher: BackgroundingCallbacks, OPTEventDispatcher {
| `- note: class 'DefaultEventDispatcher' does not conform to the 'Sendable' protocol
24 | static let sharedInstance = DefaultEventDispatcher()
25 |
:
152 | switch result {
153 | case .failure(let error):
154 | self.logger.e(error.reason)
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in an isolated closure; this is an error in the Swift 6 language mode
155 | failureCount += 1
156 | case .success:
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:193:17: warning: capture of 'completionHandler' with non-sendable type 'DispatchCompletionHandler' (aka '(OptimizelyResult<Data>) -> ()') in a '@Sendable' closure
191 | let task = session.uploadTask(with: request, from: event.body) { (_, _, error) in
192 | if let error = error {
193 | 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'
194 | } else {
195 | self.logger.d("Event Sent")
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:195: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 |
:
193 | completionHandler(.failure(.eventDispatchFailed(error.localizedDescription)))
194 | } else {
195 | self.logger.d("Event Sent")
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
196 | completionHandler(.success(event.body))
197 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:196:44: warning: capture of 'event' with non-sendable type 'EventForDispatch' in a '@Sendable' closure
194 | } else {
195 | self.logger.d("Event Sent")
196 | completionHandler(.success(event.body))
| `- warning: capture of 'event' with non-sendable type 'EventForDispatch' in a '@Sendable' closure
197 | }
198 |
/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 |
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:249: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 |
:
247 |
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
249 | self.queueLock.async {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
250 | if self.eventQueue.count > 0 {
251 | self.flushEvents()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:250: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 |
:
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
249 | self.queueLock.async {
250 | if self.eventQueue.count > 0 {
| `- warning: capture of 'self' with non-sendable type 'DefaultEventDispatcher' in a '@Sendable' closure
251 | self.flushEvents()
252 | } 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:244:28: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
242 | let now = Date()
243 | DispatchQueue.main.async {
244 | 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
245 | return
246 | }
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultDatafileHandler.swift:252:73: warning: sending 'datafileChangeNotification' risks causing data races; this is an error in the Swift 6 language mode
250 | startTime: now,
251 | updateInterval: updateInterval,
252 | 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
253 |
254 | timer.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Customization/DefaultEventDispatcher.swift:246:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
244 | DispatchQueue.main.async {
245 | // should check here again
246 | 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
247 |
248 | self.timer.property = Timer.scheduledTimer(withTimeInterval: self.timerInterval, repeats: true) { _ in
[77/94] Compiling Optimizely LogMessage.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:68:17: 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 | var monitor: AnyObject?
:
66 |
67 | // this task runs in sync queue. set private variable (instead of isConnected to avoid deadlock)
68 | 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
69 | }
70 |
/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/94] Compiling Optimizely MurmurHash3.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:68:17: 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 | var monitor: AnyObject?
:
66 |
67 | // this task runs in sync queue. set private variable (instead of isConnected to avoid deadlock)
68 | 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
69 | }
70 |
/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/94] Compiling Optimizely NetworkReachability.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:68:17: 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 | var monitor: AnyObject?
:
66 |
67 | // this task runs in sync queue. set private variable (instead of isConnected to avoid deadlock)
68 | 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
69 | }
70 |
/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/94] Compiling Optimizely Notifications.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:68:17: 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 | var monitor: AnyObject?
:
66 |
67 | // this task runs in sync queue. set private variable (instead of isConnected to avoid deadlock)
68 | 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
69 | }
70 |
/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/94] Compiling Optimizely SDKVersion.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:68:17: 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 | var monitor: AnyObject?
:
66 |
67 | // this task runs in sync queue. set private variable (instead of isConnected to avoid deadlock)
68 | 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
69 | }
70 |
/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/94] Compiling Optimizely ThreadSafeLogger.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:68:17: 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 | var monitor: AnyObject?
:
66 |
67 | // this task runs in sync queue. set private variable (instead of isConnected to avoid deadlock)
68 | 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
69 | }
70 |
/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/94] Compiling Optimizely Utils.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:68:17: 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 | var monitor: AnyObject?
:
66 |
67 | // this task runs in sync queue. set private variable (instead of isConnected to avoid deadlock)
68 | 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
69 | }
70 |
/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 {
[84/94] Compiling Optimizely WatchBackgroundNotifier.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:68:17: 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 | var monitor: AnyObject?
:
66 |
67 | // this task runs in sync queue. set private variable (instead of isConnected to avoid deadlock)
68 | 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
69 | }
70 |
/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 {
[85/94] Compiling Optimizely resource_bundle_accessor.swift
/Users/admin/builder/spi-builder-workspace/Sources/Utils/NetworkReachability.swift:68:17: 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 | var monitor: AnyObject?
:
66 |
67 | // this task runs in sync queue. set private variable (instead of isConnected to avoid deadlock)
68 | 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
69 | }
70 |
/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 {
[86/94] 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) {
[87/94] 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) {
[88/94] 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) {
[89/94] 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) {
[90/94] 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) {
[91/94] 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) {
[92/94] 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) {
[93/94] 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) {
[94/94] 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) {
Build complete! (7.86s)
warning: 'spi-builder-workspace': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
/Users/admin/builder/spi-builder-workspace/Sources/Supporting Files/Info.plist
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "Optimizely",
"name" : "Optimizely",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "10.0"
},
{
"name" : "tvos",
"version" : "10.0"
},
{
"name" : "macos",
"version" : "10.14"
},
{
"name" : "watchos",
"version" : "3.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" : [
"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/DispatchEvents/BatchEvent.swift",
"Data Model/DispatchEvents/EventForDispatch.swift",
"Data Model/Event.swift",
"Data Model/Experiment.swift",
"Data Model/FeatureFlag.swift",
"Data Model/FeatureVariable.swift",
"Data Model/Group.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/SDKVersion.swift",
"Utils/ThreadSafeLogger.swift",
"Utils/Utils.swift",
"watchOS/WatchBackgroundNotifier.swift"
],
"type" : "library"
}
],
"tools_version" : "5.3"
}
Done.