Build Information
Successful build of Statsig, reference 1.62.9 (452529), with Swift 6.1 for macOS (SPM) on 24 Oct 2026 07:41:09 UTC.
Swift 6 data race errors: 23
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCapturesBuild Log
317 | self?.saveOverrides()
318 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:323:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
321 | func overrideParamStore(_ storeName: String, _ value: [String: Any]) {
322 | storeQueue.async(flags: .barrier) { [weak self] in
323 | self?.localOverrides[jsonDict: InternalStore.paramStoresKey]?[storeName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
324 | self?.saveOverrides()
325 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:323:88: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
321 | func overrideParamStore(_ storeName: String, _ value: [String: Any]) {
322 | storeQueue.async(flags: .barrier) { [weak self] in
323 | self?.localOverrides[jsonDict: InternalStore.paramStoresKey]?[storeName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
324 | self?.saveOverrides()
325 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:330:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
328 | func removeOverride(_ name: String) {
329 | storeQueue.async(flags: .barrier) { [weak self] in
330 | self?.localOverrides[jsonDict: InternalStore.gatesKey]?.removeValue(forKey: name)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
331 | self?.localOverrides[jsonDict: InternalStore.configsKey]?.removeValue(forKey: name)
332 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?.removeValue(forKey: name)
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:340:30: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
338 | func removeAllOverrides() {
339 | storeQueue.async(flags: .barrier) { [weak self] in
340 | guard let this = self else { return }
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
341 | this.localOverrides = InternalStore.getEmptyOverrides()
342 | this.saveOverrides()
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:410:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
408 | private func removeStickyExperimentThreaded(_ name: String) {
409 | storeQueue.async(flags: .barrier) { [weak self] in
410 | self?.cache.removeStickyExperiment(name)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
411 | }
412 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:420:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
418 |
419 | storeQueue.async(flags: .barrier) { [weak self] in
420 | self?.cache.saveStickyExperimentIfNeeded(name, config)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
421 | }
422 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:420:60: warning: capture of 'config' with non-sendable type 'any ConfigProtocol' in a '@Sendable' closure
418 |
419 | storeQueue.async(flags: .barrier) { [weak self] in
420 | self?.cache.saveStickyExperimentIfNeeded(name, config)
| `- warning: capture of 'config' with non-sendable type 'any ConfigProtocol' in a '@Sendable' closure
421 | }
422 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/ConfigProtocol.swift:1:19: note: protocol 'ConfigProtocol' does not conform to the 'Sendable' protocol
1 | internal protocol ConfigProtocol {
| `- note: protocol 'ConfigProtocol' does not conform to the 'Sendable' protocol
2 | var isExperimentActive: Bool { get }
3 | var isUserInExperiment: Bool { get }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:445:17: warning: capture of 'cacheByID' with non-sendable type '[String : [String : Any]]' in a '@Sendable' closure
443 | DispatchQueue.global(qos: .utility).async {
444 | UserPayloadStore.migrateIfNeeded(
445 | cacheByID,
| `- warning: capture of 'cacheByID' with non-sendable type '[String : [String : Any]]' in a '@Sendable' closure
446 | cacheKeyMapping,
447 | self.userDefaults,
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:447:17: warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
445 | cacheByID,
446 | cacheKeyMapping,
447 | self.userDefaults,
| `- warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
448 | storageService.userPayload.storageAdapter
449 | )
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:448:17: warning: capture of 'storageService' with non-sendable type 'StorageService' in a '@Sendable' closure
446 | cacheKeyMapping,
447 | self.userDefaults,
448 | storageService.userPayload.storageAdapter
| `- warning: capture of 'storageService' with non-sendable type 'StorageService' in a '@Sendable' closure
449 | )
450 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/StorageService.swift:3:13: note: class 'StorageService' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | final class StorageService {
| `- note: class 'StorageService' does not conform to the 'Sendable' protocol
4 |
5 | private static let servicesLock = NSLock()
[74/86] Compiling Statsig StatsigUserCustomTypeConvertible.swift
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/StatsigOptions.swift:360:16: warning: static property 'defaultOptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
358 | extension StatsigOptions {
359 | // Global variables are lazy by default
360 | static var defaultOptions = StatsigOptions()
| |- warning: static property 'defaultOptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultOptions' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultOptions' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
361 |
362 | internal func getDictionaryForLogging() -> [String: Any] {
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/FileStorageAdapter.swift:4:16: warning: static property 'defaultRootDirectory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | final class FileStorageAdapter: StorageAdapter {
4 | static var defaultRootDirectory = FileManager
| |- warning: static property 'defaultRootDirectory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultRootDirectory' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultRootDirectory' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 | .default.urls(for: .cachesDirectory, in: .userDomainMask)
6 | .first?
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:79:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
77 | func saveNetworkFallbackInfo(_ fallbackInfo: FallbackInfo?) {
78 | storeQueue.async(flags: .barrier) { [weak self] in
79 | self?.cache.saveNetworkFallbackInfo(fallbackInfo)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
80 | }
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:79:49: warning: capture of 'fallbackInfo' with non-sendable type 'FallbackInfo?' (aka 'Optional<Dictionary<Endpoint, FallbackInfoEntry>>') in a '@Sendable' closure
77 | func saveNetworkFallbackInfo(_ fallbackInfo: FallbackInfo?) {
78 | storeQueue.async(flags: .barrier) { [weak self] in
79 | self?.cache.saveNetworkFallbackInfo(fallbackInfo)
| `- warning: capture of 'fallbackInfo' with non-sendable type 'FallbackInfo?' (aka 'Optional<Dictionary<Endpoint, FallbackInfoEntry>>') in a '@Sendable' closure
80 | }
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/NetworkFallbackResolver.swift:7:15: note: consider making struct 'FallbackInfoEntry' conform to the 'Sendable' protocol
5 | }
6 |
7 | public struct FallbackInfoEntry {
| `- note: consider making struct 'FallbackInfoEntry' conform to the 'Sendable' protocol
8 | var url: URL
9 | var previous: [String]
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:119:13: warning: capture of 'completion' with non-sendable type '([String : Any?], EvaluationDetails) -> Void' in a '@Sendable' closure
117 | ) {
118 | storeQueue.async {
119 | completion(self.cache.getInitializeResponseValues(), self.cache.getEvaluationDetails())
| |- warning: capture of 'completion' with non-sendable type '([String : Any?], EvaluationDetails) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
120 | }
121 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:119:24: warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
117 | ) {
118 | storeQueue.async {
119 | completion(self.cache.getInitializeResponseValues(), self.cache.getEvaluationDetails())
| `- warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
120 | }
121 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:231:16: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
229 | ) {
230 | storeQueue.async(flags: .barrier) { [weak self] in
231 | if self?.cache.source == .Loading {
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
232 | self?.cache.source = .NoValues
233 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:236:17: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
234 |
235 | completionQueue.async {
236 | completion?()
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
237 | }
238 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:236:17: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
234 |
235 | completionQueue.async {
236 | completion?()
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
237 | }
238 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:257:30: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
255 |
256 | storeQueue.async(flags: .barrier) { [weak self] in
257 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
258 |
259 | self.cache.saveValues(values, cacheKey, userHash)
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:259:35: warning: capture of 'values' with non-sendable type '[String : Any]' in a '@Sendable' closure
257 | guard let self = self else { return }
258 |
259 | self.cache.saveValues(values, cacheKey, userHash)
| `- warning: capture of 'values' with non-sendable type '[String : Any]' in a '@Sendable' closure
260 |
261 | DispatchQueue.global().async { completion?() }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:261:44: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
259 | self.cache.saveValues(values, cacheKey, userHash)
260 |
261 | DispatchQueue.global().async { completion?() }
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
262 | }
263 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:261:44: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
259 | self.cache.saveValues(values, cacheKey, userHash)
260 |
261 | DispatchQueue.global().async { completion?() }
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
262 | }
263 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:267:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
265 | func updateUser(_ newUser: StatsigUser, values: [String: Any]? = nil) {
266 | storeQueue.async(flags: .barrier) { [weak self] in
267 | self?.cache.updateUser(newUser, values)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
268 | }
269 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:267:45: warning: capture of 'values' with non-sendable type '[String : Any]?' in a '@Sendable' closure
265 | func updateUser(_ newUser: StatsigUser, values: [String: Any]? = nil) {
266 | storeQueue.async(flags: .barrier) { [weak self] in
267 | self?.cache.updateUser(newUser, values)
| `- warning: capture of 'values' with non-sendable type '[String : Any]?' in a '@Sendable' closure
268 | }
269 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:302:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
300 | func overrideGate(_ gateName: String, _ value: Bool) {
301 | storeQueue.async(flags: .barrier) { [weak self] in
302 | self?.localOverrides[jsonDict: InternalStore.gatesKey]?[gateName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
303 | self?.saveOverrides()
304 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:309:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
307 | func overrideConfig(_ configName: String, _ value: [String: Any]) {
308 | storeQueue.async(flags: .barrier) { [weak self] in
309 | self?.localOverrides[jsonDict: InternalStore.configsKey]?[configName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
310 | self?.saveOverrides()
311 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:309:85: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
307 | func overrideConfig(_ configName: String, _ value: [String: Any]) {
308 | storeQueue.async(flags: .barrier) { [weak self] in
309 | self?.localOverrides[jsonDict: InternalStore.configsKey]?[configName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
310 | self?.saveOverrides()
311 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:316:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
314 | func overrideLayer(_ layerName: String, _ value: [String: Any]) {
315 | storeQueue.async(flags: .barrier) { [weak self] in
316 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?[layerName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
317 | self?.saveOverrides()
318 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:316:89: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
314 | func overrideLayer(_ layerName: String, _ value: [String: Any]) {
315 | storeQueue.async(flags: .barrier) { [weak self] in
316 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?[layerName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
317 | self?.saveOverrides()
318 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:323:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
321 | func overrideParamStore(_ storeName: String, _ value: [String: Any]) {
322 | storeQueue.async(flags: .barrier) { [weak self] in
323 | self?.localOverrides[jsonDict: InternalStore.paramStoresKey]?[storeName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
324 | self?.saveOverrides()
325 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:323:88: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
321 | func overrideParamStore(_ storeName: String, _ value: [String: Any]) {
322 | storeQueue.async(flags: .barrier) { [weak self] in
323 | self?.localOverrides[jsonDict: InternalStore.paramStoresKey]?[storeName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
324 | self?.saveOverrides()
325 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:330:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
328 | func removeOverride(_ name: String) {
329 | storeQueue.async(flags: .barrier) { [weak self] in
330 | self?.localOverrides[jsonDict: InternalStore.gatesKey]?.removeValue(forKey: name)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
331 | self?.localOverrides[jsonDict: InternalStore.configsKey]?.removeValue(forKey: name)
332 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?.removeValue(forKey: name)
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:340:30: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
338 | func removeAllOverrides() {
339 | storeQueue.async(flags: .barrier) { [weak self] in
340 | guard let this = self else { return }
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
341 | this.localOverrides = InternalStore.getEmptyOverrides()
342 | this.saveOverrides()
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:410:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
408 | private func removeStickyExperimentThreaded(_ name: String) {
409 | storeQueue.async(flags: .barrier) { [weak self] in
410 | self?.cache.removeStickyExperiment(name)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
411 | }
412 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:420:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
418 |
419 | storeQueue.async(flags: .barrier) { [weak self] in
420 | self?.cache.saveStickyExperimentIfNeeded(name, config)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
421 | }
422 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:420:60: warning: capture of 'config' with non-sendable type 'any ConfigProtocol' in a '@Sendable' closure
418 |
419 | storeQueue.async(flags: .barrier) { [weak self] in
420 | self?.cache.saveStickyExperimentIfNeeded(name, config)
| `- warning: capture of 'config' with non-sendable type 'any ConfigProtocol' in a '@Sendable' closure
421 | }
422 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/ConfigProtocol.swift:1:19: note: protocol 'ConfigProtocol' does not conform to the 'Sendable' protocol
1 | internal protocol ConfigProtocol {
| `- note: protocol 'ConfigProtocol' does not conform to the 'Sendable' protocol
2 | var isExperimentActive: Bool { get }
3 | var isUserInExperiment: Bool { get }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:445:17: warning: capture of 'cacheByID' with non-sendable type '[String : [String : Any]]' in a '@Sendable' closure
443 | DispatchQueue.global(qos: .utility).async {
444 | UserPayloadStore.migrateIfNeeded(
445 | cacheByID,
| `- warning: capture of 'cacheByID' with non-sendable type '[String : [String : Any]]' in a '@Sendable' closure
446 | cacheKeyMapping,
447 | self.userDefaults,
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:447:17: warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
445 | cacheByID,
446 | cacheKeyMapping,
447 | self.userDefaults,
| `- warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
448 | storageService.userPayload.storageAdapter
449 | )
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:448:17: warning: capture of 'storageService' with non-sendable type 'StorageService' in a '@Sendable' closure
446 | cacheKeyMapping,
447 | self.userDefaults,
448 | storageService.userPayload.storageAdapter
| `- warning: capture of 'storageService' with non-sendable type 'StorageService' in a '@Sendable' closure
449 | )
450 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/StorageService.swift:3:13: note: class 'StorageService' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | final class StorageService {
| `- note: class 'StorageService' does not conform to the 'Sendable' protocol
4 |
5 | private static let servicesLock = NSLock()
[75/86] Compiling Statsig BootstrapMetadata.swift
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/StatsigOptions.swift:360:16: warning: static property 'defaultOptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
358 | extension StatsigOptions {
359 | // Global variables are lazy by default
360 | static var defaultOptions = StatsigOptions()
| |- warning: static property 'defaultOptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultOptions' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultOptions' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
361 |
362 | internal func getDictionaryForLogging() -> [String: Any] {
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/FileStorageAdapter.swift:4:16: warning: static property 'defaultRootDirectory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | final class FileStorageAdapter: StorageAdapter {
4 | static var defaultRootDirectory = FileManager
| |- warning: static property 'defaultRootDirectory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultRootDirectory' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultRootDirectory' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 | .default.urls(for: .cachesDirectory, in: .userDomainMask)
6 | .first?
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:79:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
77 | func saveNetworkFallbackInfo(_ fallbackInfo: FallbackInfo?) {
78 | storeQueue.async(flags: .barrier) { [weak self] in
79 | self?.cache.saveNetworkFallbackInfo(fallbackInfo)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
80 | }
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:79:49: warning: capture of 'fallbackInfo' with non-sendable type 'FallbackInfo?' (aka 'Optional<Dictionary<Endpoint, FallbackInfoEntry>>') in a '@Sendable' closure
77 | func saveNetworkFallbackInfo(_ fallbackInfo: FallbackInfo?) {
78 | storeQueue.async(flags: .barrier) { [weak self] in
79 | self?.cache.saveNetworkFallbackInfo(fallbackInfo)
| `- warning: capture of 'fallbackInfo' with non-sendable type 'FallbackInfo?' (aka 'Optional<Dictionary<Endpoint, FallbackInfoEntry>>') in a '@Sendable' closure
80 | }
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/NetworkFallbackResolver.swift:7:15: note: consider making struct 'FallbackInfoEntry' conform to the 'Sendable' protocol
5 | }
6 |
7 | public struct FallbackInfoEntry {
| `- note: consider making struct 'FallbackInfoEntry' conform to the 'Sendable' protocol
8 | var url: URL
9 | var previous: [String]
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:119:13: warning: capture of 'completion' with non-sendable type '([String : Any?], EvaluationDetails) -> Void' in a '@Sendable' closure
117 | ) {
118 | storeQueue.async {
119 | completion(self.cache.getInitializeResponseValues(), self.cache.getEvaluationDetails())
| |- warning: capture of 'completion' with non-sendable type '([String : Any?], EvaluationDetails) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
120 | }
121 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:119:24: warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
117 | ) {
118 | storeQueue.async {
119 | completion(self.cache.getInitializeResponseValues(), self.cache.getEvaluationDetails())
| `- warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
120 | }
121 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:231:16: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
229 | ) {
230 | storeQueue.async(flags: .barrier) { [weak self] in
231 | if self?.cache.source == .Loading {
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
232 | self?.cache.source = .NoValues
233 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:236:17: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
234 |
235 | completionQueue.async {
236 | completion?()
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
237 | }
238 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:236:17: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
234 |
235 | completionQueue.async {
236 | completion?()
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
237 | }
238 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:257:30: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
255 |
256 | storeQueue.async(flags: .barrier) { [weak self] in
257 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
258 |
259 | self.cache.saveValues(values, cacheKey, userHash)
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:259:35: warning: capture of 'values' with non-sendable type '[String : Any]' in a '@Sendable' closure
257 | guard let self = self else { return }
258 |
259 | self.cache.saveValues(values, cacheKey, userHash)
| `- warning: capture of 'values' with non-sendable type '[String : Any]' in a '@Sendable' closure
260 |
261 | DispatchQueue.global().async { completion?() }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:261:44: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
259 | self.cache.saveValues(values, cacheKey, userHash)
260 |
261 | DispatchQueue.global().async { completion?() }
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
262 | }
263 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:261:44: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
259 | self.cache.saveValues(values, cacheKey, userHash)
260 |
261 | DispatchQueue.global().async { completion?() }
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
262 | }
263 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:267:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
265 | func updateUser(_ newUser: StatsigUser, values: [String: Any]? = nil) {
266 | storeQueue.async(flags: .barrier) { [weak self] in
267 | self?.cache.updateUser(newUser, values)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
268 | }
269 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:267:45: warning: capture of 'values' with non-sendable type '[String : Any]?' in a '@Sendable' closure
265 | func updateUser(_ newUser: StatsigUser, values: [String: Any]? = nil) {
266 | storeQueue.async(flags: .barrier) { [weak self] in
267 | self?.cache.updateUser(newUser, values)
| `- warning: capture of 'values' with non-sendable type '[String : Any]?' in a '@Sendable' closure
268 | }
269 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:302:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
300 | func overrideGate(_ gateName: String, _ value: Bool) {
301 | storeQueue.async(flags: .barrier) { [weak self] in
302 | self?.localOverrides[jsonDict: InternalStore.gatesKey]?[gateName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
303 | self?.saveOverrides()
304 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:309:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
307 | func overrideConfig(_ configName: String, _ value: [String: Any]) {
308 | storeQueue.async(flags: .barrier) { [weak self] in
309 | self?.localOverrides[jsonDict: InternalStore.configsKey]?[configName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
310 | self?.saveOverrides()
311 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:309:85: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
307 | func overrideConfig(_ configName: String, _ value: [String: Any]) {
308 | storeQueue.async(flags: .barrier) { [weak self] in
309 | self?.localOverrides[jsonDict: InternalStore.configsKey]?[configName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
310 | self?.saveOverrides()
311 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:316:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
314 | func overrideLayer(_ layerName: String, _ value: [String: Any]) {
315 | storeQueue.async(flags: .barrier) { [weak self] in
316 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?[layerName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
317 | self?.saveOverrides()
318 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:316:89: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
314 | func overrideLayer(_ layerName: String, _ value: [String: Any]) {
315 | storeQueue.async(flags: .barrier) { [weak self] in
316 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?[layerName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
317 | self?.saveOverrides()
318 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:323:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
321 | func overrideParamStore(_ storeName: String, _ value: [String: Any]) {
322 | storeQueue.async(flags: .barrier) { [weak self] in
323 | self?.localOverrides[jsonDict: InternalStore.paramStoresKey]?[storeName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
324 | self?.saveOverrides()
325 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:323:88: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
321 | func overrideParamStore(_ storeName: String, _ value: [String: Any]) {
322 | storeQueue.async(flags: .barrier) { [weak self] in
323 | self?.localOverrides[jsonDict: InternalStore.paramStoresKey]?[storeName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
324 | self?.saveOverrides()
325 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:330:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
328 | func removeOverride(_ name: String) {
329 | storeQueue.async(flags: .barrier) { [weak self] in
330 | self?.localOverrides[jsonDict: InternalStore.gatesKey]?.removeValue(forKey: name)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
331 | self?.localOverrides[jsonDict: InternalStore.configsKey]?.removeValue(forKey: name)
332 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?.removeValue(forKey: name)
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:340:30: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
338 | func removeAllOverrides() {
339 | storeQueue.async(flags: .barrier) { [weak self] in
340 | guard let this = self else { return }
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
341 | this.localOverrides = InternalStore.getEmptyOverrides()
342 | this.saveOverrides()
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:410:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
408 | private func removeStickyExperimentThreaded(_ name: String) {
409 | storeQueue.async(flags: .barrier) { [weak self] in
410 | self?.cache.removeStickyExperiment(name)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
411 | }
412 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:420:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
418 |
419 | storeQueue.async(flags: .barrier) { [weak self] in
420 | self?.cache.saveStickyExperimentIfNeeded(name, config)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
421 | }
422 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:420:60: warning: capture of 'config' with non-sendable type 'any ConfigProtocol' in a '@Sendable' closure
418 |
419 | storeQueue.async(flags: .barrier) { [weak self] in
420 | self?.cache.saveStickyExperimentIfNeeded(name, config)
| `- warning: capture of 'config' with non-sendable type 'any ConfigProtocol' in a '@Sendable' closure
421 | }
422 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/ConfigProtocol.swift:1:19: note: protocol 'ConfigProtocol' does not conform to the 'Sendable' protocol
1 | internal protocol ConfigProtocol {
| `- note: protocol 'ConfigProtocol' does not conform to the 'Sendable' protocol
2 | var isExperimentActive: Bool { get }
3 | var isUserInExperiment: Bool { get }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:445:17: warning: capture of 'cacheByID' with non-sendable type '[String : [String : Any]]' in a '@Sendable' closure
443 | DispatchQueue.global(qos: .utility).async {
444 | UserPayloadStore.migrateIfNeeded(
445 | cacheByID,
| `- warning: capture of 'cacheByID' with non-sendable type '[String : [String : Any]]' in a '@Sendable' closure
446 | cacheKeyMapping,
447 | self.userDefaults,
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:447:17: warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
445 | cacheByID,
446 | cacheKeyMapping,
447 | self.userDefaults,
| `- warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
448 | storageService.userPayload.storageAdapter
449 | )
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:448:17: warning: capture of 'storageService' with non-sendable type 'StorageService' in a '@Sendable' closure
446 | cacheKeyMapping,
447 | self.userDefaults,
448 | storageService.userPayload.storageAdapter
| `- warning: capture of 'storageService' with non-sendable type 'StorageService' in a '@Sendable' closure
449 | )
450 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/StorageService.swift:3:13: note: class 'StorageService' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | final class StorageService {
| `- note: class 'StorageService' does not conform to the 'Sendable' protocol
4 |
5 | private static let servicesLock = NSLock()
[76/86] Compiling Statsig FileStorageAdapter.swift
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/StatsigOptions.swift:360:16: warning: static property 'defaultOptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
358 | extension StatsigOptions {
359 | // Global variables are lazy by default
360 | static var defaultOptions = StatsigOptions()
| |- warning: static property 'defaultOptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultOptions' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultOptions' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
361 |
362 | internal func getDictionaryForLogging() -> [String: Any] {
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/FileStorageAdapter.swift:4:16: warning: static property 'defaultRootDirectory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | final class FileStorageAdapter: StorageAdapter {
4 | static var defaultRootDirectory = FileManager
| |- warning: static property 'defaultRootDirectory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultRootDirectory' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultRootDirectory' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 | .default.urls(for: .cachesDirectory, in: .userDomainMask)
6 | .first?
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:79:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
77 | func saveNetworkFallbackInfo(_ fallbackInfo: FallbackInfo?) {
78 | storeQueue.async(flags: .barrier) { [weak self] in
79 | self?.cache.saveNetworkFallbackInfo(fallbackInfo)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
80 | }
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:79:49: warning: capture of 'fallbackInfo' with non-sendable type 'FallbackInfo?' (aka 'Optional<Dictionary<Endpoint, FallbackInfoEntry>>') in a '@Sendable' closure
77 | func saveNetworkFallbackInfo(_ fallbackInfo: FallbackInfo?) {
78 | storeQueue.async(flags: .barrier) { [weak self] in
79 | self?.cache.saveNetworkFallbackInfo(fallbackInfo)
| `- warning: capture of 'fallbackInfo' with non-sendable type 'FallbackInfo?' (aka 'Optional<Dictionary<Endpoint, FallbackInfoEntry>>') in a '@Sendable' closure
80 | }
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/NetworkFallbackResolver.swift:7:15: note: consider making struct 'FallbackInfoEntry' conform to the 'Sendable' protocol
5 | }
6 |
7 | public struct FallbackInfoEntry {
| `- note: consider making struct 'FallbackInfoEntry' conform to the 'Sendable' protocol
8 | var url: URL
9 | var previous: [String]
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:119:13: warning: capture of 'completion' with non-sendable type '([String : Any?], EvaluationDetails) -> Void' in a '@Sendable' closure
117 | ) {
118 | storeQueue.async {
119 | completion(self.cache.getInitializeResponseValues(), self.cache.getEvaluationDetails())
| |- warning: capture of 'completion' with non-sendable type '([String : Any?], EvaluationDetails) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
120 | }
121 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:119:24: warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
117 | ) {
118 | storeQueue.async {
119 | completion(self.cache.getInitializeResponseValues(), self.cache.getEvaluationDetails())
| `- warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
120 | }
121 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:231:16: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
229 | ) {
230 | storeQueue.async(flags: .barrier) { [weak self] in
231 | if self?.cache.source == .Loading {
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
232 | self?.cache.source = .NoValues
233 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:236:17: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
234 |
235 | completionQueue.async {
236 | completion?()
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
237 | }
238 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:236:17: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
234 |
235 | completionQueue.async {
236 | completion?()
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
237 | }
238 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:257:30: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
255 |
256 | storeQueue.async(flags: .barrier) { [weak self] in
257 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
258 |
259 | self.cache.saveValues(values, cacheKey, userHash)
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:259:35: warning: capture of 'values' with non-sendable type '[String : Any]' in a '@Sendable' closure
257 | guard let self = self else { return }
258 |
259 | self.cache.saveValues(values, cacheKey, userHash)
| `- warning: capture of 'values' with non-sendable type '[String : Any]' in a '@Sendable' closure
260 |
261 | DispatchQueue.global().async { completion?() }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:261:44: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
259 | self.cache.saveValues(values, cacheKey, userHash)
260 |
261 | DispatchQueue.global().async { completion?() }
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
262 | }
263 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:261:44: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
259 | self.cache.saveValues(values, cacheKey, userHash)
260 |
261 | DispatchQueue.global().async { completion?() }
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
262 | }
263 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:267:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
265 | func updateUser(_ newUser: StatsigUser, values: [String: Any]? = nil) {
266 | storeQueue.async(flags: .barrier) { [weak self] in
267 | self?.cache.updateUser(newUser, values)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
268 | }
269 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:267:45: warning: capture of 'values' with non-sendable type '[String : Any]?' in a '@Sendable' closure
265 | func updateUser(_ newUser: StatsigUser, values: [String: Any]? = nil) {
266 | storeQueue.async(flags: .barrier) { [weak self] in
267 | self?.cache.updateUser(newUser, values)
| `- warning: capture of 'values' with non-sendable type '[String : Any]?' in a '@Sendable' closure
268 | }
269 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:302:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
300 | func overrideGate(_ gateName: String, _ value: Bool) {
301 | storeQueue.async(flags: .barrier) { [weak self] in
302 | self?.localOverrides[jsonDict: InternalStore.gatesKey]?[gateName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
303 | self?.saveOverrides()
304 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:309:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
307 | func overrideConfig(_ configName: String, _ value: [String: Any]) {
308 | storeQueue.async(flags: .barrier) { [weak self] in
309 | self?.localOverrides[jsonDict: InternalStore.configsKey]?[configName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
310 | self?.saveOverrides()
311 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:309:85: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
307 | func overrideConfig(_ configName: String, _ value: [String: Any]) {
308 | storeQueue.async(flags: .barrier) { [weak self] in
309 | self?.localOverrides[jsonDict: InternalStore.configsKey]?[configName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
310 | self?.saveOverrides()
311 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:316:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
314 | func overrideLayer(_ layerName: String, _ value: [String: Any]) {
315 | storeQueue.async(flags: .barrier) { [weak self] in
316 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?[layerName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
317 | self?.saveOverrides()
318 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:316:89: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
314 | func overrideLayer(_ layerName: String, _ value: [String: Any]) {
315 | storeQueue.async(flags: .barrier) { [weak self] in
316 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?[layerName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
317 | self?.saveOverrides()
318 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:323:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
321 | func overrideParamStore(_ storeName: String, _ value: [String: Any]) {
322 | storeQueue.async(flags: .barrier) { [weak self] in
323 | self?.localOverrides[jsonDict: InternalStore.paramStoresKey]?[storeName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
324 | self?.saveOverrides()
325 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:323:88: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
321 | func overrideParamStore(_ storeName: String, _ value: [String: Any]) {
322 | storeQueue.async(flags: .barrier) { [weak self] in
323 | self?.localOverrides[jsonDict: InternalStore.paramStoresKey]?[storeName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
324 | self?.saveOverrides()
325 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:330:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
328 | func removeOverride(_ name: String) {
329 | storeQueue.async(flags: .barrier) { [weak self] in
330 | self?.localOverrides[jsonDict: InternalStore.gatesKey]?.removeValue(forKey: name)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
331 | self?.localOverrides[jsonDict: InternalStore.configsKey]?.removeValue(forKey: name)
332 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?.removeValue(forKey: name)
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:340:30: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
338 | func removeAllOverrides() {
339 | storeQueue.async(flags: .barrier) { [weak self] in
340 | guard let this = self else { return }
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
341 | this.localOverrides = InternalStore.getEmptyOverrides()
342 | this.saveOverrides()
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:410:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
408 | private func removeStickyExperimentThreaded(_ name: String) {
409 | storeQueue.async(flags: .barrier) { [weak self] in
410 | self?.cache.removeStickyExperiment(name)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
411 | }
412 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:420:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
418 |
419 | storeQueue.async(flags: .barrier) { [weak self] in
420 | self?.cache.saveStickyExperimentIfNeeded(name, config)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
421 | }
422 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:420:60: warning: capture of 'config' with non-sendable type 'any ConfigProtocol' in a '@Sendable' closure
418 |
419 | storeQueue.async(flags: .barrier) { [weak self] in
420 | self?.cache.saveStickyExperimentIfNeeded(name, config)
| `- warning: capture of 'config' with non-sendable type 'any ConfigProtocol' in a '@Sendable' closure
421 | }
422 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/ConfigProtocol.swift:1:19: note: protocol 'ConfigProtocol' does not conform to the 'Sendable' protocol
1 | internal protocol ConfigProtocol {
| `- note: protocol 'ConfigProtocol' does not conform to the 'Sendable' protocol
2 | var isExperimentActive: Bool { get }
3 | var isUserInExperiment: Bool { get }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:445:17: warning: capture of 'cacheByID' with non-sendable type '[String : [String : Any]]' in a '@Sendable' closure
443 | DispatchQueue.global(qos: .utility).async {
444 | UserPayloadStore.migrateIfNeeded(
445 | cacheByID,
| `- warning: capture of 'cacheByID' with non-sendable type '[String : [String : Any]]' in a '@Sendable' closure
446 | cacheKeyMapping,
447 | self.userDefaults,
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:447:17: warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
445 | cacheByID,
446 | cacheKeyMapping,
447 | self.userDefaults,
| `- warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
448 | storageService.userPayload.storageAdapter
449 | )
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:448:17: warning: capture of 'storageService' with non-sendable type 'StorageService' in a '@Sendable' closure
446 | cacheKeyMapping,
447 | self.userDefaults,
448 | storageService.userPayload.storageAdapter
| `- warning: capture of 'storageService' with non-sendable type 'StorageService' in a '@Sendable' closure
449 | )
450 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/StorageService.swift:3:13: note: class 'StorageService' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | final class StorageService {
| `- note: class 'StorageService' does not conform to the 'Sendable' protocol
4 |
5 | private static let servicesLock = NSLock()
[77/86] Compiling Statsig InternalStore.swift
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/StatsigOptions.swift:360:16: warning: static property 'defaultOptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
358 | extension StatsigOptions {
359 | // Global variables are lazy by default
360 | static var defaultOptions = StatsigOptions()
| |- warning: static property 'defaultOptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultOptions' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultOptions' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
361 |
362 | internal func getDictionaryForLogging() -> [String: Any] {
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/FileStorageAdapter.swift:4:16: warning: static property 'defaultRootDirectory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | final class FileStorageAdapter: StorageAdapter {
4 | static var defaultRootDirectory = FileManager
| |- warning: static property 'defaultRootDirectory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultRootDirectory' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultRootDirectory' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 | .default.urls(for: .cachesDirectory, in: .userDomainMask)
6 | .first?
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:79:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
77 | func saveNetworkFallbackInfo(_ fallbackInfo: FallbackInfo?) {
78 | storeQueue.async(flags: .barrier) { [weak self] in
79 | self?.cache.saveNetworkFallbackInfo(fallbackInfo)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
80 | }
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:79:49: warning: capture of 'fallbackInfo' with non-sendable type 'FallbackInfo?' (aka 'Optional<Dictionary<Endpoint, FallbackInfoEntry>>') in a '@Sendable' closure
77 | func saveNetworkFallbackInfo(_ fallbackInfo: FallbackInfo?) {
78 | storeQueue.async(flags: .barrier) { [weak self] in
79 | self?.cache.saveNetworkFallbackInfo(fallbackInfo)
| `- warning: capture of 'fallbackInfo' with non-sendable type 'FallbackInfo?' (aka 'Optional<Dictionary<Endpoint, FallbackInfoEntry>>') in a '@Sendable' closure
80 | }
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/NetworkFallbackResolver.swift:7:15: note: consider making struct 'FallbackInfoEntry' conform to the 'Sendable' protocol
5 | }
6 |
7 | public struct FallbackInfoEntry {
| `- note: consider making struct 'FallbackInfoEntry' conform to the 'Sendable' protocol
8 | var url: URL
9 | var previous: [String]
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:119:13: warning: capture of 'completion' with non-sendable type '([String : Any?], EvaluationDetails) -> Void' in a '@Sendable' closure
117 | ) {
118 | storeQueue.async {
119 | completion(self.cache.getInitializeResponseValues(), self.cache.getEvaluationDetails())
| |- warning: capture of 'completion' with non-sendable type '([String : Any?], EvaluationDetails) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
120 | }
121 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:119:24: warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
117 | ) {
118 | storeQueue.async {
119 | completion(self.cache.getInitializeResponseValues(), self.cache.getEvaluationDetails())
| `- warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
120 | }
121 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:231:16: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
229 | ) {
230 | storeQueue.async(flags: .barrier) { [weak self] in
231 | if self?.cache.source == .Loading {
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
232 | self?.cache.source = .NoValues
233 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:236:17: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
234 |
235 | completionQueue.async {
236 | completion?()
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
237 | }
238 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:236:17: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
234 |
235 | completionQueue.async {
236 | completion?()
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
237 | }
238 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:257:30: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
255 |
256 | storeQueue.async(flags: .barrier) { [weak self] in
257 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
258 |
259 | self.cache.saveValues(values, cacheKey, userHash)
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:259:35: warning: capture of 'values' with non-sendable type '[String : Any]' in a '@Sendable' closure
257 | guard let self = self else { return }
258 |
259 | self.cache.saveValues(values, cacheKey, userHash)
| `- warning: capture of 'values' with non-sendable type '[String : Any]' in a '@Sendable' closure
260 |
261 | DispatchQueue.global().async { completion?() }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:261:44: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
259 | self.cache.saveValues(values, cacheKey, userHash)
260 |
261 | DispatchQueue.global().async { completion?() }
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
262 | }
263 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:261:44: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
259 | self.cache.saveValues(values, cacheKey, userHash)
260 |
261 | DispatchQueue.global().async { completion?() }
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
262 | }
263 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:267:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
265 | func updateUser(_ newUser: StatsigUser, values: [String: Any]? = nil) {
266 | storeQueue.async(flags: .barrier) { [weak self] in
267 | self?.cache.updateUser(newUser, values)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
268 | }
269 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:267:45: warning: capture of 'values' with non-sendable type '[String : Any]?' in a '@Sendable' closure
265 | func updateUser(_ newUser: StatsigUser, values: [String: Any]? = nil) {
266 | storeQueue.async(flags: .barrier) { [weak self] in
267 | self?.cache.updateUser(newUser, values)
| `- warning: capture of 'values' with non-sendable type '[String : Any]?' in a '@Sendable' closure
268 | }
269 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:302:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
300 | func overrideGate(_ gateName: String, _ value: Bool) {
301 | storeQueue.async(flags: .barrier) { [weak self] in
302 | self?.localOverrides[jsonDict: InternalStore.gatesKey]?[gateName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
303 | self?.saveOverrides()
304 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:309:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
307 | func overrideConfig(_ configName: String, _ value: [String: Any]) {
308 | storeQueue.async(flags: .barrier) { [weak self] in
309 | self?.localOverrides[jsonDict: InternalStore.configsKey]?[configName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
310 | self?.saveOverrides()
311 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:309:85: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
307 | func overrideConfig(_ configName: String, _ value: [String: Any]) {
308 | storeQueue.async(flags: .barrier) { [weak self] in
309 | self?.localOverrides[jsonDict: InternalStore.configsKey]?[configName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
310 | self?.saveOverrides()
311 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:316:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
314 | func overrideLayer(_ layerName: String, _ value: [String: Any]) {
315 | storeQueue.async(flags: .barrier) { [weak self] in
316 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?[layerName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
317 | self?.saveOverrides()
318 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:316:89: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
314 | func overrideLayer(_ layerName: String, _ value: [String: Any]) {
315 | storeQueue.async(flags: .barrier) { [weak self] in
316 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?[layerName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
317 | self?.saveOverrides()
318 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:323:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
321 | func overrideParamStore(_ storeName: String, _ value: [String: Any]) {
322 | storeQueue.async(flags: .barrier) { [weak self] in
323 | self?.localOverrides[jsonDict: InternalStore.paramStoresKey]?[storeName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
324 | self?.saveOverrides()
325 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:323:88: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
321 | func overrideParamStore(_ storeName: String, _ value: [String: Any]) {
322 | storeQueue.async(flags: .barrier) { [weak self] in
323 | self?.localOverrides[jsonDict: InternalStore.paramStoresKey]?[storeName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
324 | self?.saveOverrides()
325 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:330:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
328 | func removeOverride(_ name: String) {
329 | storeQueue.async(flags: .barrier) { [weak self] in
330 | self?.localOverrides[jsonDict: InternalStore.gatesKey]?.removeValue(forKey: name)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
331 | self?.localOverrides[jsonDict: InternalStore.configsKey]?.removeValue(forKey: name)
332 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?.removeValue(forKey: name)
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:340:30: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
338 | func removeAllOverrides() {
339 | storeQueue.async(flags: .barrier) { [weak self] in
340 | guard let this = self else { return }
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
341 | this.localOverrides = InternalStore.getEmptyOverrides()
342 | this.saveOverrides()
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:410:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
408 | private func removeStickyExperimentThreaded(_ name: String) {
409 | storeQueue.async(flags: .barrier) { [weak self] in
410 | self?.cache.removeStickyExperiment(name)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
411 | }
412 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:420:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
418 |
419 | storeQueue.async(flags: .barrier) { [weak self] in
420 | self?.cache.saveStickyExperimentIfNeeded(name, config)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
421 | }
422 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:420:60: warning: capture of 'config' with non-sendable type 'any ConfigProtocol' in a '@Sendable' closure
418 |
419 | storeQueue.async(flags: .barrier) { [weak self] in
420 | self?.cache.saveStickyExperimentIfNeeded(name, config)
| `- warning: capture of 'config' with non-sendable type 'any ConfigProtocol' in a '@Sendable' closure
421 | }
422 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/ConfigProtocol.swift:1:19: note: protocol 'ConfigProtocol' does not conform to the 'Sendable' protocol
1 | internal protocol ConfigProtocol {
| `- note: protocol 'ConfigProtocol' does not conform to the 'Sendable' protocol
2 | var isExperimentActive: Bool { get }
3 | var isUserInExperiment: Bool { get }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:445:17: warning: capture of 'cacheByID' with non-sendable type '[String : [String : Any]]' in a '@Sendable' closure
443 | DispatchQueue.global(qos: .utility).async {
444 | UserPayloadStore.migrateIfNeeded(
445 | cacheByID,
| `- warning: capture of 'cacheByID' with non-sendable type '[String : [String : Any]]' in a '@Sendable' closure
446 | cacheKeyMapping,
447 | self.userDefaults,
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:447:17: warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
445 | cacheByID,
446 | cacheKeyMapping,
447 | self.userDefaults,
| `- warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
448 | storageService.userPayload.storageAdapter
449 | )
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:448:17: warning: capture of 'storageService' with non-sendable type 'StorageService' in a '@Sendable' closure
446 | cacheKeyMapping,
447 | self.userDefaults,
448 | storageService.userPayload.storageAdapter
| `- warning: capture of 'storageService' with non-sendable type 'StorageService' in a '@Sendable' closure
449 | )
450 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/StorageService.swift:3:13: note: class 'StorageService' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | final class StorageService {
| `- note: class 'StorageService' does not conform to the 'Sendable' protocol
4 |
5 | private static let servicesLock = NSLock()
[78/86] Compiling Statsig SDKConfigs.swift
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/StatsigOptions.swift:360:16: warning: static property 'defaultOptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
358 | extension StatsigOptions {
359 | // Global variables are lazy by default
360 | static var defaultOptions = StatsigOptions()
| |- warning: static property 'defaultOptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultOptions' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultOptions' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
361 |
362 | internal func getDictionaryForLogging() -> [String: Any] {
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/FileStorageAdapter.swift:4:16: warning: static property 'defaultRootDirectory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | final class FileStorageAdapter: StorageAdapter {
4 | static var defaultRootDirectory = FileManager
| |- warning: static property 'defaultRootDirectory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultRootDirectory' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultRootDirectory' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 | .default.urls(for: .cachesDirectory, in: .userDomainMask)
6 | .first?
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:79:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
77 | func saveNetworkFallbackInfo(_ fallbackInfo: FallbackInfo?) {
78 | storeQueue.async(flags: .barrier) { [weak self] in
79 | self?.cache.saveNetworkFallbackInfo(fallbackInfo)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
80 | }
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:79:49: warning: capture of 'fallbackInfo' with non-sendable type 'FallbackInfo?' (aka 'Optional<Dictionary<Endpoint, FallbackInfoEntry>>') in a '@Sendable' closure
77 | func saveNetworkFallbackInfo(_ fallbackInfo: FallbackInfo?) {
78 | storeQueue.async(flags: .barrier) { [weak self] in
79 | self?.cache.saveNetworkFallbackInfo(fallbackInfo)
| `- warning: capture of 'fallbackInfo' with non-sendable type 'FallbackInfo?' (aka 'Optional<Dictionary<Endpoint, FallbackInfoEntry>>') in a '@Sendable' closure
80 | }
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/NetworkFallbackResolver.swift:7:15: note: consider making struct 'FallbackInfoEntry' conform to the 'Sendable' protocol
5 | }
6 |
7 | public struct FallbackInfoEntry {
| `- note: consider making struct 'FallbackInfoEntry' conform to the 'Sendable' protocol
8 | var url: URL
9 | var previous: [String]
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:119:13: warning: capture of 'completion' with non-sendable type '([String : Any?], EvaluationDetails) -> Void' in a '@Sendable' closure
117 | ) {
118 | storeQueue.async {
119 | completion(self.cache.getInitializeResponseValues(), self.cache.getEvaluationDetails())
| |- warning: capture of 'completion' with non-sendable type '([String : Any?], EvaluationDetails) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
120 | }
121 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:119:24: warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
117 | ) {
118 | storeQueue.async {
119 | completion(self.cache.getInitializeResponseValues(), self.cache.getEvaluationDetails())
| `- warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
120 | }
121 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:231:16: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
229 | ) {
230 | storeQueue.async(flags: .barrier) { [weak self] in
231 | if self?.cache.source == .Loading {
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
232 | self?.cache.source = .NoValues
233 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:236:17: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
234 |
235 | completionQueue.async {
236 | completion?()
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
237 | }
238 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:236:17: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
234 |
235 | completionQueue.async {
236 | completion?()
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
237 | }
238 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:257:30: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
255 |
256 | storeQueue.async(flags: .barrier) { [weak self] in
257 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
258 |
259 | self.cache.saveValues(values, cacheKey, userHash)
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:259:35: warning: capture of 'values' with non-sendable type '[String : Any]' in a '@Sendable' closure
257 | guard let self = self else { return }
258 |
259 | self.cache.saveValues(values, cacheKey, userHash)
| `- warning: capture of 'values' with non-sendable type '[String : Any]' in a '@Sendable' closure
260 |
261 | DispatchQueue.global().async { completion?() }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:261:44: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
259 | self.cache.saveValues(values, cacheKey, userHash)
260 |
261 | DispatchQueue.global().async { completion?() }
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
262 | }
263 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:261:44: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
259 | self.cache.saveValues(values, cacheKey, userHash)
260 |
261 | DispatchQueue.global().async { completion?() }
| |- warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
262 | }
263 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:267:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
265 | func updateUser(_ newUser: StatsigUser, values: [String: Any]? = nil) {
266 | storeQueue.async(flags: .barrier) { [weak self] in
267 | self?.cache.updateUser(newUser, values)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
268 | }
269 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:267:45: warning: capture of 'values' with non-sendable type '[String : Any]?' in a '@Sendable' closure
265 | func updateUser(_ newUser: StatsigUser, values: [String: Any]? = nil) {
266 | storeQueue.async(flags: .barrier) { [weak self] in
267 | self?.cache.updateUser(newUser, values)
| `- warning: capture of 'values' with non-sendable type '[String : Any]?' in a '@Sendable' closure
268 | }
269 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:302:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
300 | func overrideGate(_ gateName: String, _ value: Bool) {
301 | storeQueue.async(flags: .barrier) { [weak self] in
302 | self?.localOverrides[jsonDict: InternalStore.gatesKey]?[gateName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
303 | self?.saveOverrides()
304 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:309:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
307 | func overrideConfig(_ configName: String, _ value: [String: Any]) {
308 | storeQueue.async(flags: .barrier) { [weak self] in
309 | self?.localOverrides[jsonDict: InternalStore.configsKey]?[configName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
310 | self?.saveOverrides()
311 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:309:85: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
307 | func overrideConfig(_ configName: String, _ value: [String: Any]) {
308 | storeQueue.async(flags: .barrier) { [weak self] in
309 | self?.localOverrides[jsonDict: InternalStore.configsKey]?[configName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
310 | self?.saveOverrides()
311 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:316:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
314 | func overrideLayer(_ layerName: String, _ value: [String: Any]) {
315 | storeQueue.async(flags: .barrier) { [weak self] in
316 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?[layerName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
317 | self?.saveOverrides()
318 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:316:89: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
314 | func overrideLayer(_ layerName: String, _ value: [String: Any]) {
315 | storeQueue.async(flags: .barrier) { [weak self] in
316 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?[layerName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
317 | self?.saveOverrides()
318 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:323:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
321 | func overrideParamStore(_ storeName: String, _ value: [String: Any]) {
322 | storeQueue.async(flags: .barrier) { [weak self] in
323 | self?.localOverrides[jsonDict: InternalStore.paramStoresKey]?[storeName] = value
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
324 | self?.saveOverrides()
325 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:323:88: warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
321 | func overrideParamStore(_ storeName: String, _ value: [String: Any]) {
322 | storeQueue.async(flags: .barrier) { [weak self] in
323 | self?.localOverrides[jsonDict: InternalStore.paramStoresKey]?[storeName] = value
| `- warning: capture of 'value' with non-sendable type '[String : Any]' in a '@Sendable' closure
324 | self?.saveOverrides()
325 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:330:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
328 | func removeOverride(_ name: String) {
329 | storeQueue.async(flags: .barrier) { [weak self] in
330 | self?.localOverrides[jsonDict: InternalStore.gatesKey]?.removeValue(forKey: name)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
331 | self?.localOverrides[jsonDict: InternalStore.configsKey]?.removeValue(forKey: name)
332 | self?.localOverrides[jsonDict: InternalStore.layerConfigsKey]?.removeValue(forKey: name)
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:340:30: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
338 | func removeAllOverrides() {
339 | storeQueue.async(flags: .barrier) { [weak self] in
340 | guard let this = self else { return }
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
341 | this.localOverrides = InternalStore.getEmptyOverrides()
342 | this.saveOverrides()
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:410:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
408 | private func removeStickyExperimentThreaded(_ name: String) {
409 | storeQueue.async(flags: .barrier) { [weak self] in
410 | self?.cache.removeStickyExperiment(name)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
411 | }
412 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:420:13: warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
418 |
419 | storeQueue.async(flags: .barrier) { [weak self] in
420 | self?.cache.saveStickyExperimentIfNeeded(name, config)
| `- warning: capture of 'self' with non-sendable type 'InternalStore?' in a '@Sendable' closure
421 | }
422 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:420:60: warning: capture of 'config' with non-sendable type 'any ConfigProtocol' in a '@Sendable' closure
418 |
419 | storeQueue.async(flags: .barrier) { [weak self] in
420 | self?.cache.saveStickyExperimentIfNeeded(name, config)
| `- warning: capture of 'config' with non-sendable type 'any ConfigProtocol' in a '@Sendable' closure
421 | }
422 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/ConfigProtocol.swift:1:19: note: protocol 'ConfigProtocol' does not conform to the 'Sendable' protocol
1 | internal protocol ConfigProtocol {
| `- note: protocol 'ConfigProtocol' does not conform to the 'Sendable' protocol
2 | var isExperimentActive: Bool { get }
3 | var isUserInExperiment: Bool { get }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:445:17: warning: capture of 'cacheByID' with non-sendable type '[String : [String : Any]]' in a '@Sendable' closure
443 | DispatchQueue.global(qos: .utility).async {
444 | UserPayloadStore.migrateIfNeeded(
445 | cacheByID,
| `- warning: capture of 'cacheByID' with non-sendable type '[String : [String : Any]]' in a '@Sendable' closure
446 | cacheKeyMapping,
447 | self.userDefaults,
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:447:17: warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
16 | }
17 |
18 | class InternalStore {
| `- note: class 'InternalStore' does not conform to the 'Sendable' protocol
19 | static let storeQueueLabel = "com.Statsig.storeQueue"
20 |
:
445 | cacheByID,
446 | cacheKeyMapping,
447 | self.userDefaults,
| `- warning: capture of 'self' with non-sendable type 'InternalStore' in a '@Sendable' closure
448 | storageService.userPayload.storageAdapter
449 | )
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/InternalStore.swift:448:17: warning: capture of 'storageService' with non-sendable type 'StorageService' in a '@Sendable' closure
446 | cacheKeyMapping,
447 | self.userDefaults,
448 | storageService.userPayload.storageAdapter
| `- warning: capture of 'storageService' with non-sendable type 'StorageService' in a '@Sendable' closure
449 | )
450 | }
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Storage/StorageService.swift:3:13: note: class 'StorageService' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | final class StorageService {
| `- note: class 'StorageService' does not conform to the 'Sendable' protocol
4 |
5 | private static let servicesLock = NSLock()
[79/86] Compiling Statsig OnDeviceEvalAdapter.swift
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:60: warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:651:48: note: property declared here
649 | /*! The main content view controller for the window. This provides the contentView of the window. Assigning this value will remove the existing contentView and will make the contentViewController.view the main contentView for the window. The default value is nil. The contentViewController only controls the contentView, and not the title of the window. The window title can easily be bound to the contentViewController with the following: [window bind:NSTitleBinding toObject:contentViewController withKeyPath:@"title" options:nil]. Setting the contentViewController will cause the window to resize based on the current size of the contentViewController. Autolayout should be used to restrict the size of the window. The value of the contentViewController is encoded in the NIB. Directly assigning a contentView will clear out the contentViewController.
650 | */
651 | @property (nullable, strong) NSViewController *contentViewController API_AVAILABLE(macos(10.10));
| `- note: property declared here
652 |
653 | /*! Convenience method for creating an autoreleased titled window with the given contentViewController. A basic NSWindow with the following attributes is made: titled, closable, resizable, miniaturizable. The window's title is automatically bound to the contentViewController's title. The size of the window can easily be controlled by utilizing autolayout and applying size constraints to the view (or its subviews). The window has isReleasedWhenClosed set to NO, and it must be explicitly retained to keep the window instance alive. To have it automatically be freed when it is closed, do the following: [window retain] and [window setReleasedWhenClosed:YES].
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:49: warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:202:48: note: property declared here
200 |
201 | @property (nullable, readonly, weak) NSWindow *mainWindow;
202 | @property (nullable, readonly, weak) NSWindow *keyWindow;
| `- note: property declared here
203 | @property (getter=isActive, readonly) BOOL active;
204 | @property (getter=isHidden, readonly) BOOL hidden;
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:42: warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:193:61: note: class property declared here
191 | APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR;
192 |
193 | @property (class, readonly, strong) __kindof NSApplication *sharedApplication;
| `- note: class property declared here
194 | @property (nullable, weak) id<NSApplicationDelegate> delegate;
195 |
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PrintHandler.swift:4:24: warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | public class PrintHandler {
4 | private static var printHandler: ((String) -> Void)?
| |- warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'printHandler' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'printHandler' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 |
6 | static func setPrintHandler(_ handler: @escaping (String) -> Void) {
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:8:25: warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
6 |
7 | public class Statsig {
8 | internal static var client: StatsigClient?
| |- warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'client' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'client' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
9 | internal static var pendingListeners: [StatsigListening] = []
10 | internal static let initLock = NSLock()
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:9:25: warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
7 | public class Statsig {
8 | internal static var client: StatsigClient?
9 | internal static var pendingListeners: [StatsigListening] = []
| |- warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'pendingListeners' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'pendingListeners' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 | internal static let initLock = NSLock()
11 |
[80/86] Compiling Statsig OverrideAdapter.swift
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:60: warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:651:48: note: property declared here
649 | /*! The main content view controller for the window. This provides the contentView of the window. Assigning this value will remove the existing contentView and will make the contentViewController.view the main contentView for the window. The default value is nil. The contentViewController only controls the contentView, and not the title of the window. The window title can easily be bound to the contentViewController with the following: [window bind:NSTitleBinding toObject:contentViewController withKeyPath:@"title" options:nil]. Setting the contentViewController will cause the window to resize based on the current size of the contentViewController. Autolayout should be used to restrict the size of the window. The value of the contentViewController is encoded in the NIB. Directly assigning a contentView will clear out the contentViewController.
650 | */
651 | @property (nullable, strong) NSViewController *contentViewController API_AVAILABLE(macos(10.10));
| `- note: property declared here
652 |
653 | /*! Convenience method for creating an autoreleased titled window with the given contentViewController. A basic NSWindow with the following attributes is made: titled, closable, resizable, miniaturizable. The window's title is automatically bound to the contentViewController's title. The size of the window can easily be controlled by utilizing autolayout and applying size constraints to the view (or its subviews). The window has isReleasedWhenClosed set to NO, and it must be explicitly retained to keep the window instance alive. To have it automatically be freed when it is closed, do the following: [window retain] and [window setReleasedWhenClosed:YES].
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:49: warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:202:48: note: property declared here
200 |
201 | @property (nullable, readonly, weak) NSWindow *mainWindow;
202 | @property (nullable, readonly, weak) NSWindow *keyWindow;
| `- note: property declared here
203 | @property (getter=isActive, readonly) BOOL active;
204 | @property (getter=isHidden, readonly) BOOL hidden;
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:42: warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:193:61: note: class property declared here
191 | APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR;
192 |
193 | @property (class, readonly, strong) __kindof NSApplication *sharedApplication;
| `- note: class property declared here
194 | @property (nullable, weak) id<NSApplicationDelegate> delegate;
195 |
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PrintHandler.swift:4:24: warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | public class PrintHandler {
4 | private static var printHandler: ((String) -> Void)?
| |- warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'printHandler' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'printHandler' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 |
6 | static func setPrintHandler(_ handler: @escaping (String) -> Void) {
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:8:25: warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
6 |
7 | public class Statsig {
8 | internal static var client: StatsigClient?
| |- warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'client' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'client' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
9 | internal static var pendingListeners: [StatsigListening] = []
10 | internal static let initLock = NSLock()
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:9:25: warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
7 | public class Statsig {
8 | internal static var client: StatsigClient?
9 | internal static var pendingListeners: [StatsigListening] = []
| |- warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'pendingListeners' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'pendingListeners' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 | internal static let initLock = NSLock()
11 |
[81/86] Compiling Statsig ParameterStore.swift
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:60: warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:651:48: note: property declared here
649 | /*! The main content view controller for the window. This provides the contentView of the window. Assigning this value will remove the existing contentView and will make the contentViewController.view the main contentView for the window. The default value is nil. The contentViewController only controls the contentView, and not the title of the window. The window title can easily be bound to the contentViewController with the following: [window bind:NSTitleBinding toObject:contentViewController withKeyPath:@"title" options:nil]. Setting the contentViewController will cause the window to resize based on the current size of the contentViewController. Autolayout should be used to restrict the size of the window. The value of the contentViewController is encoded in the NIB. Directly assigning a contentView will clear out the contentViewController.
650 | */
651 | @property (nullable, strong) NSViewController *contentViewController API_AVAILABLE(macos(10.10));
| `- note: property declared here
652 |
653 | /*! Convenience method for creating an autoreleased titled window with the given contentViewController. A basic NSWindow with the following attributes is made: titled, closable, resizable, miniaturizable. The window's title is automatically bound to the contentViewController's title. The size of the window can easily be controlled by utilizing autolayout and applying size constraints to the view (or its subviews). The window has isReleasedWhenClosed set to NO, and it must be explicitly retained to keep the window instance alive. To have it automatically be freed when it is closed, do the following: [window retain] and [window setReleasedWhenClosed:YES].
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:49: warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:202:48: note: property declared here
200 |
201 | @property (nullable, readonly, weak) NSWindow *mainWindow;
202 | @property (nullable, readonly, weak) NSWindow *keyWindow;
| `- note: property declared here
203 | @property (getter=isActive, readonly) BOOL active;
204 | @property (getter=isHidden, readonly) BOOL hidden;
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:42: warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:193:61: note: class property declared here
191 | APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR;
192 |
193 | @property (class, readonly, strong) __kindof NSApplication *sharedApplication;
| `- note: class property declared here
194 | @property (nullable, weak) id<NSApplicationDelegate> delegate;
195 |
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PrintHandler.swift:4:24: warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | public class PrintHandler {
4 | private static var printHandler: ((String) -> Void)?
| |- warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'printHandler' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'printHandler' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 |
6 | static func setPrintHandler(_ handler: @escaping (String) -> Void) {
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:8:25: warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
6 |
7 | public class Statsig {
8 | internal static var client: StatsigClient?
| |- warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'client' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'client' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
9 | internal static var pendingListeners: [StatsigListening] = []
10 | internal static let initLock = NSLock()
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:9:25: warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
7 | public class Statsig {
8 | internal static var client: StatsigClient?
9 | internal static var pendingListeners: [StatsigListening] = []
| |- warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'pendingListeners' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'pendingListeners' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 | internal static let initLock = NSLock()
11 |
[82/86] Compiling Statsig PlatformCompatibility.swift
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:60: warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:651:48: note: property declared here
649 | /*! The main content view controller for the window. This provides the contentView of the window. Assigning this value will remove the existing contentView and will make the contentViewController.view the main contentView for the window. The default value is nil. The contentViewController only controls the contentView, and not the title of the window. The window title can easily be bound to the contentViewController with the following: [window bind:NSTitleBinding toObject:contentViewController withKeyPath:@"title" options:nil]. Setting the contentViewController will cause the window to resize based on the current size of the contentViewController. Autolayout should be used to restrict the size of the window. The value of the contentViewController is encoded in the NIB. Directly assigning a contentView will clear out the contentViewController.
650 | */
651 | @property (nullable, strong) NSViewController *contentViewController API_AVAILABLE(macos(10.10));
| `- note: property declared here
652 |
653 | /*! Convenience method for creating an autoreleased titled window with the given contentViewController. A basic NSWindow with the following attributes is made: titled, closable, resizable, miniaturizable. The window's title is automatically bound to the contentViewController's title. The size of the window can easily be controlled by utilizing autolayout and applying size constraints to the view (or its subviews). The window has isReleasedWhenClosed set to NO, and it must be explicitly retained to keep the window instance alive. To have it automatically be freed when it is closed, do the following: [window retain] and [window setReleasedWhenClosed:YES].
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:49: warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:202:48: note: property declared here
200 |
201 | @property (nullable, readonly, weak) NSWindow *mainWindow;
202 | @property (nullable, readonly, weak) NSWindow *keyWindow;
| `- note: property declared here
203 | @property (getter=isActive, readonly) BOOL active;
204 | @property (getter=isHidden, readonly) BOOL hidden;
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:42: warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:193:61: note: class property declared here
191 | APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR;
192 |
193 | @property (class, readonly, strong) __kindof NSApplication *sharedApplication;
| `- note: class property declared here
194 | @property (nullable, weak) id<NSApplicationDelegate> delegate;
195 |
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PrintHandler.swift:4:24: warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | public class PrintHandler {
4 | private static var printHandler: ((String) -> Void)?
| |- warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'printHandler' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'printHandler' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 |
6 | static func setPrintHandler(_ handler: @escaping (String) -> Void) {
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:8:25: warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
6 |
7 | public class Statsig {
8 | internal static var client: StatsigClient?
| |- warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'client' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'client' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
9 | internal static var pendingListeners: [StatsigListening] = []
10 | internal static let initLock = NSLock()
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:9:25: warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
7 | public class Statsig {
8 | internal static var client: StatsigClient?
9 | internal static var pendingListeners: [StatsigListening] = []
| |- warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'pendingListeners' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'pendingListeners' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 | internal static let initLock = NSLock()
11 |
[83/86] Compiling Statsig PrintHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:60: warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:651:48: note: property declared here
649 | /*! The main content view controller for the window. This provides the contentView of the window. Assigning this value will remove the existing contentView and will make the contentViewController.view the main contentView for the window. The default value is nil. The contentViewController only controls the contentView, and not the title of the window. The window title can easily be bound to the contentViewController with the following: [window bind:NSTitleBinding toObject:contentViewController withKeyPath:@"title" options:nil]. Setting the contentViewController will cause the window to resize based on the current size of the contentViewController. Autolayout should be used to restrict the size of the window. The value of the contentViewController is encoded in the NIB. Directly assigning a contentView will clear out the contentViewController.
650 | */
651 | @property (nullable, strong) NSViewController *contentViewController API_AVAILABLE(macos(10.10));
| `- note: property declared here
652 |
653 | /*! Convenience method for creating an autoreleased titled window with the given contentViewController. A basic NSWindow with the following attributes is made: titled, closable, resizable, miniaturizable. The window's title is automatically bound to the contentViewController's title. The size of the window can easily be controlled by utilizing autolayout and applying size constraints to the view (or its subviews). The window has isReleasedWhenClosed set to NO, and it must be explicitly retained to keep the window instance alive. To have it automatically be freed when it is closed, do the following: [window retain] and [window setReleasedWhenClosed:YES].
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:49: warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:202:48: note: property declared here
200 |
201 | @property (nullable, readonly, weak) NSWindow *mainWindow;
202 | @property (nullable, readonly, weak) NSWindow *keyWindow;
| `- note: property declared here
203 | @property (getter=isActive, readonly) BOOL active;
204 | @property (getter=isHidden, readonly) BOOL hidden;
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:42: warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:193:61: note: class property declared here
191 | APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR;
192 |
193 | @property (class, readonly, strong) __kindof NSApplication *sharedApplication;
| `- note: class property declared here
194 | @property (nullable, weak) id<NSApplicationDelegate> delegate;
195 |
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PrintHandler.swift:4:24: warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | public class PrintHandler {
4 | private static var printHandler: ((String) -> Void)?
| |- warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'printHandler' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'printHandler' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 |
6 | static func setPrintHandler(_ handler: @escaping (String) -> Void) {
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:8:25: warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
6 |
7 | public class Statsig {
8 | internal static var client: StatsigClient?
| |- warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'client' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'client' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
9 | internal static var pendingListeners: [StatsigListening] = []
10 | internal static let initLock = NSLock()
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:9:25: warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
7 | public class Statsig {
8 | internal static var client: StatsigClient?
9 | internal static var pendingListeners: [StatsigListening] = []
| |- warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'pendingListeners' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'pendingListeners' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 | internal static let initLock = NSLock()
11 |
[84/86] Compiling Statsig SDKKeyValidator.swift
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:60: warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:651:48: note: property declared here
649 | /*! The main content view controller for the window. This provides the contentView of the window. Assigning this value will remove the existing contentView and will make the contentViewController.view the main contentView for the window. The default value is nil. The contentViewController only controls the contentView, and not the title of the window. The window title can easily be bound to the contentViewController with the following: [window bind:NSTitleBinding toObject:contentViewController withKeyPath:@"title" options:nil]. Setting the contentViewController will cause the window to resize based on the current size of the contentViewController. Autolayout should be used to restrict the size of the window. The value of the contentViewController is encoded in the NIB. Directly assigning a contentView will clear out the contentViewController.
650 | */
651 | @property (nullable, strong) NSViewController *contentViewController API_AVAILABLE(macos(10.10));
| `- note: property declared here
652 |
653 | /*! Convenience method for creating an autoreleased titled window with the given contentViewController. A basic NSWindow with the following attributes is made: titled, closable, resizable, miniaturizable. The window's title is automatically bound to the contentViewController's title. The size of the window can easily be controlled by utilizing autolayout and applying size constraints to the view (or its subviews). The window has isReleasedWhenClosed set to NO, and it must be explicitly retained to keep the window instance alive. To have it automatically be freed when it is closed, do the following: [window retain] and [window setReleasedWhenClosed:YES].
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:49: warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:202:48: note: property declared here
200 |
201 | @property (nullable, readonly, weak) NSWindow *mainWindow;
202 | @property (nullable, readonly, weak) NSWindow *keyWindow;
| `- note: property declared here
203 | @property (getter=isActive, readonly) BOOL active;
204 | @property (getter=isHidden, readonly) BOOL hidden;
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:42: warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:193:61: note: class property declared here
191 | APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR;
192 |
193 | @property (class, readonly, strong) __kindof NSApplication *sharedApplication;
| `- note: class property declared here
194 | @property (nullable, weak) id<NSApplicationDelegate> delegate;
195 |
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PrintHandler.swift:4:24: warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | public class PrintHandler {
4 | private static var printHandler: ((String) -> Void)?
| |- warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'printHandler' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'printHandler' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 |
6 | static func setPrintHandler(_ handler: @escaping (String) -> Void) {
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:8:25: warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
6 |
7 | public class Statsig {
8 | internal static var client: StatsigClient?
| |- warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'client' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'client' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
9 | internal static var pendingListeners: [StatsigListening] = []
10 | internal static let initLock = NSLock()
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:9:25: warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
7 | public class Statsig {
8 | internal static var client: StatsigClient?
9 | internal static var pendingListeners: [StatsigListening] = []
| |- warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'pendingListeners' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'pendingListeners' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 | internal static let initLock = NSLock()
11 |
[85/86] Compiling Statsig SpecsResponse.swift
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:60: warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:651:48: note: property declared here
649 | /*! The main content view controller for the window. This provides the contentView of the window. Assigning this value will remove the existing contentView and will make the contentViewController.view the main contentView for the window. The default value is nil. The contentViewController only controls the contentView, and not the title of the window. The window title can easily be bound to the contentViewController with the following: [window bind:NSTitleBinding toObject:contentViewController withKeyPath:@"title" options:nil]. Setting the contentViewController will cause the window to resize based on the current size of the contentViewController. Autolayout should be used to restrict the size of the window. The value of the contentViewController is encoded in the NIB. Directly assigning a contentView will clear out the contentViewController.
650 | */
651 | @property (nullable, strong) NSViewController *contentViewController API_AVAILABLE(macos(10.10));
| `- note: property declared here
652 |
653 | /*! Convenience method for creating an autoreleased titled window with the given contentViewController. A basic NSWindow with the following attributes is made: titled, closable, resizable, miniaturizable. The window's title is automatically bound to the contentViewController's title. The size of the window can easily be controlled by utilizing autolayout and applying size constraints to the view (or its subviews). The window has isReleasedWhenClosed set to NO, and it must be explicitly retained to keep the window instance alive. To have it automatically be freed when it is closed, do the following: [window retain] and [window setReleasedWhenClosed:YES].
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:49: warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:202:48: note: property declared here
200 |
201 | @property (nullable, readonly, weak) NSWindow *mainWindow;
202 | @property (nullable, readonly, weak) NSWindow *keyWindow;
| `- note: property declared here
203 | @property (getter=isActive, readonly) BOOL active;
204 | @property (getter=isHidden, readonly) BOOL hidden;
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:42: warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:193:61: note: class property declared here
191 | APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR;
192 |
193 | @property (class, readonly, strong) __kindof NSApplication *sharedApplication;
| `- note: class property declared here
194 | @property (nullable, weak) id<NSApplicationDelegate> delegate;
195 |
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PrintHandler.swift:4:24: warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | public class PrintHandler {
4 | private static var printHandler: ((String) -> Void)?
| |- warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'printHandler' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'printHandler' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 |
6 | static func setPrintHandler(_ handler: @escaping (String) -> Void) {
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:8:25: warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
6 |
7 | public class Statsig {
8 | internal static var client: StatsigClient?
| |- warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'client' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'client' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
9 | internal static var pendingListeners: [StatsigListening] = []
10 | internal static let initLock = NSLock()
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:9:25: warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
7 | public class Statsig {
8 | internal static var client: StatsigClient?
9 | internal static var pendingListeners: [StatsigListening] = []
| |- warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'pendingListeners' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'pendingListeners' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 | internal static let initLock = NSLock()
11 |
[86/86] Compiling Statsig Statsig.swift
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:60: warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'contentViewController' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:651:48: note: property declared here
649 | /*! The main content view controller for the window. This provides the contentView of the window. Assigning this value will remove the existing contentView and will make the contentViewController.view the main contentView for the window. The default value is nil. The contentViewController only controls the contentView, and not the title of the window. The window title can easily be bound to the contentViewController with the following: [window bind:NSTitleBinding toObject:contentViewController withKeyPath:@"title" options:nil]. Setting the contentViewController will cause the window to resize based on the current size of the contentViewController. Autolayout should be used to restrict the size of the window. The value of the contentViewController is encoded in the NIB. Directly assigning a contentView will clear out the contentViewController.
650 | */
651 | @property (nullable, strong) NSViewController *contentViewController API_AVAILABLE(macos(10.10));
| `- note: property declared here
652 |
653 | /*! Convenience method for creating an autoreleased titled window with the given contentViewController. A basic NSWindow with the following attributes is made: titled, closable, resizable, miniaturizable. The window's title is automatically bound to the contentViewController's title. The size of the window can easily be controlled by utilizing autolayout and applying size constraints to the view (or its subviews). The window has isReleasedWhenClosed set to NO, and it must be explicitly retained to keep the window instance alive. To have it automatically be freed when it is closed, do the following: [window retain] and [window setReleasedWhenClosed:YES].
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:49: warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated property 'keyWindow' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:202:48: note: property declared here
200 |
201 | @property (nullable, readonly, weak) NSWindow *mainWindow;
202 | @property (nullable, readonly, weak) NSWindow *keyWindow;
| `- note: property declared here
203 | @property (getter=isActive, readonly) BOOL active;
204 | @property (getter=isHidden, readonly) BOOL hidden;
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PlatformCompatibility.swift:159:42: warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
157 | static func getRootViewControllerClassName(_ callback: @escaping (_ name: String?) -> Void) {
158 | ensureMainThread { [callback] in
159 | if let klass = NSApplication.shared.keyWindow?.contentViewController?.classForCoder {
| `- warning: main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
160 | callback("\(klass)")
161 | } else {
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:193:61: note: class property declared here
191 | APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR;
192 |
193 | @property (class, readonly, strong) __kindof NSApplication *sharedApplication;
| `- note: class property declared here
194 | @property (nullable, weak) id<NSApplicationDelegate> delegate;
195 |
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/PrintHandler.swift:4:24: warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | public class PrintHandler {
4 | private static var printHandler: ((String) -> Void)?
| |- warning: static property 'printHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'printHandler' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'printHandler' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 |
6 | static func setPrintHandler(_ handler: @escaping (String) -> Void) {
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:8:25: warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
6 |
7 | public class Statsig {
8 | internal static var client: StatsigClient?
| |- warning: static property 'client' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'client' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'client' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
9 | internal static var pendingListeners: [StatsigListening] = []
10 | internal static let initLock = NSLock()
/Users/admin/builder/spi-builder-workspace/Sources/Statsig/Statsig.swift:9:25: warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
7 | public class Statsig {
8 | internal static var client: StatsigClient?
9 | internal static var pendingListeners: [StatsigListening] = []
| |- warning: static property 'pendingListeners' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'pendingListeners' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'pendingListeners' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 | internal static let initLock = NSLock()
11 |
Build complete! (31.65s)
Fetching https://github.com/erikdoe/ocmock
[1/10914] Fetching ocmock
Fetched https://github.com/erikdoe/ocmock from cache (2.45s)
Fetching https://github.com/AliSoftware/OHHTTPStubs.git
Fetching https://github.com/Quick/Quick.git
Fetching https://github.com/Quick/Nimble.git
Fetching https://github.com/1024jp/GzipSwift
[1/1766] Fetching gzipswift
[107/9666] Fetching gzipswift, ohhttpstubs
[2715/24591] Fetching gzipswift, ohhttpstubs, quick
[2953/44593] Fetching gzipswift, ohhttpstubs, quick, nimble
Fetched https://github.com/AliSoftware/OHHTTPStubs.git from cache (1.49s)
[14606/36693] Fetching gzipswift, quick, nimble
Fetched https://github.com/Quick/Nimble.git from cache (6.99s)
Fetched https://github.com/Quick/Quick.git from cache (6.99s)
Fetched https://github.com/1024jp/GzipSwift from cache (6.99s)
Computing version for https://github.com/Quick/Nimble.git
Computed https://github.com/Quick/Nimble.git at 10.0.0 (7.64s)
Fetching https://github.com/mattgallagher/CwlPreconditionTesting.git
[1/1257] Fetching cwlpreconditiontesting
Fetched https://github.com/mattgallagher/CwlPreconditionTesting.git from cache (0.94s)
Computing version for https://github.com/AliSoftware/OHHTTPStubs.git
Computed https://github.com/AliSoftware/OHHTTPStubs.git at 9.1.0 (1.57s)
Computing version for https://github.com/1024jp/GzipSwift
Computed https://github.com/1024jp/GzipSwift at 5.2.0 (0.61s)
Computing version for https://github.com/Quick/Quick.git
Computed https://github.com/Quick/Quick.git at 5.0.1 (0.63s)
Computing version for https://github.com/mattgallagher/CwlPreconditionTesting.git
Computed https://github.com/mattgallagher/CwlPreconditionTesting.git at 2.2.2 (0.59s)
Fetching https://github.com/mattgallagher/CwlCatchException.git
[1/460] Fetching cwlcatchexception
Fetched https://github.com/mattgallagher/CwlCatchException.git from cache (0.75s)
Computing version for https://github.com/mattgallagher/CwlCatchException.git
Computed https://github.com/mattgallagher/CwlCatchException.git at 2.2.1 (1.36s)
Creating working copy for https://github.com/1024jp/GzipSwift
Working copy of https://github.com/1024jp/GzipSwift resolved at 5.2.0
Creating working copy for https://github.com/AliSoftware/OHHTTPStubs.git
Working copy of https://github.com/AliSoftware/OHHTTPStubs.git resolved at 9.1.0
Creating working copy for https://github.com/erikdoe/ocmock
Working copy of https://github.com/erikdoe/ocmock resolved at master (7f6e9e9)
Creating working copy for https://github.com/Quick/Quick.git
Working copy of https://github.com/Quick/Quick.git resolved at 5.0.1
Creating working copy for https://github.com/mattgallagher/CwlPreconditionTesting.git
Working copy of https://github.com/mattgallagher/CwlPreconditionTesting.git resolved at 2.2.2
Creating working copy for https://github.com/mattgallagher/CwlCatchException.git
Working copy of https://github.com/mattgallagher/CwlCatchException.git resolved at 2.2.1
Creating working copy for https://github.com/Quick/Nimble.git
Working copy of https://github.com/Quick/Nimble.git resolved at 10.0.0
Build complete.
{
"dependencies" : [
{
"identity" : "ohhttpstubs",
"requirement" : {
"range" : [
{
"lower_bound" : "9.1.0",
"upper_bound" : "10.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/AliSoftware/OHHTTPStubs.git"
},
{
"identity" : "nimble",
"requirement" : {
"range" : [
{
"lower_bound" : "10.0.0",
"upper_bound" : "11.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/Quick/Nimble.git"
},
{
"identity" : "quick",
"requirement" : {
"range" : [
{
"lower_bound" : "5.0.0",
"upper_bound" : "6.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/Quick/Quick.git"
},
{
"identity" : "ocmock",
"requirement" : {
"branch" : [
"master"
]
},
"type" : "sourceControl",
"url" : "https://github.com/erikdoe/ocmock"
},
{
"identity" : "gzipswift",
"requirement" : {
"range" : [
{
"lower_bound" : "5.1.1",
"upper_bound" : "6.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/1024jp/GzipSwift"
}
],
"manifest_display_name" : "Statsig",
"name" : "Statsig",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "watchos",
"version" : "7.0"
},
{
"name" : "ios",
"version" : "10.0"
},
{
"name" : "tvos",
"version" : "10.0"
},
{
"name" : "macos",
"version" : "10.13"
}
],
"products" : [
{
"name" : "Statsig",
"targets" : [
"Statsig"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"swift_languages_versions" : [
"5"
],
"targets" : [
{
"c99name" : "StatsigTests",
"module_type" : "SwiftTarget",
"name" : "StatsigTests",
"path" : "Tests/StatsigTests",
"product_dependencies" : [
"Quick",
"Nimble",
"OHHTTPStubs",
"Gzip",
"OHHTTPStubsSwift"
],
"sources" : [
"ApiOverrideSpec.swift",
"AppLifecycleSpec.swift",
"AsyncInitVsUpdateSpec.swift",
"AtomicDictionarySpec.swift",
"AutoUpdateSpec.swift",
"BaseSpec.swift",
"CacheByFileInstanceTests.swift",
"CodableSpec.swift",
"ComparisonSpec.swift",
"CompletionCallbackRaceSpec.swift",
"DNSQuerySpec.swift",
"DeviceEnvironmentSpec.swift",
"DiagnosticsSpec.swift",
"DynamicConfigSpec.swift",
"ErrorBoundarySpec.swift",
"EvaluationCallbackSpec.swift",
"EvaluationDetailSpec.swift",
"EventLoggerSpec.swift",
"EventLoggingEnabledSpec.swift",
"EventSpec.swift",
"ExposureLoggingSpec.swift",
"FailedLogRequestStoreSpec.swift",
"FailedLogRequestStoreTestHelpers.swift",
"FileBasedUserDefaultsSpec.swift",
"FileBasedUserDefaultsUsageSpec.swift",
"GzipSpec.swift",
"InitRetriesSpec.swift",
"InitializeSinceTimeSpec.swift",
"InternalStoreAppleUserDefaultsSpec.swift",
"InternalStoreFileBasedUserDefaultsSpec.swift",
"InternalStoreMultiFileSpec.swift",
"InternalStoreSpec.swift",
"LayerConfigSpec.swift",
"LayerExposureSpec.swift",
"LocalOverridesSpec.swift",
"LockedValueSpec.swift",
"LogEventFailureSpec.swift",
"LogFlushTimerSpec.swift",
"ManualFlushSpec.swift",
"ManyThreadsSpec.swift",
"MockUserDefaults.swift",
"MultiClientSupportSpec.swift",
"NetworkFallbackResolverSpec.swift",
"NetworkServiceSpec.swift",
"NotAwaitingInitCallsSpec.swift",
"NullInitialize.swift",
"PerformanceSpec.swift",
"PrintHandlerSpec.swift",
"PublicFuncSpec.swift",
"SDKKeySpec.swift",
"SpiedEventLogger.swift",
"StatsigClientSpec.swift",
"StatsigListeningSpec.swift",
"StatsigMetadataSpec.swift",
"StatsigNetworkMetadataProviderSpec.swift",
"StatsigOptionsSpec.swift",
"StatsigSpec.swift",
"StatsigUserSpec.swift",
"StoragePerformanceSpec.swift",
"StorageProviderBasedUserDefaultsSpec.swift",
"StorageProviderBasedUserDefaultsUsageSpec.swift",
"StoreDeadlockSpec.swift",
"TestUtils.swift",
"ThreadsSpec.swift",
"UserCacheKeyMigrationSpec.swift",
"UserCacheKeySpec.swift",
"UserHashingSpec.swift"
],
"target_dependencies" : [
"Statsig"
],
"type" : "test"
},
{
"c99name" : "StatsigObjcTests",
"module_type" : "ClangTarget",
"name" : "StatsigObjcTests",
"path" : "Tests/StatsigObjcTests",
"product_dependencies" : [
"OCMock"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/StatsigObjcTests/Resources/initialize.json",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"ObjcManualExposureSpec.m",
"ObjcParameterStoreSpec.m",
"ObjcStableIDSpec.m",
"ObjcStatsigUserSpec.m",
"ObjcTestUtils.m",
"ObjcUsageSpec.m"
],
"target_dependencies" : [
"Statsig"
],
"type" : "test"
},
{
"c99name" : "Statsig",
"module_type" : "SwiftTarget",
"name" : "Statsig",
"path" : "Sources/Statsig",
"product_memberships" : [
"Statsig"
],
"sources" : [
"AtomicDictionary.swift",
"BootstrapValidator.swift",
"ClientError.swift",
"Comparison.swift",
"Concurrency/LockedValue.swift",
"ConfigBase.swift",
"ConfigProtocol.swift",
"CryptoSwift.swift",
"DNSQuery.swift",
"Data+Statsig.swift",
"DedupeKey.swift",
"DeviceEnvironment.swift",
"Diagnostics/CreateCacheMarker.swift",
"Diagnostics/Diagnostics.swift",
"Diagnostics/DiagnosticsEvent.swift",
"Diagnostics/InitializeMarker.swift",
"Diagnostics/InitializeStepMarker.swift",
"Diagnostics/MarkerBase.swift",
"Diagnostics/NetworkMarker.swift",
"Diagnostics/OverallMarker.swift",
"DynamicConfig.swift",
"ErrorBoundary.swift",
"EvaluationDetails.swift",
"EvaluationResult.swift",
"Evaluator.swift",
"Event.swift",
"EventLogger.swift",
"ExternalInitializeResponse.swift",
"FailedLogRequestStore.swift",
"FeatureGate.swift",
"Gzip.swift",
"JsonValue.swift",
"Layer.swift",
"NetworkFallbackResolver.swift",
"NetworkService.swift",
"ObjectiveC/DynamicConfigObjC.swift",
"ObjectiveC/FeatureGateObjC.swift",
"ObjectiveC/LayerObjC.swift",
"ObjectiveC/ParameterStoreObjC.swift",
"ObjectiveC/StatsigObjC.swift",
"ObjectiveC/StatsigOptionsObjC.swift",
"ObjectiveC/StatsigOverridesObjC.swift",
"ObjectiveC/StatsigUserObjC.swift",
"OverrideAdapter/OnDeviceEvalAdapter.swift",
"OverrideAdapter/OverrideAdapter.swift",
"ParameterStore.swift",
"PlatformCompatibility.swift",
"PrintHandler.swift",
"SDKKeyValidator.swift",
"SpecsResponse.swift",
"Statsig.swift",
"StatsigClient+AppLifecycle.swift",
"StatsigClient.swift",
"StatsigDebugViewController.swift",
"StatsigDynamicConfigValue.swift",
"StatsigEnvironment.swift",
"StatsigError.swift",
"StatsigListening.swift",
"StatsigMetadata.swift",
"StatsigNetworkMetadataProvider.swift",
"StatsigOptions.swift",
"StatsigUser.swift",
"StatsigUserCustomTypeConvertible.swift",
"Storage/BootstrapMetadata.swift",
"Storage/FileStorageAdapter.swift",
"Storage/InternalStore.swift",
"Storage/SDKConfigs.swift",
"Storage/SDKFlags.swift",
"Storage/StatsigValuesCache.swift",
"Storage/StorageAdapter.swift",
"Storage/StorageProviderToAdapter.swift",
"Storage/StorageService.swift",
"Storage/StorageServiceMigrationStatus.swift",
"Storage/StoreItems/UserPayloadIndex.swift",
"Storage/StoreItems/UserPayloadStore.swift",
"Storage/UserDefaults/FileBasedUserDefaults.swift",
"Storage/UserDefaults/StatsigUserDefaults.swift",
"Storage/UserDefaults/StorageProviderBasedUserDefaults.swift",
"Storage/UserDefaultsKeys.swift",
"Threads.swift",
"Time.swift",
"URLResponse+Statsig.swift",
"UserCacheKey.swift"
],
"type" : "library"
}
],
"tools_version" : "5.3"
}
Done.