Build Information
Successful build of Mixpanel, reference master (e8c878
), with Swift 6.1 for macOS (SPM) on 31 May 2025 13:05:11 UTC.
Swift 6 data race errors: 11
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Build Log
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
63 |
64 | /// Add a `MixpanelLogging` object to receive all log messages
/Users/admin/builder/spi-builder-workspace/Sources/ReadWriteLock.swift:10:7: note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | class ReadWriteLock {
| `- note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
11 | private let concurrentQueue: DispatchQueue
12 |
[5/29] Compiling Mixpanel Track.swift
[6/29] Compiling Mixpanel resource_bundle_accessor.swift
[7/29] Compiling Mixpanel Group.swift
/Users/admin/builder/spi-builder-workspace/Sources/Group.swift:54:21: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure
11 | /// Access to the Mixpanel Groups API, available through the getGroup function from
12 | /// the main Mixpanel instance.
13 | open class Group {
| `- note: class 'Group' does not conform to the 'Sendable' protocol
14 |
15 | let apiToken: String
:
52 | var r = InternalProperties()
53 | var p = InternalProperties()
54 | r["$token"] = self.apiToken
| `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure
55 | r["$time"] = epochMilliseconds
56 | if action == "$unset" {
/Users/admin/builder/spi-builder-workspace/Sources/Group.swift:59:21: warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
57 | // $unset takes an array of property names which is supplied to this method
58 | // in the properties parameter under the key "$properties"
59 | r[action] = properties["$properties"]
| `- warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
60 | } else {
61 | p += properties
[8/29] Compiling Mixpanel JSONHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/Group.swift:54:21: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure
11 | /// Access to the Mixpanel Groups API, available through the getGroup function from
12 | /// the main Mixpanel instance.
13 | open class Group {
| `- note: class 'Group' does not conform to the 'Sendable' protocol
14 |
15 | let apiToken: String
:
52 | var r = InternalProperties()
53 | var p = InternalProperties()
54 | r["$token"] = self.apiToken
| `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure
55 | r["$time"] = epochMilliseconds
56 | if action == "$unset" {
/Users/admin/builder/spi-builder-workspace/Sources/Group.swift:59:21: warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
57 | // $unset takes an array of property names which is supplied to this method
58 | // in the properties parameter under the key "$properties"
59 | r[action] = properties["$properties"]
| `- warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
60 | } else {
61 | p += properties
[9/29] Compiling Mixpanel MPDB.swift
/Users/admin/builder/spi-builder-workspace/Sources/Group.swift:54:21: warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure
11 | /// Access to the Mixpanel Groups API, available through the getGroup function from
12 | /// the main Mixpanel instance.
13 | open class Group {
| `- note: class 'Group' does not conform to the 'Sendable' protocol
14 |
15 | let apiToken: String
:
52 | var r = InternalProperties()
53 | var p = InternalProperties()
54 | r["$token"] = self.apiToken
| `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure
55 | r["$time"] = epochMilliseconds
56 | if action == "$unset" {
/Users/admin/builder/spi-builder-workspace/Sources/Group.swift:59:21: warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
57 | // $unset takes an array of property names which is supplied to this method
58 | // in the properties parameter under the key "$properties"
59 | r[action] = properties["$properties"]
| `- warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
60 | } else {
61 | p += properties
[10/29] Compiling Mixpanel Data+Compression.swift
/Users/admin/builder/spi-builder-workspace/Sources/Error.swift:12:8: warning: associated value 'invalidType(type:)' of 'Sendable'-conforming enum 'PropertyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
10 |
11 | enum PropertyError: Error {
12 | case invalidType(type: Any)
| `- warning: associated value 'invalidType(type:)' of 'Sendable'-conforming enum 'PropertyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
13 | }
14 |
/Users/admin/builder/spi-builder-workspace/Sources/Error.swift:16:14: warning: static property 'assertClosure' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 | class Assertions {
16 | static var assertClosure = swiftAssertClosure
| |- warning: static property 'assertClosure' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'assertClosure' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'assertClosure' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 | static let swiftAssertClosure = { Swift.assert($0, $1, file: $2, line: $3) }
18 | }
<unknown>:0: note: a function type must be marked '@Sendable' to conform to 'Sendable'
/Users/admin/builder/spi-builder-workspace/Sources/Error.swift:17:14: warning: static property 'swiftAssertClosure' is not concurrency-safe because non-'Sendable' type '(Bool, String, StaticString, UInt) -> ()' may have shared mutable state; this is an error in the Swift 6 language mode
15 | class Assertions {
16 | static var assertClosure = swiftAssertClosure
17 | static let swiftAssertClosure = { Swift.assert($0, $1, file: $2, line: $3) }
| |- warning: static property 'swiftAssertClosure' is not concurrency-safe because non-'Sendable' type '(Bool, String, StaticString, UInt) -> ()' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'swiftAssertClosure' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
18 | }
19 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:214:7: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
212 | // Using the serial queue itself for this background task is fine
213 | accessQueue.async { [weak self] in
214 | self?._fetchFlagsIfNeeded(completion: nil)
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
215 | }
216 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:266:24: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
264 | ) {
265 | accessQueue.async { [weak self] in // Block A runs serially on accessQueue
266 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
267 |
268 | var flagVariant: MixpanelFlagVariant?
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:285:37: warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in a '@Sendable' closure
31 |
32 | // Represents the variant associated with a feature flag
33 | public struct MixpanelFlagVariant: Decodable {
| `- note: consider making struct 'MixpanelFlagVariant' conform to the 'Sendable' protocol
34 | public let key: String // Corresponds to 'variant_key' from API
35 | public let value: Any? // Corresponds to 'variant_value' from API
:
283 |
284 | if flagsAreCurrentlyReady {
285 | let result = flagVariant ?? fallback
| `- warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in a '@Sendable' closure
286 | if flagVariant != nil, needsTrackingCheck {
287 | // Perform atomic check-and-track. _trackFeatureIfNeeded uses its
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:291:36: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in a '@Sendable' closure
289 | self._trackFlagIfNeeded(flagName: flagName, variant: result)
290 | }
291 | DispatchQueue.main.async { completion(result) }
| |- warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
292 |
293 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:285:37: warning: implicit capture of 'fallback' requires that 'MixpanelFlagVariant' conforms to 'Sendable'; this is an error in the Swift 6 language mode
31 |
32 | // Represents the variant associated with a feature flag
33 | public struct MixpanelFlagVariant: Decodable {
| `- note: consider making struct 'MixpanelFlagVariant' conform to the 'Sendable' protocol
34 | public let key: String // Corresponds to 'variant_key' from API
35 | public let value: Any? // Corresponds to 'variant_value' from API
:
283 |
284 | if flagsAreCurrentlyReady {
285 | let result = flagVariant ?? fallback
| `- warning: implicit capture of 'fallback' requires that 'MixpanelFlagVariant' conforms to 'Sendable'; this is an error in the Swift 6 language mode
286 | if flagVariant != nil, needsTrackingCheck {
287 | // Perform atomic check-and-track. _trackFeatureIfNeeded uses its
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:302:62: warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in an isolated closure; this is an error in the Swift 6 language mode
31 |
32 | // Represents the variant associated with a feature flag
33 | public struct MixpanelFlagVariant: Decodable {
| `- note: consider making struct 'MixpanelFlagVariant' conform to the 'Sendable' protocol
34 | public let key: String // Corresponds to 'variant_key' from API
35 | public let value: Any? // Corresponds to 'variant_value' from API
:
300 | if success {
301 | // Fetch succeeded, get the flag SYNCHRONOUSLY
302 | result = self.getVariantSync(flagName, fallback: fallback)
| `- warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in an isolated closure; this is an error in the Swift 6 language mode
303 | } else {
304 | print("Warning: Failed to fetch flags, returning fallback for \(flagName).")
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:308:38: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
306 | }
307 | // Call original completion (on main thread)
308 | DispatchQueue.main.async { completion(result) }
| |- warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
309 | }
310 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:385:9: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
383 | // Dispatch the network request initiation to a global queue.
384 | DispatchQueue.global(qos: .utility).async { [weak self] in
385 | self?._performFetchRequest()
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
386 | }
387 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:440:11: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
438 | // Update state and call completions via _completeFetch on the serial queue
439 | self?.accessQueue.async { // Dispatch completion handling to serial queue
440 | self?._completeFetch(success: false)
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
441 | }
442 | },
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:440:11: warning: reference to captured var 'self' in concurrently-executing code
438 | // Update state and call completions via _completeFetch on the serial queue
439 | self?.accessQueue.async { // Dispatch completion handling to serial queue
440 | self?._completeFetch(success: false)
| `- warning: reference to captured var 'self' in concurrently-executing code
441 | }
442 | },
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:448:28: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
446 | // Update state and call completions via _completeFetch on the serial queue
447 | self.accessQueue.async { [weak self] in
448 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
449 | // already on accessQueue – write directly
450 | self.flags = flagsResponse.flags ?? [:]
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:450:24: warning: capture of 'flagsResponse' with non-sendable type 'FlagsResponse' in a '@Sendable' closure
64 |
65 | // Response structure for the /flags endpoint
66 | struct FlagsResponse: Decodable {
| `- note: consider making struct 'FlagsResponse' conform to the 'Sendable' protocol
67 | let flags: [String: MixpanelFlagVariant]? // Dictionary where key is flag name
68 | }
:
448 | guard let self = self else { return }
449 | // already on accessQueue – write directly
450 | self.flags = flagsResponse.flags ?? [:]
| `- warning: capture of 'flagsResponse' with non-sendable type 'FlagsResponse' in a '@Sendable' closure
451 | print("Flags updated: \(self.flags ?? [:])")
452 | self._completeFetch(success: true) // still on accessQueue
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:496:7: warning: sending 'delegate' risks causing data races; this is an error in the Swift 6 language mode
494 | // Dispatch delegate call asynchronously to main thread for safety
495 | DispatchQueue.main.async {
496 | delegate.track(event: "$experiment_started", properties: properties)
| |- warning: sending 'delegate' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'delegate' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
497 | print("Tracked $experiment_started for \(flagName) (dispatched to main)")
498 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:308:38: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
306 | }
307 | // Call original completion (on main thread)
308 | DispatchQueue.main.async { completion(result) }
| |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
309 | }
310 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:308:49: warning: sending 'result' risks causing data races; this is an error in the Swift 6 language mode
306 | }
307 | // Call original completion (on main thread)
308 | DispatchQueue.main.async { completion(result) }
| |- warning: sending 'result' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'result' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
309 | }
310 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:465:7: warning: sending 'handlers' risks causing data races; this is an error in the Swift 6 language mode
463 |
464 | DispatchQueue.main.async {
465 | handlers.forEach { $0(success) }
| |- warning: sending 'handlers' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'handlers' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
466 | }
467 | }
[11/29] Compiling Mixpanel Error.swift
/Users/admin/builder/spi-builder-workspace/Sources/Error.swift:12:8: warning: associated value 'invalidType(type:)' of 'Sendable'-conforming enum 'PropertyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
10 |
11 | enum PropertyError: Error {
12 | case invalidType(type: Any)
| `- warning: associated value 'invalidType(type:)' of 'Sendable'-conforming enum 'PropertyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
13 | }
14 |
/Users/admin/builder/spi-builder-workspace/Sources/Error.swift:16:14: warning: static property 'assertClosure' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 | class Assertions {
16 | static var assertClosure = swiftAssertClosure
| |- warning: static property 'assertClosure' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'assertClosure' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'assertClosure' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 | static let swiftAssertClosure = { Swift.assert($0, $1, file: $2, line: $3) }
18 | }
<unknown>:0: note: a function type must be marked '@Sendable' to conform to 'Sendable'
/Users/admin/builder/spi-builder-workspace/Sources/Error.swift:17:14: warning: static property 'swiftAssertClosure' is not concurrency-safe because non-'Sendable' type '(Bool, String, StaticString, UInt) -> ()' may have shared mutable state; this is an error in the Swift 6 language mode
15 | class Assertions {
16 | static var assertClosure = swiftAssertClosure
17 | static let swiftAssertClosure = { Swift.assert($0, $1, file: $2, line: $3) }
| |- warning: static property 'swiftAssertClosure' is not concurrency-safe because non-'Sendable' type '(Bool, String, StaticString, UInt) -> ()' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'swiftAssertClosure' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
18 | }
19 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:214:7: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
212 | // Using the serial queue itself for this background task is fine
213 | accessQueue.async { [weak self] in
214 | self?._fetchFlagsIfNeeded(completion: nil)
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
215 | }
216 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:266:24: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
264 | ) {
265 | accessQueue.async { [weak self] in // Block A runs serially on accessQueue
266 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
267 |
268 | var flagVariant: MixpanelFlagVariant?
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:285:37: warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in a '@Sendable' closure
31 |
32 | // Represents the variant associated with a feature flag
33 | public struct MixpanelFlagVariant: Decodable {
| `- note: consider making struct 'MixpanelFlagVariant' conform to the 'Sendable' protocol
34 | public let key: String // Corresponds to 'variant_key' from API
35 | public let value: Any? // Corresponds to 'variant_value' from API
:
283 |
284 | if flagsAreCurrentlyReady {
285 | let result = flagVariant ?? fallback
| `- warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in a '@Sendable' closure
286 | if flagVariant != nil, needsTrackingCheck {
287 | // Perform atomic check-and-track. _trackFeatureIfNeeded uses its
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:291:36: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in a '@Sendable' closure
289 | self._trackFlagIfNeeded(flagName: flagName, variant: result)
290 | }
291 | DispatchQueue.main.async { completion(result) }
| |- warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
292 |
293 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:285:37: warning: implicit capture of 'fallback' requires that 'MixpanelFlagVariant' conforms to 'Sendable'; this is an error in the Swift 6 language mode
31 |
32 | // Represents the variant associated with a feature flag
33 | public struct MixpanelFlagVariant: Decodable {
| `- note: consider making struct 'MixpanelFlagVariant' conform to the 'Sendable' protocol
34 | public let key: String // Corresponds to 'variant_key' from API
35 | public let value: Any? // Corresponds to 'variant_value' from API
:
283 |
284 | if flagsAreCurrentlyReady {
285 | let result = flagVariant ?? fallback
| `- warning: implicit capture of 'fallback' requires that 'MixpanelFlagVariant' conforms to 'Sendable'; this is an error in the Swift 6 language mode
286 | if flagVariant != nil, needsTrackingCheck {
287 | // Perform atomic check-and-track. _trackFeatureIfNeeded uses its
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:302:62: warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in an isolated closure; this is an error in the Swift 6 language mode
31 |
32 | // Represents the variant associated with a feature flag
33 | public struct MixpanelFlagVariant: Decodable {
| `- note: consider making struct 'MixpanelFlagVariant' conform to the 'Sendable' protocol
34 | public let key: String // Corresponds to 'variant_key' from API
35 | public let value: Any? // Corresponds to 'variant_value' from API
:
300 | if success {
301 | // Fetch succeeded, get the flag SYNCHRONOUSLY
302 | result = self.getVariantSync(flagName, fallback: fallback)
| `- warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in an isolated closure; this is an error in the Swift 6 language mode
303 | } else {
304 | print("Warning: Failed to fetch flags, returning fallback for \(flagName).")
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:308:38: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
306 | }
307 | // Call original completion (on main thread)
308 | DispatchQueue.main.async { completion(result) }
| |- warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
309 | }
310 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:385:9: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
383 | // Dispatch the network request initiation to a global queue.
384 | DispatchQueue.global(qos: .utility).async { [weak self] in
385 | self?._performFetchRequest()
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
386 | }
387 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:440:11: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
438 | // Update state and call completions via _completeFetch on the serial queue
439 | self?.accessQueue.async { // Dispatch completion handling to serial queue
440 | self?._completeFetch(success: false)
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
441 | }
442 | },
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:440:11: warning: reference to captured var 'self' in concurrently-executing code
438 | // Update state and call completions via _completeFetch on the serial queue
439 | self?.accessQueue.async { // Dispatch completion handling to serial queue
440 | self?._completeFetch(success: false)
| `- warning: reference to captured var 'self' in concurrently-executing code
441 | }
442 | },
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:448:28: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
446 | // Update state and call completions via _completeFetch on the serial queue
447 | self.accessQueue.async { [weak self] in
448 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
449 | // already on accessQueue – write directly
450 | self.flags = flagsResponse.flags ?? [:]
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:450:24: warning: capture of 'flagsResponse' with non-sendable type 'FlagsResponse' in a '@Sendable' closure
64 |
65 | // Response structure for the /flags endpoint
66 | struct FlagsResponse: Decodable {
| `- note: consider making struct 'FlagsResponse' conform to the 'Sendable' protocol
67 | let flags: [String: MixpanelFlagVariant]? // Dictionary where key is flag name
68 | }
:
448 | guard let self = self else { return }
449 | // already on accessQueue – write directly
450 | self.flags = flagsResponse.flags ?? [:]
| `- warning: capture of 'flagsResponse' with non-sendable type 'FlagsResponse' in a '@Sendable' closure
451 | print("Flags updated: \(self.flags ?? [:])")
452 | self._completeFetch(success: true) // still on accessQueue
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:496:7: warning: sending 'delegate' risks causing data races; this is an error in the Swift 6 language mode
494 | // Dispatch delegate call asynchronously to main thread for safety
495 | DispatchQueue.main.async {
496 | delegate.track(event: "$experiment_started", properties: properties)
| |- warning: sending 'delegate' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'delegate' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
497 | print("Tracked $experiment_started for \(flagName) (dispatched to main)")
498 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:308:38: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
306 | }
307 | // Call original completion (on main thread)
308 | DispatchQueue.main.async { completion(result) }
| |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
309 | }
310 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:308:49: warning: sending 'result' risks causing data races; this is an error in the Swift 6 language mode
306 | }
307 | // Call original completion (on main thread)
308 | DispatchQueue.main.async { completion(result) }
| |- warning: sending 'result' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'result' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
309 | }
310 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:465:7: warning: sending 'handlers' risks causing data races; this is an error in the Swift 6 language mode
463 |
464 | DispatchQueue.main.async {
465 | handlers.forEach { $0(success) }
| |- warning: sending 'handlers' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'handlers' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
466 | }
467 | }
[12/29] Compiling Mixpanel FeatureFlags.swift
/Users/admin/builder/spi-builder-workspace/Sources/Error.swift:12:8: warning: associated value 'invalidType(type:)' of 'Sendable'-conforming enum 'PropertyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
10 |
11 | enum PropertyError: Error {
12 | case invalidType(type: Any)
| `- warning: associated value 'invalidType(type:)' of 'Sendable'-conforming enum 'PropertyError' has non-sendable type 'Any'; this is an error in the Swift 6 language mode
13 | }
14 |
/Users/admin/builder/spi-builder-workspace/Sources/Error.swift:16:14: warning: static property 'assertClosure' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 | class Assertions {
16 | static var assertClosure = swiftAssertClosure
| |- warning: static property 'assertClosure' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'assertClosure' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'assertClosure' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 | static let swiftAssertClosure = { Swift.assert($0, $1, file: $2, line: $3) }
18 | }
<unknown>:0: note: a function type must be marked '@Sendable' to conform to 'Sendable'
/Users/admin/builder/spi-builder-workspace/Sources/Error.swift:17:14: warning: static property 'swiftAssertClosure' is not concurrency-safe because non-'Sendable' type '(Bool, String, StaticString, UInt) -> ()' may have shared mutable state; this is an error in the Swift 6 language mode
15 | class Assertions {
16 | static var assertClosure = swiftAssertClosure
17 | static let swiftAssertClosure = { Swift.assert($0, $1, file: $2, line: $3) }
| |- warning: static property 'swiftAssertClosure' is not concurrency-safe because non-'Sendable' type '(Bool, String, StaticString, UInt) -> ()' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'swiftAssertClosure' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
18 | }
19 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:214:7: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
212 | // Using the serial queue itself for this background task is fine
213 | accessQueue.async { [weak self] in
214 | self?._fetchFlagsIfNeeded(completion: nil)
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
215 | }
216 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:266:24: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
264 | ) {
265 | accessQueue.async { [weak self] in // Block A runs serially on accessQueue
266 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
267 |
268 | var flagVariant: MixpanelFlagVariant?
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:285:37: warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in a '@Sendable' closure
31 |
32 | // Represents the variant associated with a feature flag
33 | public struct MixpanelFlagVariant: Decodable {
| `- note: consider making struct 'MixpanelFlagVariant' conform to the 'Sendable' protocol
34 | public let key: String // Corresponds to 'variant_key' from API
35 | public let value: Any? // Corresponds to 'variant_value' from API
:
283 |
284 | if flagsAreCurrentlyReady {
285 | let result = flagVariant ?? fallback
| `- warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in a '@Sendable' closure
286 | if flagVariant != nil, needsTrackingCheck {
287 | // Perform atomic check-and-track. _trackFeatureIfNeeded uses its
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:291:36: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in a '@Sendable' closure
289 | self._trackFlagIfNeeded(flagName: flagName, variant: result)
290 | }
291 | DispatchQueue.main.async { completion(result) }
| |- warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
292 |
293 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:285:37: warning: implicit capture of 'fallback' requires that 'MixpanelFlagVariant' conforms to 'Sendable'; this is an error in the Swift 6 language mode
31 |
32 | // Represents the variant associated with a feature flag
33 | public struct MixpanelFlagVariant: Decodable {
| `- note: consider making struct 'MixpanelFlagVariant' conform to the 'Sendable' protocol
34 | public let key: String // Corresponds to 'variant_key' from API
35 | public let value: Any? // Corresponds to 'variant_value' from API
:
283 |
284 | if flagsAreCurrentlyReady {
285 | let result = flagVariant ?? fallback
| `- warning: implicit capture of 'fallback' requires that 'MixpanelFlagVariant' conforms to 'Sendable'; this is an error in the Swift 6 language mode
286 | if flagVariant != nil, needsTrackingCheck {
287 | // Perform atomic check-and-track. _trackFeatureIfNeeded uses its
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:302:62: warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in an isolated closure; this is an error in the Swift 6 language mode
31 |
32 | // Represents the variant associated with a feature flag
33 | public struct MixpanelFlagVariant: Decodable {
| `- note: consider making struct 'MixpanelFlagVariant' conform to the 'Sendable' protocol
34 | public let key: String // Corresponds to 'variant_key' from API
35 | public let value: Any? // Corresponds to 'variant_value' from API
:
300 | if success {
301 | // Fetch succeeded, get the flag SYNCHRONOUSLY
302 | result = self.getVariantSync(flagName, fallback: fallback)
| `- warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in an isolated closure; this is an error in the Swift 6 language mode
303 | } else {
304 | print("Warning: Failed to fetch flags, returning fallback for \(flagName).")
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:308:38: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
306 | }
307 | // Call original completion (on main thread)
308 | DispatchQueue.main.async { completion(result) }
| |- warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
309 | }
310 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:385:9: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
383 | // Dispatch the network request initiation to a global queue.
384 | DispatchQueue.global(qos: .utility).async { [weak self] in
385 | self?._performFetchRequest()
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
386 | }
387 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:440:11: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
438 | // Update state and call completions via _completeFetch on the serial queue
439 | self?.accessQueue.async { // Dispatch completion handling to serial queue
440 | self?._completeFetch(success: false)
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
441 | }
442 | },
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:440:11: warning: reference to captured var 'self' in concurrently-executing code
438 | // Update state and call completions via _completeFetch on the serial queue
439 | self?.accessQueue.async { // Dispatch completion handling to serial queue
440 | self?._completeFetch(success: false)
| `- warning: reference to captured var 'self' in concurrently-executing code
441 | }
442 | },
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:448:28: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
179 | // --- FeatureFlagManager Class ---
180 |
181 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
182 |
183 | weak var delegate: MixpanelFlagDelegate?
:
446 | // Update state and call completions via _completeFetch on the serial queue
447 | self.accessQueue.async { [weak self] in
448 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
449 | // already on accessQueue – write directly
450 | self.flags = flagsResponse.flags ?? [:]
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:450:24: warning: capture of 'flagsResponse' with non-sendable type 'FlagsResponse' in a '@Sendable' closure
64 |
65 | // Response structure for the /flags endpoint
66 | struct FlagsResponse: Decodable {
| `- note: consider making struct 'FlagsResponse' conform to the 'Sendable' protocol
67 | let flags: [String: MixpanelFlagVariant]? // Dictionary where key is flag name
68 | }
:
448 | guard let self = self else { return }
449 | // already on accessQueue – write directly
450 | self.flags = flagsResponse.flags ?? [:]
| `- warning: capture of 'flagsResponse' with non-sendable type 'FlagsResponse' in a '@Sendable' closure
451 | print("Flags updated: \(self.flags ?? [:])")
452 | self._completeFetch(success: true) // still on accessQueue
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:496:7: warning: sending 'delegate' risks causing data races; this is an error in the Swift 6 language mode
494 | // Dispatch delegate call asynchronously to main thread for safety
495 | DispatchQueue.main.async {
496 | delegate.track(event: "$experiment_started", properties: properties)
| |- warning: sending 'delegate' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'delegate' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
497 | print("Tracked $experiment_started for \(flagName) (dispatched to main)")
498 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:308:38: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
306 | }
307 | // Call original completion (on main thread)
308 | DispatchQueue.main.async { completion(result) }
| |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
309 | }
310 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:308:49: warning: sending 'result' risks causing data races; this is an error in the Swift 6 language mode
306 | }
307 | // Call original completion (on main thread)
308 | DispatchQueue.main.async { completion(result) }
| |- warning: sending 'result' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'result' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
309 | }
310 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:465:7: warning: sending 'handlers' risks causing data races; this is an error in the Swift 6 language mode
463 |
464 | DispatchQueue.main.async {
465 | handlers.forEach { $0(success) }
| |- warning: sending 'handlers' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'handlers' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
466 | }
467 | }
[13/29] Compiling Mixpanel ReadWriteLock.swift
/Users/admin/builder/spi-builder-workspace/Sources/SessionMetadata.swift:24:24: warning: capture of 'self' with non-sendable type 'SessionMetadata?' in a '@Sendable' closure
9 | import Foundation
10 |
11 | class SessionMetadata {
| `- note: class 'SessionMetadata' does not conform to the 'Sendable' protocol
12 | var eventsCounter: UInt64 = 0
13 | var peopleCounter: UInt64 = 0
:
22 | func applicationWillEnterForeground() {
23 | trackingQueue.async { [weak self] in
24 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'SessionMetadata?' in a '@Sendable' closure
25 |
26 | self.eventsCounter = 0
[14/29] Compiling Mixpanel SessionMetadata.swift
/Users/admin/builder/spi-builder-workspace/Sources/SessionMetadata.swift:24:24: warning: capture of 'self' with non-sendable type 'SessionMetadata?' in a '@Sendable' closure
9 | import Foundation
10 |
11 | class SessionMetadata {
| `- note: class 'SessionMetadata' does not conform to the 'Sendable' protocol
12 | var eventsCounter: UInt64 = 0
13 | var peopleCounter: UInt64 = 0
:
22 | func applicationWillEnterForeground() {
23 | trackingQueue.async { [weak self] in
24 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'SessionMetadata?' in a '@Sendable' closure
25 |
26 | self.eventsCounter = 0
[15/29] Compiling Mixpanel AutomaticEvents.swift
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:20:14: warning: static property 'automaticPropertiesLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class AutomaticProperties {
20 | static let automaticPropertiesLock = ReadWriteLock(label: "automaticPropertiesLock")
| |- warning: static property 'automaticPropertiesLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'automaticPropertiesLock' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | static var properties: InternalProperties = {
/Users/admin/builder/spi-builder-workspace/Sources/ReadWriteLock.swift:10:7: note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | class ReadWriteLock {
| `- note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
11 | private let concurrentQueue: DispatchQueue
12 |
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:22:14: warning: static property 'properties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
20 | static let automaticPropertiesLock = ReadWriteLock(label: "automaticPropertiesLock")
21 |
22 | static var properties: InternalProperties = {
| |- warning: static property 'properties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'properties' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'properties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
23 | var p = InternalProperties()
24 |
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:78:14: warning: static property 'peopleProperties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
76 | }()
77 |
78 | static var peopleProperties: InternalProperties = {
| |- warning: static property 'peopleProperties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'peopleProperties' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'peopleProperties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
79 | var p = InternalProperties()
80 | let infoDict = Bundle.main.infoDictionary
/Users/admin/builder/spi-builder-workspace/Sources/Constants.swift:16:14: warning: static property 'queueSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 | struct QueueConstants {
16 | static var queueSize = 5000
| |- warning: static property 'queueSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'queueSize' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'queueSize' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 | }
18 |
[16/29] Compiling Mixpanel AutomaticProperties.swift
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:20:14: warning: static property 'automaticPropertiesLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class AutomaticProperties {
20 | static let automaticPropertiesLock = ReadWriteLock(label: "automaticPropertiesLock")
| |- warning: static property 'automaticPropertiesLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'automaticPropertiesLock' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | static var properties: InternalProperties = {
/Users/admin/builder/spi-builder-workspace/Sources/ReadWriteLock.swift:10:7: note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | class ReadWriteLock {
| `- note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
11 | private let concurrentQueue: DispatchQueue
12 |
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:22:14: warning: static property 'properties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
20 | static let automaticPropertiesLock = ReadWriteLock(label: "automaticPropertiesLock")
21 |
22 | static var properties: InternalProperties = {
| |- warning: static property 'properties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'properties' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'properties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
23 | var p = InternalProperties()
24 |
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:78:14: warning: static property 'peopleProperties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
76 | }()
77 |
78 | static var peopleProperties: InternalProperties = {
| |- warning: static property 'peopleProperties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'peopleProperties' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'peopleProperties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
79 | var p = InternalProperties()
80 | let infoDict = Bundle.main.infoDictionary
/Users/admin/builder/spi-builder-workspace/Sources/Constants.swift:16:14: warning: static property 'queueSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 | struct QueueConstants {
16 | static var queueSize = 5000
| |- warning: static property 'queueSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'queueSize' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'queueSize' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 | }
18 |
[17/29] Compiling Mixpanel Constants.swift
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:20:14: warning: static property 'automaticPropertiesLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | class AutomaticProperties {
20 | static let automaticPropertiesLock = ReadWriteLock(label: "automaticPropertiesLock")
| |- warning: static property 'automaticPropertiesLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'automaticPropertiesLock' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |
22 | static var properties: InternalProperties = {
/Users/admin/builder/spi-builder-workspace/Sources/ReadWriteLock.swift:10:7: note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | class ReadWriteLock {
| `- note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
11 | private let concurrentQueue: DispatchQueue
12 |
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:22:14: warning: static property 'properties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
20 | static let automaticPropertiesLock = ReadWriteLock(label: "automaticPropertiesLock")
21 |
22 | static var properties: InternalProperties = {
| |- warning: static property 'properties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'properties' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'properties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
23 | var p = InternalProperties()
24 |
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:78:14: warning: static property 'peopleProperties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
76 | }()
77 |
78 | static var peopleProperties: InternalProperties = {
| |- warning: static property 'peopleProperties' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'peopleProperties' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'peopleProperties' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
79 | var p = InternalProperties()
80 | let infoDict = Bundle.main.infoDictionary
/Users/admin/builder/spi-builder-workspace/Sources/Constants.swift:16:14: warning: static property 'queueSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 | struct QueueConstants {
16 | static var queueSize = 5000
| |- warning: static property 'queueSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'queueSize' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'queueSize' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 | }
18 |
[18/29] Compiling Mixpanel MixpanelType.swift
/Users/admin/builder/spi-builder-workspace/Sources/Network.swift:83:11: warning: capture of 'failure' with non-sendable type '(Reason, Data?, URLResponse?) -> Void' in a '@Sendable' closure
81 |
82 | if let hasError = error {
83 | failure(.other(hasError), data, response)
| |- warning: capture of 'failure' with non-sendable type '(Reason, Data?, URLResponse?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
84 | } else {
85 | failure(.noData, data, response)
/Users/admin/builder/spi-builder-workspace/Sources/Network.swift:97:26: warning: capture of 'resource' with non-sendable type 'Resource<A>' in a '@Sendable' closure
33 | }
34 |
35 | struct Resource<A> {
| `- note: consider making generic struct 'Resource' conform to the 'Sendable' protocol
36 | let path: String
37 | let method: RequestMethod
:
95 | return
96 | }
97 | guard let result = resource.parse(responseData) else {
| `- warning: capture of 'resource' with non-sendable type 'Resource<A>' in a '@Sendable' closure
98 | failure(.parseError, data, response)
99 | return
/Users/admin/builder/spi-builder-workspace/Sources/Network.swift:102:7: warning: capture of 'success' with non-sendable type '(A, URLResponse?) -> Void' in a '@Sendable' closure
100 | }
101 |
102 | success(result, response)
| |- warning: capture of 'success' with non-sendable type '(A, URLResponse?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
103 | }.resume()
104 | }
[19/29] Compiling Mixpanel Network.swift
/Users/admin/builder/spi-builder-workspace/Sources/Network.swift:83:11: warning: capture of 'failure' with non-sendable type '(Reason, Data?, URLResponse?) -> Void' in a '@Sendable' closure
81 |
82 | if let hasError = error {
83 | failure(.other(hasError), data, response)
| |- warning: capture of 'failure' with non-sendable type '(Reason, Data?, URLResponse?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
84 | } else {
85 | failure(.noData, data, response)
/Users/admin/builder/spi-builder-workspace/Sources/Network.swift:97:26: warning: capture of 'resource' with non-sendable type 'Resource<A>' in a '@Sendable' closure
33 | }
34 |
35 | struct Resource<A> {
| `- note: consider making generic struct 'Resource' conform to the 'Sendable' protocol
36 | let path: String
37 | let method: RequestMethod
:
95 | return
96 | }
97 | guard let result = resource.parse(responseData) else {
| `- warning: capture of 'resource' with non-sendable type 'Resource<A>' in a '@Sendable' closure
98 | failure(.parseError, data, response)
99 | return
/Users/admin/builder/spi-builder-workspace/Sources/Network.swift:102:7: warning: capture of 'success' with non-sendable type '(A, URLResponse?) -> Void' in a '@Sendable' closure
100 | }
101 |
102 | success(result, response)
| |- warning: capture of 'success' with non-sendable type '(A, URLResponse?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
103 | }.resume()
104 | }
[20/29] Compiling Mixpanel People.swift
/Users/admin/builder/spi-builder-workspace/Sources/People.swift:53:24: warning: capture of 'self' with non-sendable type 'People?' in a '@Sendable' closure
11 | /// Access to the Mixpanel People API, available as an accessible variable from
12 | /// the main Mixpanel instance.
13 | open class People {
| `- note: class 'People' does not conform to the 'Sendable' protocol
14 |
15 | /// controls the $ignore_time property in any subsequent MixpanelPeople operation.
:
51 |
52 | serialQueue.async { [weak self, action, properties] in
53 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'People?' in a '@Sendable' closure
54 |
55 | var r = InternalProperties()
/Users/admin/builder/spi-builder-workspace/Sources/People.swift:65:21: warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
63 | // $unset takes an array of property names which is supplied to this method
64 | // in the properties parameter under the key "$properties"
65 | r[action] = properties["$properties"]
| `- warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
66 | } else {
67 | if action == "$set" || action == "$set_once" {
[21/29] Compiling Mixpanel PrintLogging.swift
/Users/admin/builder/spi-builder-workspace/Sources/People.swift:53:24: warning: capture of 'self' with non-sendable type 'People?' in a '@Sendable' closure
11 | /// Access to the Mixpanel People API, available as an accessible variable from
12 | /// the main Mixpanel instance.
13 | open class People {
| `- note: class 'People' does not conform to the 'Sendable' protocol
14 |
15 | /// controls the $ignore_time property in any subsequent MixpanelPeople operation.
:
51 |
52 | serialQueue.async { [weak self, action, properties] in
53 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'People?' in a '@Sendable' closure
54 |
55 | var r = InternalProperties()
/Users/admin/builder/spi-builder-workspace/Sources/People.swift:65:21: warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
63 | // $unset takes an array of property names which is supplied to this method
64 | // in the properties parameter under the key "$properties"
65 | r[action] = properties["$properties"]
| `- warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
66 | } else {
67 | if action == "$set" || action == "$set_once" {
[22/29] Compiling Mixpanel MixpanelOptions.swift
[23/29] Compiling Mixpanel MixpanelPersistence.swift
[24/29] Compiling Mixpanel FileLogging.swift
/Users/admin/builder/spi-builder-workspace/Sources/Flush.swift:120:9: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
118 | if let timer = timer {
119 | DispatchQueue.main.async { [weak self, timer] in
120 | timer.invalidate()
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'timer' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
121 | self?.timer = nil
122 | }
/Users/admin/builder/spi-builder-workspace/Sources/Flush.swift:121:9: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
119 | DispatchQueue.main.async { [weak self, timer] in
120 | timer.invalidate()
121 | self?.timer = nil
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
122 | }
123 | }
/Users/admin/builder/spi-builder-workspace/Sources/Flush.swift:97:24: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
95 | stopFlushTimer()
96 | DispatchQueue.main.async { [weak self] in
97 | guard let self = self else {
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
98 | return
99 | }
[25/29] Compiling Mixpanel Flush.swift
/Users/admin/builder/spi-builder-workspace/Sources/Flush.swift:120:9: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
118 | if let timer = timer {
119 | DispatchQueue.main.async { [weak self, timer] in
120 | timer.invalidate()
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'timer' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
121 | self?.timer = nil
122 | }
/Users/admin/builder/spi-builder-workspace/Sources/Flush.swift:121:9: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
119 | DispatchQueue.main.async { [weak self, timer] in
120 | timer.invalidate()
121 | self?.timer = nil
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
122 | }
123 | }
/Users/admin/builder/spi-builder-workspace/Sources/Flush.swift:97:24: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
95 | stopFlushTimer()
96 | DispatchQueue.main.async { [weak self] in
97 | guard let self = self else {
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
98 | return
99 | }
[26/29] Compiling Mixpanel FlushRequest.swift
/Users/admin/builder/spi-builder-workspace/Sources/Flush.swift:120:9: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
118 | if let timer = timer {
119 | DispatchQueue.main.async { [weak self, timer] in
120 | timer.invalidate()
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'timer' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
121 | self?.timer = nil
122 | }
/Users/admin/builder/spi-builder-workspace/Sources/Flush.swift:121:9: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
119 | DispatchQueue.main.async { [weak self, timer] in
120 | timer.invalidate()
121 | self?.timer = nil
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
122 | }
123 | }
/Users/admin/builder/spi-builder-workspace/Sources/Flush.swift:97:24: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
95 | stopFlushTimer()
96 | DispatchQueue.main.async { [weak self] in
97 | guard let self = self else {
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
98 | return
99 | }
[27/29] Compiling Mixpanel Mixpanel.swift
/Users/admin/builder/spi-builder-workspace/Sources/Mixpanel.swift:289:14: warning: static property 'sharedInstance' is not concurrency-safe because non-'Sendable' type 'MixpanelManager' may have shared mutable state; this is an error in the Swift 6 language mode
285 | }
286 |
287 | final class MixpanelManager {
| `- note: class 'MixpanelManager' does not conform to the 'Sendable' protocol
288 |
289 | static let sharedInstance = MixpanelManager()
| |- warning: static property 'sharedInstance' is not concurrency-safe because non-'Sendable' type 'MixpanelManager' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'sharedInstance' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
290 | private var instances: [String: MixpanelInstance]
291 | private var mainInstance: MixpanelInstance?
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:786:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
784 | if hasOptedOutTracking() {
785 | if let completion = completion {
786 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
787 | }
788 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:793:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
791 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
792 | if let completion = completion {
793 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
794 | }
795 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:842:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
840 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
841 | if let completion = completion {
842 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
843 | }
844 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:798:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
796 | }
797 | trackingQueue.async { [weak self, distinctId, usePeople] in
798 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
799 |
800 | // If there's no anonymousId assigned yet, that means distinctId is stored in the storage. Assigning already stored
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:841:27: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
839 | alias: self.alias,
840 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
841 | if let completion = 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'
842 | DispatchQueue.main.async(execute: completion)
843 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:880:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
878 | if hasOptedOutTracking() {
879 | if let completion = completion {
880 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
881 | }
882 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:888:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
886 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
887 | if let completion = completion {
888 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
889 | }
890 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:896:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
894 | MixpanelLogger.error(message: "\(self) create alias called with empty alias")
895 | if let completion = completion {
896 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
897 | }
898 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:905:47: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
903 | guard let self = self else {
904 | if let completion = completion {
905 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
906 | }
907 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:949:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
947 | message: "alias: \(alias) matches distinctId: \(distinctId) - skipping api call.")
948 | if let completion = completion {
949 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
950 | }
951 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:903:26: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
901 | if alias != distinctId {
902 | trackingQueue.async { [weak self, alias] in
903 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
904 | if let completion = completion {
905 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:904:31: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
902 | trackingQueue.async { [weak self, alias] in
903 | guard let self = self else {
904 | if let completion = 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'
905 | DispatchQueue.main.async(execute: completion)
906 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:982:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
980 | self.archive()
981 | if let completion = completion {
982 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
983 | }
984 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:963:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
961 | flush()
962 | trackingQueue.async { [weak self] in
963 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
964 | return
965 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:981:27: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
979 | self.mixpanelPersistence.resetEntities()
980 | self.archive()
981 | if let completion = 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'
982 | DispatchQueue.main.async(execute: completion)
983 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1064:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1062 | if hasOptedOutTracking() {
1063 | if let completion = completion {
1064 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1065 | }
1066 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1071:45: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1069 | guard let self = self else {
1070 | if let completion = completion {
1071 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1072 | }
1073 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1078:45: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1076 | if let shouldFlush = self.delegate?.mixpanelWillFlush(self), !shouldFlush {
1077 | if let completion = completion {
1078 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1079 | }
1080 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1101:47: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1099 | guard let self = self else {
1100 | if let completion = completion {
1101 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1102 | }
1103 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1110:45: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1108 |
1109 | if let completion = completion {
1110 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1111 | }
1112 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1069:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1067 | }
1068 | trackingQueue.async { [weak self, completion] in
1069 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1070 | if let completion = completion {
1071 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1070:29: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1068 | trackingQueue.async { [weak self, completion] in
1069 | guard let self = self else {
1070 | if let completion = 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'
1071 | DispatchQueue.main.async(execute: completion)
1072 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1099:26: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1097 |
1098 | self.networkQueue.async { [weak self, completion] in
1099 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1100 | if let completion = completion {
1101 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1100:31: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1098 | self.networkQueue.async { [weak self, completion] in
1099 | guard let self = self else {
1100 | if let completion = 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'
1101 | DispatchQueue.main.async(execute: completion)
1102 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1105:25: warning: capture of 'eventQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1103 | return
1104 | }
1105 | self.flushQueue(eventQueue, type: .events)
| `- warning: capture of 'eventQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1106 | self.flushQueue(peopleQueue, type: .people)
1107 | self.flushQueue(groupsQueue, type: .groups)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1106:25: warning: capture of 'peopleQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1104 | }
1105 | self.flushQueue(eventQueue, type: .events)
1106 | self.flushQueue(peopleQueue, type: .people)
| `- warning: capture of 'peopleQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1107 | self.flushQueue(groupsQueue, type: .groups)
1108 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1107:25: warning: capture of 'groupsQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1105 | self.flushQueue(eventQueue, type: .events)
1106 | self.flushQueue(peopleQueue, type: .people)
1107 | self.flushQueue(groupsQueue, type: .groups)
| `- warning: capture of 'groupsQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1108 |
1109 | if let completion = completion {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1140:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1138 | func flushSuccess(type: FlushType, ids: [Int32]) {
1139 | trackingQueue.async { [weak self] in
1140 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1141 | return
1142 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1169:17: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1167 |
1168 | trackingQueue.async { [weak self, event, properties, epochInterval] in
1169 | guard let self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1170 | return
1171 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1192:21: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1190 | let timedEventsSnapshot = self.trackInstance.track(
1191 | event: event,
1192 | properties: properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1193 | timedEvents: shadowTimedEvents,
1194 | superProperties: shadowSuperProperties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1290:19: warning: result of call to 'write(closure:)' is unused
1288 |
1289 | func removeCachedGroup(groupKey: String, groupID: MixpanelType) {
1290 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
1291 | groups.removeValue(forKey: makeMapKey(groupKey: groupKey, groupID: groupID))
1292 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1324:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1322 | let startTime = Date().timeIntervalSince1970
1323 | trackingQueue.async { [weak self, startTime, event] in
1324 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1325 | let timedEvents = self.trackInstance.time(
1326 | event: event, timedEvents: self.timedEvents, startTime: startTime)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1356:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1354 | public func clearTimedEvents() {
1355 | trackingQueue.async { [weak self] in
1356 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1357 | self.readWriteLock.write {
1358 | self.timedEvents = InternalProperties()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1372:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1370 | public func clearTimedEvent(event: String) {
1371 | trackingQueue.async { [weak self, event] in
1372 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1373 |
1374 | let updatedTimedEvents = self.trackInstance.clearTimedEvent(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1398:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1396 | public func clearSuperProperties() {
1397 | trackingQueue.async { [weak self] in
1398 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1399 | self.superProperties = self.trackInstance.clearSuperProperties(self.superProperties)
1400 | MixpanelPersistence.saveSuperProperties(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1418:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1416 | public func registerSuperProperties(_ properties: Properties) {
1417 | trackingQueue.async { [weak self] in
1418 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1419 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(
1420 | properties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1420:9: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1418 | guard let self = self else { return }
1419 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(
1420 | properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1421 | superProperties: self.superProperties)
1422 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1447:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1445 | ) {
1446 | trackingQueue.async { [weak self] in
1447 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1448 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(
1449 | properties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1449:9: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1447 | guard let self = self else { return }
1448 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(
1449 | properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1450 | superProperties: self.superProperties,
1451 | defaultValue: defaultValue)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1451:23: warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1449 | properties,
1450 | superProperties: self.superProperties,
1451 | defaultValue: defaultValue)
| `- warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1452 | self.readWriteLock.write {
1453 | self.superProperties = updatedSuperProperties
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1477:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1475 | public func unregisterSuperProperty(_ propertyName: String) {
1476 | trackingQueue.async { [weak self] in
1477 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1478 | let updatedSuperProperties = self.trackInstance.unregisterSuperProperty(
1479 | propertyName,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1500:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1498 | ) {
1499 | trackingQueue.async { [weak self] in
1500 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1501 | var superPropertiesShadow = self.superProperties
1502 | self.trackInstance.updateSuperProperty(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1503:9: warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
1501 | var superPropertiesShadow = self.superProperties
1502 | self.trackInstance.updateSuperProperty(
1503 | update,
| |- warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1504 | superProperties: &superPropertiesShadow)
1505 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1619:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1617 | public func optOutTracking() {
1618 | trackingQueue.async { [weak self] in
1619 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1620 | if self.people.distinctId != nil {
1621 | self.people.deleteUser()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1665:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1663 | public func optInTracking(distinctId: String? = nil, properties: Properties? = nil) {
1664 | trackingQueue.async { [weak self] in
1665 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1666 | self.readWriteLock.write {
1667 | self.optOutStatus = false
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1675:48: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1673 | self.identify(distinctId: distinctId)
1674 | }
1675 | self.track(event: "$opt_in", properties: properties)
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1676 | }
1677 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:60:22: warning: static property 'loggers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
58 |
59 | public class MixpanelLogger {
60 | private static var loggers = [MixpanelLogging]()
| |- warning: static property 'loggers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'loggers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'loggers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:61:22: warning: static property 'enabledLevels' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
59 | public class MixpanelLogger {
60 | private static var loggers = [MixpanelLogging]()
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
| |- warning: static property 'enabledLevels' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enabledLevels' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'enabledLevels' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
63 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:62:22: warning: static property 'readWriteLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
60 | private static var loggers = [MixpanelLogging]()
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
| |- warning: static property 'readWriteLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'readWriteLock' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
63 |
64 | /// Add a `MixpanelLogging` object to receive all log messages
/Users/admin/builder/spi-builder-workspace/Sources/ReadWriteLock.swift:10:7: note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | class ReadWriteLock {
| `- note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
11 | private let concurrentQueue: DispatchQueue
12 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:73:19: warning: result of call to 'write(closure:)' is unused
71 | /// Enable log messages of a specific `LogLevel` to be added to the log
72 | class func enableLevel(_ level: MixpanelLogLevel) {
73 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
74 | enabledLevels.insert(level)
75 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:80:19: warning: result of call to 'write(closure:)' is unused
78 | /// Disable log messages of a specific `LogLevel` to prevent them from being logged
79 | class func disableLevel(_ level: MixpanelLogLevel) {
80 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
81 | enabledLevels.remove(level)
82 | }
[28/29] Compiling Mixpanel MixpanelInstance.swift
/Users/admin/builder/spi-builder-workspace/Sources/Mixpanel.swift:289:14: warning: static property 'sharedInstance' is not concurrency-safe because non-'Sendable' type 'MixpanelManager' may have shared mutable state; this is an error in the Swift 6 language mode
285 | }
286 |
287 | final class MixpanelManager {
| `- note: class 'MixpanelManager' does not conform to the 'Sendable' protocol
288 |
289 | static let sharedInstance = MixpanelManager()
| |- warning: static property 'sharedInstance' is not concurrency-safe because non-'Sendable' type 'MixpanelManager' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'sharedInstance' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
290 | private var instances: [String: MixpanelInstance]
291 | private var mainInstance: MixpanelInstance?
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:786:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
784 | if hasOptedOutTracking() {
785 | if let completion = completion {
786 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
787 | }
788 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:793:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
791 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
792 | if let completion = completion {
793 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
794 | }
795 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:842:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
840 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
841 | if let completion = completion {
842 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
843 | }
844 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:798:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
796 | }
797 | trackingQueue.async { [weak self, distinctId, usePeople] in
798 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
799 |
800 | // If there's no anonymousId assigned yet, that means distinctId is stored in the storage. Assigning already stored
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:841:27: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
839 | alias: self.alias,
840 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
841 | if let completion = 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'
842 | DispatchQueue.main.async(execute: completion)
843 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:880:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
878 | if hasOptedOutTracking() {
879 | if let completion = completion {
880 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
881 | }
882 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:888:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
886 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
887 | if let completion = completion {
888 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
889 | }
890 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:896:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
894 | MixpanelLogger.error(message: "\(self) create alias called with empty alias")
895 | if let completion = completion {
896 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
897 | }
898 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:905:47: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
903 | guard let self = self else {
904 | if let completion = completion {
905 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
906 | }
907 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:949:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
947 | message: "alias: \(alias) matches distinctId: \(distinctId) - skipping api call.")
948 | if let completion = completion {
949 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
950 | }
951 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:903:26: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
901 | if alias != distinctId {
902 | trackingQueue.async { [weak self, alias] in
903 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
904 | if let completion = completion {
905 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:904:31: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
902 | trackingQueue.async { [weak self, alias] in
903 | guard let self = self else {
904 | if let completion = 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'
905 | DispatchQueue.main.async(execute: completion)
906 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:982:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
980 | self.archive()
981 | if let completion = completion {
982 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
983 | }
984 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:963:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
961 | flush()
962 | trackingQueue.async { [weak self] in
963 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
964 | return
965 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:981:27: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
979 | self.mixpanelPersistence.resetEntities()
980 | self.archive()
981 | if let completion = 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'
982 | DispatchQueue.main.async(execute: completion)
983 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1064:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1062 | if hasOptedOutTracking() {
1063 | if let completion = completion {
1064 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1065 | }
1066 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1071:45: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1069 | guard let self = self else {
1070 | if let completion = completion {
1071 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1072 | }
1073 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1078:45: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1076 | if let shouldFlush = self.delegate?.mixpanelWillFlush(self), !shouldFlush {
1077 | if let completion = completion {
1078 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1079 | }
1080 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1101:47: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1099 | guard let self = self else {
1100 | if let completion = completion {
1101 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1102 | }
1103 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1110:45: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1108 |
1109 | if let completion = completion {
1110 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1111 | }
1112 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1069:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1067 | }
1068 | trackingQueue.async { [weak self, completion] in
1069 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1070 | if let completion = completion {
1071 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1070:29: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1068 | trackingQueue.async { [weak self, completion] in
1069 | guard let self = self else {
1070 | if let completion = 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'
1071 | DispatchQueue.main.async(execute: completion)
1072 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1099:26: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1097 |
1098 | self.networkQueue.async { [weak self, completion] in
1099 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1100 | if let completion = completion {
1101 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1100:31: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1098 | self.networkQueue.async { [weak self, completion] in
1099 | guard let self = self else {
1100 | if let completion = 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'
1101 | DispatchQueue.main.async(execute: completion)
1102 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1105:25: warning: capture of 'eventQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1103 | return
1104 | }
1105 | self.flushQueue(eventQueue, type: .events)
| `- warning: capture of 'eventQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1106 | self.flushQueue(peopleQueue, type: .people)
1107 | self.flushQueue(groupsQueue, type: .groups)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1106:25: warning: capture of 'peopleQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1104 | }
1105 | self.flushQueue(eventQueue, type: .events)
1106 | self.flushQueue(peopleQueue, type: .people)
| `- warning: capture of 'peopleQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1107 | self.flushQueue(groupsQueue, type: .groups)
1108 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1107:25: warning: capture of 'groupsQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1105 | self.flushQueue(eventQueue, type: .events)
1106 | self.flushQueue(peopleQueue, type: .people)
1107 | self.flushQueue(groupsQueue, type: .groups)
| `- warning: capture of 'groupsQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1108 |
1109 | if let completion = completion {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1140:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1138 | func flushSuccess(type: FlushType, ids: [Int32]) {
1139 | trackingQueue.async { [weak self] in
1140 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1141 | return
1142 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1169:17: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1167 |
1168 | trackingQueue.async { [weak self, event, properties, epochInterval] in
1169 | guard let self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1170 | return
1171 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1192:21: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1190 | let timedEventsSnapshot = self.trackInstance.track(
1191 | event: event,
1192 | properties: properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1193 | timedEvents: shadowTimedEvents,
1194 | superProperties: shadowSuperProperties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1290:19: warning: result of call to 'write(closure:)' is unused
1288 |
1289 | func removeCachedGroup(groupKey: String, groupID: MixpanelType) {
1290 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
1291 | groups.removeValue(forKey: makeMapKey(groupKey: groupKey, groupID: groupID))
1292 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1324:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1322 | let startTime = Date().timeIntervalSince1970
1323 | trackingQueue.async { [weak self, startTime, event] in
1324 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1325 | let timedEvents = self.trackInstance.time(
1326 | event: event, timedEvents: self.timedEvents, startTime: startTime)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1356:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1354 | public func clearTimedEvents() {
1355 | trackingQueue.async { [weak self] in
1356 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1357 | self.readWriteLock.write {
1358 | self.timedEvents = InternalProperties()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1372:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1370 | public func clearTimedEvent(event: String) {
1371 | trackingQueue.async { [weak self, event] in
1372 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1373 |
1374 | let updatedTimedEvents = self.trackInstance.clearTimedEvent(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1398:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1396 | public func clearSuperProperties() {
1397 | trackingQueue.async { [weak self] in
1398 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1399 | self.superProperties = self.trackInstance.clearSuperProperties(self.superProperties)
1400 | MixpanelPersistence.saveSuperProperties(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1418:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1416 | public func registerSuperProperties(_ properties: Properties) {
1417 | trackingQueue.async { [weak self] in
1418 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1419 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(
1420 | properties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1420:9: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1418 | guard let self = self else { return }
1419 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(
1420 | properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1421 | superProperties: self.superProperties)
1422 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1447:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1445 | ) {
1446 | trackingQueue.async { [weak self] in
1447 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1448 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(
1449 | properties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1449:9: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1447 | guard let self = self else { return }
1448 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(
1449 | properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1450 | superProperties: self.superProperties,
1451 | defaultValue: defaultValue)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1451:23: warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1449 | properties,
1450 | superProperties: self.superProperties,
1451 | defaultValue: defaultValue)
| `- warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1452 | self.readWriteLock.write {
1453 | self.superProperties = updatedSuperProperties
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1477:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1475 | public func unregisterSuperProperty(_ propertyName: String) {
1476 | trackingQueue.async { [weak self] in
1477 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1478 | let updatedSuperProperties = self.trackInstance.unregisterSuperProperty(
1479 | propertyName,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1500:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1498 | ) {
1499 | trackingQueue.async { [weak self] in
1500 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1501 | var superPropertiesShadow = self.superProperties
1502 | self.trackInstance.updateSuperProperty(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1503:9: warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
1501 | var superPropertiesShadow = self.superProperties
1502 | self.trackInstance.updateSuperProperty(
1503 | update,
| |- warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1504 | superProperties: &superPropertiesShadow)
1505 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1619:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1617 | public func optOutTracking() {
1618 | trackingQueue.async { [weak self] in
1619 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1620 | if self.people.distinctId != nil {
1621 | self.people.deleteUser()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1665:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1663 | public func optInTracking(distinctId: String? = nil, properties: Properties? = nil) {
1664 | trackingQueue.async { [weak self] in
1665 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1666 | self.readWriteLock.write {
1667 | self.optOutStatus = false
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1675:48: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1673 | self.identify(distinctId: distinctId)
1674 | }
1675 | self.track(event: "$opt_in", properties: properties)
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1676 | }
1677 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:60:22: warning: static property 'loggers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
58 |
59 | public class MixpanelLogger {
60 | private static var loggers = [MixpanelLogging]()
| |- warning: static property 'loggers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'loggers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'loggers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:61:22: warning: static property 'enabledLevels' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
59 | public class MixpanelLogger {
60 | private static var loggers = [MixpanelLogging]()
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
| |- warning: static property 'enabledLevels' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enabledLevels' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'enabledLevels' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
63 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:62:22: warning: static property 'readWriteLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
60 | private static var loggers = [MixpanelLogging]()
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
| |- warning: static property 'readWriteLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'readWriteLock' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
63 |
64 | /// Add a `MixpanelLogging` object to receive all log messages
/Users/admin/builder/spi-builder-workspace/Sources/ReadWriteLock.swift:10:7: note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | class ReadWriteLock {
| `- note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
11 | private let concurrentQueue: DispatchQueue
12 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:73:19: warning: result of call to 'write(closure:)' is unused
71 | /// Enable log messages of a specific `LogLevel` to be added to the log
72 | class func enableLevel(_ level: MixpanelLogLevel) {
73 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
74 | enabledLevels.insert(level)
75 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:80:19: warning: result of call to 'write(closure:)' is unused
78 | /// Disable log messages of a specific `LogLevel` to prevent them from being logged
79 | class func disableLevel(_ level: MixpanelLogLevel) {
80 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
81 | enabledLevels.remove(level)
82 | }
[29/29] Compiling Mixpanel MixpanelLogger.swift
/Users/admin/builder/spi-builder-workspace/Sources/Mixpanel.swift:289:14: warning: static property 'sharedInstance' is not concurrency-safe because non-'Sendable' type 'MixpanelManager' may have shared mutable state; this is an error in the Swift 6 language mode
285 | }
286 |
287 | final class MixpanelManager {
| `- note: class 'MixpanelManager' does not conform to the 'Sendable' protocol
288 |
289 | static let sharedInstance = MixpanelManager()
| |- warning: static property 'sharedInstance' is not concurrency-safe because non-'Sendable' type 'MixpanelManager' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'sharedInstance' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
290 | private var instances: [String: MixpanelInstance]
291 | private var mainInstance: MixpanelInstance?
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:786:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
784 | if hasOptedOutTracking() {
785 | if let completion = completion {
786 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
787 | }
788 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:793:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
791 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
792 | if let completion = completion {
793 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
794 | }
795 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:842:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
840 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
841 | if let completion = completion {
842 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
843 | }
844 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:798:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
796 | }
797 | trackingQueue.async { [weak self, distinctId, usePeople] in
798 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
799 |
800 | // If there's no anonymousId assigned yet, that means distinctId is stored in the storage. Assigning already stored
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:841:27: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
839 | alias: self.alias,
840 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
841 | if let completion = 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'
842 | DispatchQueue.main.async(execute: completion)
843 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:880:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
878 | if hasOptedOutTracking() {
879 | if let completion = completion {
880 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
881 | }
882 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:888:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
886 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
887 | if let completion = completion {
888 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
889 | }
890 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:896:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
894 | MixpanelLogger.error(message: "\(self) create alias called with empty alias")
895 | if let completion = completion {
896 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
897 | }
898 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:905:47: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
903 | guard let self = self else {
904 | if let completion = completion {
905 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
906 | }
907 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:949:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
947 | message: "alias: \(alias) matches distinctId: \(distinctId) - skipping api call.")
948 | if let completion = completion {
949 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
950 | }
951 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:903:26: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
901 | if alias != distinctId {
902 | trackingQueue.async { [weak self, alias] in
903 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
904 | if let completion = completion {
905 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:904:31: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
902 | trackingQueue.async { [weak self, alias] in
903 | guard let self = self else {
904 | if let completion = 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'
905 | DispatchQueue.main.async(execute: completion)
906 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:982:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
980 | self.archive()
981 | if let completion = completion {
982 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
983 | }
984 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:963:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
961 | flush()
962 | trackingQueue.async { [weak self] in
963 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
964 | return
965 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:981:27: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
979 | self.mixpanelPersistence.resetEntities()
980 | self.archive()
981 | if let completion = 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'
982 | DispatchQueue.main.async(execute: completion)
983 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1064:43: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1062 | if hasOptedOutTracking() {
1063 | if let completion = completion {
1064 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1065 | }
1066 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1071:45: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1069 | guard let self = self else {
1070 | if let completion = completion {
1071 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1072 | }
1073 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1078:45: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1076 | if let shouldFlush = self.delegate?.mixpanelWillFlush(self), !shouldFlush {
1077 | if let completion = completion {
1078 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1079 | }
1080 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1101:47: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1099 | guard let self = self else {
1100 | if let completion = completion {
1101 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1102 | }
1103 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1110:45: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1108 |
1109 | if let completion = completion {
1110 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1111 | }
1112 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1069:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1067 | }
1068 | trackingQueue.async { [weak self, completion] in
1069 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1070 | if let completion = completion {
1071 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1070:29: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1068 | trackingQueue.async { [weak self, completion] in
1069 | guard let self = self else {
1070 | if let completion = 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'
1071 | DispatchQueue.main.async(execute: completion)
1072 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1099:26: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1097 |
1098 | self.networkQueue.async { [weak self, completion] in
1099 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1100 | if let completion = completion {
1101 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1100:31: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1098 | self.networkQueue.async { [weak self, completion] in
1099 | guard let self = self else {
1100 | if let completion = 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'
1101 | DispatchQueue.main.async(execute: completion)
1102 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1105:25: warning: capture of 'eventQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1103 | return
1104 | }
1105 | self.flushQueue(eventQueue, type: .events)
| `- warning: capture of 'eventQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1106 | self.flushQueue(peopleQueue, type: .people)
1107 | self.flushQueue(groupsQueue, type: .groups)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1106:25: warning: capture of 'peopleQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1104 | }
1105 | self.flushQueue(eventQueue, type: .events)
1106 | self.flushQueue(peopleQueue, type: .people)
| `- warning: capture of 'peopleQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1107 | self.flushQueue(groupsQueue, type: .groups)
1108 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1107:25: warning: capture of 'groupsQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1105 | self.flushQueue(eventQueue, type: .events)
1106 | self.flushQueue(peopleQueue, type: .people)
1107 | self.flushQueue(groupsQueue, type: .groups)
| `- warning: capture of 'groupsQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1108 |
1109 | if let completion = completion {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1140:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1138 | func flushSuccess(type: FlushType, ids: [Int32]) {
1139 | trackingQueue.async { [weak self] in
1140 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1141 | return
1142 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1169:17: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1167 |
1168 | trackingQueue.async { [weak self, event, properties, epochInterval] in
1169 | guard let self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1170 | return
1171 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1192:21: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1190 | let timedEventsSnapshot = self.trackInstance.track(
1191 | event: event,
1192 | properties: properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1193 | timedEvents: shadowTimedEvents,
1194 | superProperties: shadowSuperProperties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1290:19: warning: result of call to 'write(closure:)' is unused
1288 |
1289 | func removeCachedGroup(groupKey: String, groupID: MixpanelType) {
1290 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
1291 | groups.removeValue(forKey: makeMapKey(groupKey: groupKey, groupID: groupID))
1292 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1324:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1322 | let startTime = Date().timeIntervalSince1970
1323 | trackingQueue.async { [weak self, startTime, event] in
1324 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1325 | let timedEvents = self.trackInstance.time(
1326 | event: event, timedEvents: self.timedEvents, startTime: startTime)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1356:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1354 | public func clearTimedEvents() {
1355 | trackingQueue.async { [weak self] in
1356 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1357 | self.readWriteLock.write {
1358 | self.timedEvents = InternalProperties()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1372:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1370 | public func clearTimedEvent(event: String) {
1371 | trackingQueue.async { [weak self, event] in
1372 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1373 |
1374 | let updatedTimedEvents = self.trackInstance.clearTimedEvent(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1398:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1396 | public func clearSuperProperties() {
1397 | trackingQueue.async { [weak self] in
1398 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1399 | self.superProperties = self.trackInstance.clearSuperProperties(self.superProperties)
1400 | MixpanelPersistence.saveSuperProperties(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1418:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1416 | public func registerSuperProperties(_ properties: Properties) {
1417 | trackingQueue.async { [weak self] in
1418 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1419 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(
1420 | properties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1420:9: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1418 | guard let self = self else { return }
1419 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(
1420 | properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1421 | superProperties: self.superProperties)
1422 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1447:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1445 | ) {
1446 | trackingQueue.async { [weak self] in
1447 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1448 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(
1449 | properties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1449:9: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1447 | guard let self = self else { return }
1448 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(
1449 | properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1450 | superProperties: self.superProperties,
1451 | defaultValue: defaultValue)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1451:23: warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1449 | properties,
1450 | superProperties: self.superProperties,
1451 | defaultValue: defaultValue)
| `- warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1452 | self.readWriteLock.write {
1453 | self.superProperties = updatedSuperProperties
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1477:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1475 | public func unregisterSuperProperty(_ propertyName: String) {
1476 | trackingQueue.async { [weak self] in
1477 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1478 | let updatedSuperProperties = self.trackInstance.unregisterSuperProperty(
1479 | propertyName,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1500:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1498 | ) {
1499 | trackingQueue.async { [weak self] in
1500 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1501 | var superPropertiesShadow = self.superProperties
1502 | self.trackInstance.updateSuperProperty(
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1503:9: warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
1501 | var superPropertiesShadow = self.superProperties
1502 | self.trackInstance.updateSuperProperty(
1503 | update,
| |- warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1504 | superProperties: &superPropertiesShadow)
1505 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1619:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1617 | public func optOutTracking() {
1618 | trackingQueue.async { [weak self] in
1619 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1620 | if self.people.distinctId != nil {
1621 | self.people.deleteUser()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1665:24: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
73 |
74 | /// The class that represents the Mixpanel Instance
75 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate,
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
76 | MixpanelFlagDelegate
77 | {
:
1663 | public func optInTracking(distinctId: String? = nil, properties: Properties? = nil) {
1664 | trackingQueue.async { [weak self] in
1665 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1666 | self.readWriteLock.write {
1667 | self.optOutStatus = false
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1675:48: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1673 | self.identify(distinctId: distinctId)
1674 | }
1675 | self.track(event: "$opt_in", properties: properties)
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1676 | }
1677 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelType.swift:14:17: note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
12 | /// MixpanelType can be either String, Int, UInt, Double, Float, Bool, [MixpanelType], [String: MixpanelType], Date, URL, or NSNull.
13 | /// Numbers are not NaN or infinity
14 | public protocol MixpanelType: Any {
| `- note: protocol 'MixpanelType' does not conform to the 'Sendable' protocol
15 | /**
16 | Checks if this object has nested object types that Mixpanel supports.
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:60:22: warning: static property 'loggers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
58 |
59 | public class MixpanelLogger {
60 | private static var loggers = [MixpanelLogging]()
| |- warning: static property 'loggers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'loggers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'loggers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:61:22: warning: static property 'enabledLevels' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
59 | public class MixpanelLogger {
60 | private static var loggers = [MixpanelLogging]()
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
| |- warning: static property 'enabledLevels' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enabledLevels' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'enabledLevels' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
63 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:62:22: warning: static property 'readWriteLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
60 | private static var loggers = [MixpanelLogging]()
61 | private static var enabledLevels = Set<MixpanelLogLevel>()
62 | private static let readWriteLock: ReadWriteLock = ReadWriteLock(label: "loggerLock")
| |- warning: static property 'readWriteLock' is not concurrency-safe because non-'Sendable' type 'ReadWriteLock' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'readWriteLock' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
63 |
64 | /// Add a `MixpanelLogging` object to receive all log messages
/Users/admin/builder/spi-builder-workspace/Sources/ReadWriteLock.swift:10:7: note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | class ReadWriteLock {
| `- note: class 'ReadWriteLock' does not conform to the 'Sendable' protocol
11 | private let concurrentQueue: DispatchQueue
12 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:73:19: warning: result of call to 'write(closure:)' is unused
71 | /// Enable log messages of a specific `LogLevel` to be added to the log
72 | class func enableLevel(_ level: MixpanelLogLevel) {
73 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
74 | enabledLevels.insert(level)
75 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelLogger.swift:80:19: warning: result of call to 'write(closure:)' is unused
78 | /// Disable log messages of a specific `LogLevel` to prevent them from being logged
79 | class func disableLevel(_ level: MixpanelLogLevel) {
80 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
81 | enabledLevels.remove(level)
82 | }
Build complete! (8.12s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "Mixpanel",
"name" : "Mixpanel",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "12.0"
},
{
"name" : "tvos",
"version" : "11.0"
},
{
"name" : "macos",
"version" : "10.13"
},
{
"name" : "watchos",
"version" : "4.0"
}
],
"products" : [
{
"name" : "Mixpanel",
"targets" : [
"Mixpanel"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "Mixpanel",
"module_type" : "SwiftTarget",
"name" : "Mixpanel",
"path" : "Sources",
"product_memberships" : [
"Mixpanel"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/Mixpanel/PrivacyInfo.xcprivacy",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"AutomaticEvents.swift",
"AutomaticProperties.swift",
"Constants.swift",
"Data+Compression.swift",
"Error.swift",
"FeatureFlags.swift",
"FileLogging.swift",
"Flush.swift",
"FlushRequest.swift",
"Group.swift",
"JSONHandler.swift",
"MPDB.swift",
"Mixpanel.swift",
"MixpanelInstance.swift",
"MixpanelLogger.swift",
"MixpanelOptions.swift",
"MixpanelPersistence.swift",
"MixpanelType.swift",
"Network.swift",
"People.swift",
"PrintLogging.swift",
"ReadWriteLock.swift",
"SessionMetadata.swift",
"Track.swift"
],
"type" : "library"
}
],
"tools_version" : "5.3"
}
Done.