Build Information
Successful build of Mixpanel, reference v5.1.0 (82d1ce
), with Swift 6.1 for macOS (SPM) on 31 May 2025 13:05:17 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
280 | let result = flagVariant ?? fallback
| `- warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in a '@Sendable' closure
281 | if flagVariant != nil, needsTrackingCheck {
282 | // Perform atomic check-and-track. _trackFeatureIfNeeded uses its
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:286:44: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in a '@Sendable' closure
284 | self._trackFlagIfNeeded(flagName: flagName, variant: result)
285 | }
286 | 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'
287 |
288 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:280:45: 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
:
278 |
279 | if flagsAreCurrentlyReady {
280 | 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
281 | if flagVariant != nil, needsTrackingCheck {
282 | // Perform atomic check-and-track. _trackFeatureIfNeeded uses its
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:297:74: 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
:
295 | if success {
296 | // Fetch succeeded, get the flag SYNCHRONOUSLY
297 | 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
298 | } else {
299 | print("Warning: Failed to fetch flags, returning fallback for \(flagName).")
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:303:48: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
301 | }
302 | // Call original completion (on main thread)
303 | 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'
304 | }
305 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:375:17: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
177 | // --- FeatureFlagManager Class ---
178 |
179 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
180 |
181 | weak var delegate: MixpanelFlagDelegate?
:
373 | // Dispatch the network request initiation to a global queue.
374 | DispatchQueue.global(qos: .utility).async { [weak self] in
375 | self?._performFetchRequest()
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
376 | }
377 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:421:21: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
177 | // --- FeatureFlagManager Class ---
178 |
179 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
180 |
181 | weak var delegate: MixpanelFlagDelegate?
:
419 | // Update state and call completions via _completeFetch on the serial queue
420 | self?.accessQueue.async { // Dispatch completion handling to serial queue
421 | self?._completeFetch(success: false)
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
422 | }
423 | },
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:421:21: warning: reference to captured var 'self' in concurrently-executing code
419 | // Update state and call completions via _completeFetch on the serial queue
420 | self?.accessQueue.async { // Dispatch completion handling to serial queue
421 | self?._completeFetch(success: false)
| `- warning: reference to captured var 'self' in concurrently-executing code
422 | }
423 | },
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:429:38: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
177 | // --- FeatureFlagManager Class ---
178 |
179 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
180 |
181 | weak var delegate: MixpanelFlagDelegate?
:
427 | // Update state and call completions via _completeFetch on the serial queue
428 | self.accessQueue.async { [weak self] in
429 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
430 | // already on accessQueue – write directly
431 | self.flags = flagsResponse.flags ?? [:]
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:431:34: 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 | }
:
429 | guard let self = self else { return }
430 | // already on accessQueue – write directly
431 | self.flags = flagsResponse.flags ?? [:]
| `- warning: capture of 'flagsResponse' with non-sendable type 'FlagsResponse' in a '@Sendable' closure
432 | print("Flags updated: \(self.flags ?? [:])")
433 | self._completeFetch(success: true) // still on accessQueue
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:478:13: warning: sending 'delegate' risks causing data races; this is an error in the Swift 6 language mode
476 | // Dispatch delegate call asynchronously to main thread for safety
477 | DispatchQueue.main.async {
478 | 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
479 | print("Tracked $experiment_started for \(flagName) (dispatched to main)")
480 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:303:48: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
301 | }
302 | // Call original completion (on main thread)
303 | 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
304 | }
305 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:303:59: warning: sending 'result' risks causing data races; this is an error in the Swift 6 language mode
301 | }
302 | // Call original completion (on main thread)
303 | 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
304 | }
305 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:446:13: warning: sending 'handlers' risks causing data races; this is an error in the Swift 6 language mode
444 |
445 | DispatchQueue.main.async {
446 | 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
447 | }
448 | }
[17/29] Compiling Mixpanel Error.swift
/Users/admin/builder/spi-builder-workspace/Sources/Error.swift:12:10: 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:16: 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:16: 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:212:13: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
177 | // --- FeatureFlagManager Class ---
178 |
179 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
180 |
181 | weak var delegate: MixpanelFlagDelegate?
:
210 | // Using the serial queue itself for this background task is fine
211 | accessQueue.async { [weak self] in
212 | self?._fetchFlagsIfNeeded(completion: nil)
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
213 | }
214 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:261:30: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
177 | // --- FeatureFlagManager Class ---
178 |
179 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
180 |
181 | weak var delegate: MixpanelFlagDelegate?
:
259 | func getVariant(_ flagName: String, fallback: MixpanelFlagVariant, completion: @escaping (MixpanelFlagVariant) -> Void) {
260 | accessQueue.async { [weak self] in // Block A runs serially on accessQueue
261 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
262 |
263 | var flagVariant: MixpanelFlagVariant?
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:280:45: 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
:
278 |
279 | if flagsAreCurrentlyReady {
280 | let result = flagVariant ?? fallback
| `- warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in a '@Sendable' closure
281 | if flagVariant != nil, needsTrackingCheck {
282 | // Perform atomic check-and-track. _trackFeatureIfNeeded uses its
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:286:44: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in a '@Sendable' closure
284 | self._trackFlagIfNeeded(flagName: flagName, variant: result)
285 | }
286 | 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'
287 |
288 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:280:45: 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
:
278 |
279 | if flagsAreCurrentlyReady {
280 | 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
281 | if flagVariant != nil, needsTrackingCheck {
282 | // Perform atomic check-and-track. _trackFeatureIfNeeded uses its
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:297:74: 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
:
295 | if success {
296 | // Fetch succeeded, get the flag SYNCHRONOUSLY
297 | 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
298 | } else {
299 | print("Warning: Failed to fetch flags, returning fallback for \(flagName).")
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:303:48: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
301 | }
302 | // Call original completion (on main thread)
303 | 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'
304 | }
305 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:375:17: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
177 | // --- FeatureFlagManager Class ---
178 |
179 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
180 |
181 | weak var delegate: MixpanelFlagDelegate?
:
373 | // Dispatch the network request initiation to a global queue.
374 | DispatchQueue.global(qos: .utility).async { [weak self] in
375 | self?._performFetchRequest()
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
376 | }
377 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:421:21: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
177 | // --- FeatureFlagManager Class ---
178 |
179 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
180 |
181 | weak var delegate: MixpanelFlagDelegate?
:
419 | // Update state and call completions via _completeFetch on the serial queue
420 | self?.accessQueue.async { // Dispatch completion handling to serial queue
421 | self?._completeFetch(success: false)
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
422 | }
423 | },
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:421:21: warning: reference to captured var 'self' in concurrently-executing code
419 | // Update state and call completions via _completeFetch on the serial queue
420 | self?.accessQueue.async { // Dispatch completion handling to serial queue
421 | self?._completeFetch(success: false)
| `- warning: reference to captured var 'self' in concurrently-executing code
422 | }
423 | },
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:429:38: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
177 | // --- FeatureFlagManager Class ---
178 |
179 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
180 |
181 | weak var delegate: MixpanelFlagDelegate?
:
427 | // Update state and call completions via _completeFetch on the serial queue
428 | self.accessQueue.async { [weak self] in
429 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
430 | // already on accessQueue – write directly
431 | self.flags = flagsResponse.flags ?? [:]
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:431:34: 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 | }
:
429 | guard let self = self else { return }
430 | // already on accessQueue – write directly
431 | self.flags = flagsResponse.flags ?? [:]
| `- warning: capture of 'flagsResponse' with non-sendable type 'FlagsResponse' in a '@Sendable' closure
432 | print("Flags updated: \(self.flags ?? [:])")
433 | self._completeFetch(success: true) // still on accessQueue
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:478:13: warning: sending 'delegate' risks causing data races; this is an error in the Swift 6 language mode
476 | // Dispatch delegate call asynchronously to main thread for safety
477 | DispatchQueue.main.async {
478 | 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
479 | print("Tracked $experiment_started for \(flagName) (dispatched to main)")
480 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:303:48: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
301 | }
302 | // Call original completion (on main thread)
303 | 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
304 | }
305 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:303:59: warning: sending 'result' risks causing data races; this is an error in the Swift 6 language mode
301 | }
302 | // Call original completion (on main thread)
303 | 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
304 | }
305 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:446:13: warning: sending 'handlers' risks causing data races; this is an error in the Swift 6 language mode
444 |
445 | DispatchQueue.main.async {
446 | 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
447 | }
448 | }
[18/29] Compiling Mixpanel FeatureFlags.swift
/Users/admin/builder/spi-builder-workspace/Sources/Error.swift:12:10: 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:16: 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:16: 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:212:13: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
177 | // --- FeatureFlagManager Class ---
178 |
179 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
180 |
181 | weak var delegate: MixpanelFlagDelegate?
:
210 | // Using the serial queue itself for this background task is fine
211 | accessQueue.async { [weak self] in
212 | self?._fetchFlagsIfNeeded(completion: nil)
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
213 | }
214 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:261:30: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
177 | // --- FeatureFlagManager Class ---
178 |
179 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
180 |
181 | weak var delegate: MixpanelFlagDelegate?
:
259 | func getVariant(_ flagName: String, fallback: MixpanelFlagVariant, completion: @escaping (MixpanelFlagVariant) -> Void) {
260 | accessQueue.async { [weak self] in // Block A runs serially on accessQueue
261 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
262 |
263 | var flagVariant: MixpanelFlagVariant?
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:280:45: 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
:
278 |
279 | if flagsAreCurrentlyReady {
280 | let result = flagVariant ?? fallback
| `- warning: capture of 'fallback' with non-sendable type 'MixpanelFlagVariant' in a '@Sendable' closure
281 | if flagVariant != nil, needsTrackingCheck {
282 | // Perform atomic check-and-track. _trackFeatureIfNeeded uses its
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:286:44: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in a '@Sendable' closure
284 | self._trackFlagIfNeeded(flagName: flagName, variant: result)
285 | }
286 | 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'
287 |
288 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:280:45: 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
:
278 |
279 | if flagsAreCurrentlyReady {
280 | 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
281 | if flagVariant != nil, needsTrackingCheck {
282 | // Perform atomic check-and-track. _trackFeatureIfNeeded uses its
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:297:74: 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
:
295 | if success {
296 | // Fetch succeeded, get the flag SYNCHRONOUSLY
297 | 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
298 | } else {
299 | print("Warning: Failed to fetch flags, returning fallback for \(flagName).")
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:303:48: warning: capture of 'completion' with non-sendable type '(MixpanelFlagVariant) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
301 | }
302 | // Call original completion (on main thread)
303 | 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'
304 | }
305 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:375:17: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
177 | // --- FeatureFlagManager Class ---
178 |
179 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
180 |
181 | weak var delegate: MixpanelFlagDelegate?
:
373 | // Dispatch the network request initiation to a global queue.
374 | DispatchQueue.global(qos: .utility).async { [weak self] in
375 | self?._performFetchRequest()
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
376 | }
377 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:421:21: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
177 | // --- FeatureFlagManager Class ---
178 |
179 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
180 |
181 | weak var delegate: MixpanelFlagDelegate?
:
419 | // Update state and call completions via _completeFetch on the serial queue
420 | self?.accessQueue.async { // Dispatch completion handling to serial queue
421 | self?._completeFetch(success: false)
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
422 | }
423 | },
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:421:21: warning: reference to captured var 'self' in concurrently-executing code
419 | // Update state and call completions via _completeFetch on the serial queue
420 | self?.accessQueue.async { // Dispatch completion handling to serial queue
421 | self?._completeFetch(success: false)
| `- warning: reference to captured var 'self' in concurrently-executing code
422 | }
423 | },
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:429:38: warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
177 | // --- FeatureFlagManager Class ---
178 |
179 | class FeatureFlagManager: Network, MixpanelFlags {
| `- note: class 'FeatureFlagManager' does not conform to the 'Sendable' protocol
180 |
181 | weak var delegate: MixpanelFlagDelegate?
:
427 | // Update state and call completions via _completeFetch on the serial queue
428 | self.accessQueue.async { [weak self] in
429 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'FeatureFlagManager?' in a '@Sendable' closure
430 | // already on accessQueue – write directly
431 | self.flags = flagsResponse.flags ?? [:]
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:431:34: 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 | }
:
429 | guard let self = self else { return }
430 | // already on accessQueue – write directly
431 | self.flags = flagsResponse.flags ?? [:]
| `- warning: capture of 'flagsResponse' with non-sendable type 'FlagsResponse' in a '@Sendable' closure
432 | print("Flags updated: \(self.flags ?? [:])")
433 | self._completeFetch(success: true) // still on accessQueue
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:478:13: warning: sending 'delegate' risks causing data races; this is an error in the Swift 6 language mode
476 | // Dispatch delegate call asynchronously to main thread for safety
477 | DispatchQueue.main.async {
478 | 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
479 | print("Tracked $experiment_started for \(flagName) (dispatched to main)")
480 | }
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:303:48: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
301 | }
302 | // Call original completion (on main thread)
303 | 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
304 | }
305 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:303:59: warning: sending 'result' risks causing data races; this is an error in the Swift 6 language mode
301 | }
302 | // Call original completion (on main thread)
303 | 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
304 | }
305 |
/Users/admin/builder/spi-builder-workspace/Sources/FeatureFlags.swift:446:13: warning: sending 'handlers' risks causing data races; this is an error in the Swift 6 language mode
444 |
445 | DispatchQueue.main.async {
446 | 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
447 | }
448 | }
[19/29] Compiling Mixpanel People.swift
/Users/admin/builder/spi-builder-workspace/Sources/People.swift:51:30: 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.
:
49 |
50 | serialQueue.async { [weak self, action, properties] in
51 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'People?' in a '@Sendable' closure
52 |
53 | var r = InternalProperties()
/Users/admin/builder/spi-builder-workspace/Sources/People.swift:63:29: warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
61 | // $unset takes an array of property names which is supplied to this method
62 | // in the properties parameter under the key "$properties"
63 | r[action] = properties["$properties"]
| `- warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
64 | } else {
65 | if action == "$set" || action == "$set_once" {
[20/29] Compiling Mixpanel PrintLogging.swift
/Users/admin/builder/spi-builder-workspace/Sources/People.swift:51:30: 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.
:
49 |
50 | serialQueue.async { [weak self, action, properties] in
51 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'People?' in a '@Sendable' closure
52 |
53 | var r = InternalProperties()
/Users/admin/builder/spi-builder-workspace/Sources/People.swift:63:29: warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
61 | // $unset takes an array of property names which is supplied to this method
62 | // in the properties parameter under the key "$properties"
63 | r[action] = properties["$properties"]
| `- warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
64 | } else {
65 | if action == "$set" || action == "$set_once" {
[21/29] Compiling Mixpanel AutomaticEvents.swift
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:20:16: 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:16: 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:16: 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:15:16: 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
13 |
14 | struct QueueConstants {
15 | 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
16 | }
17 |
[22/29] Compiling Mixpanel AutomaticProperties.swift
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:20:16: 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:16: 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:16: 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:15:16: 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
13 |
14 | struct QueueConstants {
15 | 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
16 | }
17 |
[23/29] Compiling Mixpanel Constants.swift
/Users/admin/builder/spi-builder-workspace/Sources/AutomaticProperties.swift:20:16: 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:16: 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:16: 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:15:16: 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
13 |
14 | struct QueueConstants {
15 | 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
16 | }
17 |
[24/29] Compiling Mixpanel Mixpanel.swift
/Users/admin/builder/spi-builder-workspace/Sources/Mixpanel.swift:271:16: 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
267 | }
268 |
269 | final class MixpanelManager {
| `- note: class 'MixpanelManager' does not conform to the 'Sendable' protocol
270 |
271 | 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
272 | private var instances: [String: MixpanelInstance]
273 | private var mainInstance: MixpanelInstance?
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:758:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
756 | if hasOptedOutTracking() {
757 | if let completion = completion {
758 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
759 | }
760 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:765:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
763 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
764 | if let completion = completion {
765 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
766 | }
767 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:813:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
811 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
812 | if let completion = completion {
813 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
814 | }
815 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:770:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
768 | }
769 | trackingQueue.async { [weak self, distinctId, usePeople] in
770 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
771 |
772 | // 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:812:33: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
810 | alias: self.alias,
811 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
812 | 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'
813 | DispatchQueue.main.async(execute: completion)
814 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:848:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
846 | if hasOptedOutTracking() {
847 | if let completion = completion {
848 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
849 | }
850 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:856:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
854 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
855 | if let completion = completion {
856 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
857 | }
858 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:864:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
862 | MixpanelLogger.error(message: "\(self) create alias called with empty alias")
863 | if let completion = completion {
864 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
865 | }
866 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:873:59: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
871 | guard let self = self else {
872 | if let completion = completion {
873 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
874 | }
875 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:915:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
913 | MixpanelLogger.error(message: "alias: \(alias) matches distinctId: \(distinctId) - skipping api call.")
914 | if let completion = completion {
915 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
916 | }
917 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:871:34: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
869 | if alias != distinctId {
870 | trackingQueue.async { [weak self, alias] in
871 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
872 | if let completion = completion {
873 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:872:41: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
870 | trackingQueue.async { [weak self, alias] in
871 | guard let self = self else {
872 | 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'
873 | DispatchQueue.main.async(execute: completion)
874 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:948:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
946 | self.archive()
947 | if let completion = completion {
948 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
949 | }
950 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:929:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
927 | flush()
928 | trackingQueue.async { [weak self] in
929 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
930 | return
931 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:947:33: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
945 | self.mixpanelPersistence.resetEntities()
946 | self.archive()
947 | 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'
948 | DispatchQueue.main.async(execute: completion)
949 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1027:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1025 | if hasOptedOutTracking() {
1026 | if let completion = completion {
1027 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1028 | }
1029 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1034:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1032 | guard let self = self else {
1033 | if let completion = completion {
1034 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1035 | }
1036 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1041:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1039 | if let shouldFlush = self.delegate?.mixpanelWillFlush(self), !shouldFlush {
1040 | if let completion = completion {
1041 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1042 | }
1043 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1064:59: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1062 | guard let self = self else {
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:1073:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1071 |
1072 | if let completion = completion {
1073 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1074 | }
1075 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1032:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1030 | }
1031 | trackingQueue.async { [weak self, completion] in
1032 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1033 | if let completion = completion {
1034 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1033:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1031 | trackingQueue.async { [weak self, completion] in
1032 | guard let self = self else {
1033 | 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'
1034 | DispatchQueue.main.async(execute: completion)
1035 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1062:34: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1060 |
1061 | self.networkQueue.async { [weak self, completion] in
1062 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1063 | if let completion = completion {
1064 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1063:41: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1061 | self.networkQueue.async { [weak self, completion] in
1062 | guard let self = self else {
1063 | 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'
1064 | DispatchQueue.main.async(execute: completion)
1065 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1068:33: warning: capture of 'eventQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1066 | return
1067 | }
1068 | self.flushQueue(eventQueue, type: .events)
| `- warning: capture of 'eventQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1069 | self.flushQueue(peopleQueue, type: .people)
1070 | self.flushQueue(groupsQueue, type: .groups)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1069:33: warning: capture of 'peopleQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1067 | }
1068 | self.flushQueue(eventQueue, type: .events)
1069 | self.flushQueue(peopleQueue, type: .people)
| `- warning: capture of 'peopleQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1070 | self.flushQueue(groupsQueue, type: .groups)
1071 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1070:33: warning: capture of 'groupsQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1068 | self.flushQueue(eventQueue, type: .events)
1069 | self.flushQueue(peopleQueue, type: .people)
1070 | self.flushQueue(groupsQueue, type: .groups)
| `- warning: capture of 'groupsQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1071 |
1072 | if let completion = completion {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1103:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1101 | func flushSuccess(type: FlushType, ids: [Int32]) {
1102 | trackingQueue.async { [weak self] in
1103 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1104 | return
1105 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1131:23: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1129 |
1130 | trackingQueue.async { [weak self, event, properties, epochInterval] in
1131 | guard let self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1132 | return
1133 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1152:76: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1150 | hadPersistedDistinctId: self.hadPersistedDistinctId)
1151 | let timedEventsSnapshot = self.trackInstance.track(event: event,
1152 | properties: properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1153 | timedEvents: shadowTimedEvents,
1154 | 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:1248:23: warning: result of call to 'write(closure:)' is unused
1246 |
1247 | func removeCachedGroup(groupKey: String, groupID: MixpanelType) {
1248 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
1249 | groups.removeValue(forKey: makeMapKey(groupKey: groupKey, groupID: groupID))
1250 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1282:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1280 | let startTime = Date().timeIntervalSince1970
1281 | trackingQueue.async { [weak self, startTime, event] in
1282 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1283 | let timedEvents = self.trackInstance.time(event: event, timedEvents: self.timedEvents, startTime: startTime)
1284 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1313:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1311 | public func clearTimedEvents() {
1312 | trackingQueue.async { [weak self] in
1313 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1314 | self.readWriteLock.write {
1315 | self.timedEvents = InternalProperties()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1328:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1326 | public func clearTimedEvent(event: String) {
1327 | trackingQueue.async { [weak self, event] in
1328 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1329 |
1330 | let updatedTimedEvents = self.trackInstance.clearTimedEvent(event: event, timedEvents: self.timedEvents)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1353:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1351 | public func clearSuperProperties() {
1352 | trackingQueue.async { [weak self] in
1353 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1354 | self.superProperties = self.trackInstance.clearSuperProperties(self.superProperties)
1355 | MixpanelPersistence.saveSuperProperties(superProperties: self.superProperties, instanceName: self.name)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1372:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1370 | public func registerSuperProperties(_ properties: Properties) {
1371 | trackingQueue.async { [weak self] in
1372 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1373 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(properties,
1374 | superProperties: self.superProperties)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1373:85: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1371 | trackingQueue.async { [weak self] in
1372 | guard let self = self else { return }
1373 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1374 | superProperties: self.superProperties)
1375 | 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:1401:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1399 | defaultValue: MixpanelType? = nil) {
1400 | trackingQueue.async { [weak self] in
1401 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1402 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(properties,
1403 | superProperties: self.superProperties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1402:89: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1400 | trackingQueue.async { [weak self] in
1401 | guard let self = self else { return }
1402 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1403 | superProperties: self.superProperties,
1404 | 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:1404:103: warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1402 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(properties,
1403 | superProperties: self.superProperties,
1404 | defaultValue: defaultValue)
| `- warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1405 | self.readWriteLock.write {
1406 | 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:1429:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1427 | public func unregisterSuperProperty(_ propertyName: String) {
1428 | trackingQueue.async { [weak self] in
1429 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1430 | let updatedSuperProperties = self.trackInstance.unregisterSuperProperty(propertyName,
1431 | superProperties: self.superProperties)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1448:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1446 | func updateSuperProperty(_ update: @escaping (_ superproperties: inout InternalProperties) -> Void) {
1447 | trackingQueue.async { [weak self] in
1448 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1449 | var superPropertiesShadow = self.superProperties
1450 | self.trackInstance.updateSuperProperty(update,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1450:52: warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
1448 | guard let self = self else { return }
1449 | var superPropertiesShadow = self.superProperties
1450 | self.trackInstance.updateSuperProperty(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'
1451 | superProperties: &superPropertiesShadow)
1452 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1565:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1563 | public func optOutTracking() {
1564 | trackingQueue.async { [weak self] in
1565 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1566 | if self.people.distinctId != nil {
1567 | self.people.deleteUser()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1610:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1608 | public func optInTracking(distinctId: String? = nil, properties: Properties? = nil) {
1609 | trackingQueue.async { [weak self] in
1610 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1611 | self.readWriteLock.write {
1612 | self.optOutStatus = false
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1620:54: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1618 | self.identify(distinctId: distinctId)
1619 | }
1620 | 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
1621 | }
1622 |
/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:24: 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:24: 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:24: 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:23: 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:23: 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 | }
[25/29] Compiling Mixpanel MixpanelInstance.swift
/Users/admin/builder/spi-builder-workspace/Sources/Mixpanel.swift:271:16: 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
267 | }
268 |
269 | final class MixpanelManager {
| `- note: class 'MixpanelManager' does not conform to the 'Sendable' protocol
270 |
271 | 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
272 | private var instances: [String: MixpanelInstance]
273 | private var mainInstance: MixpanelInstance?
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:758:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
756 | if hasOptedOutTracking() {
757 | if let completion = completion {
758 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
759 | }
760 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:765:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
763 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
764 | if let completion = completion {
765 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
766 | }
767 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:813:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
811 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
812 | if let completion = completion {
813 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
814 | }
815 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:770:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
768 | }
769 | trackingQueue.async { [weak self, distinctId, usePeople] in
770 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
771 |
772 | // 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:812:33: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
810 | alias: self.alias,
811 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
812 | 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'
813 | DispatchQueue.main.async(execute: completion)
814 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:848:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
846 | if hasOptedOutTracking() {
847 | if let completion = completion {
848 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
849 | }
850 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:856:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
854 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
855 | if let completion = completion {
856 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
857 | }
858 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:864:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
862 | MixpanelLogger.error(message: "\(self) create alias called with empty alias")
863 | if let completion = completion {
864 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
865 | }
866 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:873:59: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
871 | guard let self = self else {
872 | if let completion = completion {
873 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
874 | }
875 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:915:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
913 | MixpanelLogger.error(message: "alias: \(alias) matches distinctId: \(distinctId) - skipping api call.")
914 | if let completion = completion {
915 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
916 | }
917 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:871:34: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
869 | if alias != distinctId {
870 | trackingQueue.async { [weak self, alias] in
871 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
872 | if let completion = completion {
873 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:872:41: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
870 | trackingQueue.async { [weak self, alias] in
871 | guard let self = self else {
872 | 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'
873 | DispatchQueue.main.async(execute: completion)
874 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:948:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
946 | self.archive()
947 | if let completion = completion {
948 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
949 | }
950 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:929:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
927 | flush()
928 | trackingQueue.async { [weak self] in
929 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
930 | return
931 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:947:33: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
945 | self.mixpanelPersistence.resetEntities()
946 | self.archive()
947 | 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'
948 | DispatchQueue.main.async(execute: completion)
949 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1027:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1025 | if hasOptedOutTracking() {
1026 | if let completion = completion {
1027 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1028 | }
1029 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1034:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1032 | guard let self = self else {
1033 | if let completion = completion {
1034 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1035 | }
1036 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1041:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1039 | if let shouldFlush = self.delegate?.mixpanelWillFlush(self), !shouldFlush {
1040 | if let completion = completion {
1041 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1042 | }
1043 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1064:59: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1062 | guard let self = self else {
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:1073:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1071 |
1072 | if let completion = completion {
1073 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1074 | }
1075 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1032:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1030 | }
1031 | trackingQueue.async { [weak self, completion] in
1032 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1033 | if let completion = completion {
1034 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1033:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1031 | trackingQueue.async { [weak self, completion] in
1032 | guard let self = self else {
1033 | 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'
1034 | DispatchQueue.main.async(execute: completion)
1035 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1062:34: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1060 |
1061 | self.networkQueue.async { [weak self, completion] in
1062 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1063 | if let completion = completion {
1064 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1063:41: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1061 | self.networkQueue.async { [weak self, completion] in
1062 | guard let self = self else {
1063 | 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'
1064 | DispatchQueue.main.async(execute: completion)
1065 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1068:33: warning: capture of 'eventQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1066 | return
1067 | }
1068 | self.flushQueue(eventQueue, type: .events)
| `- warning: capture of 'eventQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1069 | self.flushQueue(peopleQueue, type: .people)
1070 | self.flushQueue(groupsQueue, type: .groups)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1069:33: warning: capture of 'peopleQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1067 | }
1068 | self.flushQueue(eventQueue, type: .events)
1069 | self.flushQueue(peopleQueue, type: .people)
| `- warning: capture of 'peopleQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1070 | self.flushQueue(groupsQueue, type: .groups)
1071 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1070:33: warning: capture of 'groupsQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1068 | self.flushQueue(eventQueue, type: .events)
1069 | self.flushQueue(peopleQueue, type: .people)
1070 | self.flushQueue(groupsQueue, type: .groups)
| `- warning: capture of 'groupsQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1071 |
1072 | if let completion = completion {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1103:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1101 | func flushSuccess(type: FlushType, ids: [Int32]) {
1102 | trackingQueue.async { [weak self] in
1103 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1104 | return
1105 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1131:23: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1129 |
1130 | trackingQueue.async { [weak self, event, properties, epochInterval] in
1131 | guard let self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1132 | return
1133 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1152:76: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1150 | hadPersistedDistinctId: self.hadPersistedDistinctId)
1151 | let timedEventsSnapshot = self.trackInstance.track(event: event,
1152 | properties: properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1153 | timedEvents: shadowTimedEvents,
1154 | 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:1248:23: warning: result of call to 'write(closure:)' is unused
1246 |
1247 | func removeCachedGroup(groupKey: String, groupID: MixpanelType) {
1248 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
1249 | groups.removeValue(forKey: makeMapKey(groupKey: groupKey, groupID: groupID))
1250 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1282:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1280 | let startTime = Date().timeIntervalSince1970
1281 | trackingQueue.async { [weak self, startTime, event] in
1282 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1283 | let timedEvents = self.trackInstance.time(event: event, timedEvents: self.timedEvents, startTime: startTime)
1284 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1313:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1311 | public func clearTimedEvents() {
1312 | trackingQueue.async { [weak self] in
1313 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1314 | self.readWriteLock.write {
1315 | self.timedEvents = InternalProperties()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1328:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1326 | public func clearTimedEvent(event: String) {
1327 | trackingQueue.async { [weak self, event] in
1328 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1329 |
1330 | let updatedTimedEvents = self.trackInstance.clearTimedEvent(event: event, timedEvents: self.timedEvents)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1353:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1351 | public func clearSuperProperties() {
1352 | trackingQueue.async { [weak self] in
1353 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1354 | self.superProperties = self.trackInstance.clearSuperProperties(self.superProperties)
1355 | MixpanelPersistence.saveSuperProperties(superProperties: self.superProperties, instanceName: self.name)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1372:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1370 | public func registerSuperProperties(_ properties: Properties) {
1371 | trackingQueue.async { [weak self] in
1372 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1373 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(properties,
1374 | superProperties: self.superProperties)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1373:85: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1371 | trackingQueue.async { [weak self] in
1372 | guard let self = self else { return }
1373 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1374 | superProperties: self.superProperties)
1375 | 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:1401:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1399 | defaultValue: MixpanelType? = nil) {
1400 | trackingQueue.async { [weak self] in
1401 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1402 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(properties,
1403 | superProperties: self.superProperties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1402:89: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1400 | trackingQueue.async { [weak self] in
1401 | guard let self = self else { return }
1402 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1403 | superProperties: self.superProperties,
1404 | 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:1404:103: warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1402 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(properties,
1403 | superProperties: self.superProperties,
1404 | defaultValue: defaultValue)
| `- warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1405 | self.readWriteLock.write {
1406 | 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:1429:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1427 | public func unregisterSuperProperty(_ propertyName: String) {
1428 | trackingQueue.async { [weak self] in
1429 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1430 | let updatedSuperProperties = self.trackInstance.unregisterSuperProperty(propertyName,
1431 | superProperties: self.superProperties)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1448:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1446 | func updateSuperProperty(_ update: @escaping (_ superproperties: inout InternalProperties) -> Void) {
1447 | trackingQueue.async { [weak self] in
1448 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1449 | var superPropertiesShadow = self.superProperties
1450 | self.trackInstance.updateSuperProperty(update,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1450:52: warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
1448 | guard let self = self else { return }
1449 | var superPropertiesShadow = self.superProperties
1450 | self.trackInstance.updateSuperProperty(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'
1451 | superProperties: &superPropertiesShadow)
1452 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1565:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1563 | public func optOutTracking() {
1564 | trackingQueue.async { [weak self] in
1565 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1566 | if self.people.distinctId != nil {
1567 | self.people.deleteUser()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1610:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1608 | public func optInTracking(distinctId: String? = nil, properties: Properties? = nil) {
1609 | trackingQueue.async { [weak self] in
1610 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1611 | self.readWriteLock.write {
1612 | self.optOutStatus = false
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1620:54: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1618 | self.identify(distinctId: distinctId)
1619 | }
1620 | 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
1621 | }
1622 |
/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:24: 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:24: 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:24: 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:23: 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:23: 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 | }
[26/29] Compiling Mixpanel MixpanelLogger.swift
/Users/admin/builder/spi-builder-workspace/Sources/Mixpanel.swift:271:16: 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
267 | }
268 |
269 | final class MixpanelManager {
| `- note: class 'MixpanelManager' does not conform to the 'Sendable' protocol
270 |
271 | 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
272 | private var instances: [String: MixpanelInstance]
273 | private var mainInstance: MixpanelInstance?
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:758:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
756 | if hasOptedOutTracking() {
757 | if let completion = completion {
758 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
759 | }
760 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:765:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
763 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
764 | if let completion = completion {
765 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
766 | }
767 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:813:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
811 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
812 | if let completion = completion {
813 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
814 | }
815 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:770:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
768 | }
769 | trackingQueue.async { [weak self, distinctId, usePeople] in
770 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
771 |
772 | // 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:812:33: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
810 | alias: self.alias,
811 | hadPersistedDistinctId: self.hadPersistedDistinctId), instanceName: self.name)
812 | 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'
813 | DispatchQueue.main.async(execute: completion)
814 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:848:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
846 | if hasOptedOutTracking() {
847 | if let completion = completion {
848 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
849 | }
850 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:856:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
854 | MixpanelLogger.error(message: "\(self) cannot identify blank distinct id")
855 | if let completion = completion {
856 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
857 | }
858 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:864:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
862 | MixpanelLogger.error(message: "\(self) create alias called with empty alias")
863 | if let completion = completion {
864 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
865 | }
866 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:873:59: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
871 | guard let self = self else {
872 | if let completion = completion {
873 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
874 | }
875 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:915:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
913 | MixpanelLogger.error(message: "alias: \(alias) matches distinctId: \(distinctId) - skipping api call.")
914 | if let completion = completion {
915 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
916 | }
917 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:871:34: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
869 | if alias != distinctId {
870 | trackingQueue.async { [weak self, alias] in
871 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
872 | if let completion = completion {
873 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:872:41: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
870 | trackingQueue.async { [weak self, alias] in
871 | guard let self = self else {
872 | 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'
873 | DispatchQueue.main.async(execute: completion)
874 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:948:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
946 | self.archive()
947 | if let completion = completion {
948 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
949 | }
950 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:929:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
927 | flush()
928 | trackingQueue.async { [weak self] in
929 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
930 | return
931 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:947:33: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
945 | self.mixpanelPersistence.resetEntities()
946 | self.archive()
947 | 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'
948 | DispatchQueue.main.async(execute: completion)
949 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1027:51: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1025 | if hasOptedOutTracking() {
1026 | if let completion = completion {
1027 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1028 | }
1029 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1034:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1032 | guard let self = self else {
1033 | if let completion = completion {
1034 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1035 | }
1036 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1041:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1039 | if let shouldFlush = self.delegate?.mixpanelWillFlush(self), !shouldFlush {
1040 | if let completion = completion {
1041 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1042 | }
1043 | return
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1064:59: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1062 | guard let self = self else {
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:1073:55: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1071 |
1072 | if let completion = completion {
1073 | DispatchQueue.main.async(execute: completion)
| `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
1074 | }
1075 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1032:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1030 | }
1031 | trackingQueue.async { [weak self, completion] in
1032 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1033 | if let completion = completion {
1034 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1033:37: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1031 | trackingQueue.async { [weak self, completion] in
1032 | guard let self = self else {
1033 | 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'
1034 | DispatchQueue.main.async(execute: completion)
1035 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1062:34: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1060 |
1061 | self.networkQueue.async { [weak self, completion] in
1062 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1063 | if let completion = completion {
1064 | DispatchQueue.main.async(execute: completion)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1063:41: warning: capture of 'completion' with non-sendable type '(() -> Void)?' in a '@Sendable' closure
1061 | self.networkQueue.async { [weak self, completion] in
1062 | guard let self = self else {
1063 | 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'
1064 | DispatchQueue.main.async(execute: completion)
1065 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1068:33: warning: capture of 'eventQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1066 | return
1067 | }
1068 | self.flushQueue(eventQueue, type: .events)
| `- warning: capture of 'eventQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1069 | self.flushQueue(peopleQueue, type: .people)
1070 | self.flushQueue(groupsQueue, type: .groups)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1069:33: warning: capture of 'peopleQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1067 | }
1068 | self.flushQueue(eventQueue, type: .events)
1069 | self.flushQueue(peopleQueue, type: .people)
| `- warning: capture of 'peopleQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1070 | self.flushQueue(groupsQueue, type: .groups)
1071 |
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1070:33: warning: capture of 'groupsQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1068 | self.flushQueue(eventQueue, type: .events)
1069 | self.flushQueue(peopleQueue, type: .people)
1070 | self.flushQueue(groupsQueue, type: .groups)
| `- warning: capture of 'groupsQueue' with non-sendable type '[InternalProperties]' (aka 'Array<Dictionary<String, Any>>') in a '@Sendable' closure
1071 |
1072 | if let completion = completion {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1103:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1101 | func flushSuccess(type: FlushType, ids: [Int32]) {
1102 | trackingQueue.async { [weak self] in
1103 | guard let self = self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1104 | return
1105 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1131:23: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1129 |
1130 | trackingQueue.async { [weak self, event, properties, epochInterval] in
1131 | guard let self else {
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1132 | return
1133 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1152:76: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1150 | hadPersistedDistinctId: self.hadPersistedDistinctId)
1151 | let timedEventsSnapshot = self.trackInstance.track(event: event,
1152 | properties: properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1153 | timedEvents: shadowTimedEvents,
1154 | 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:1248:23: warning: result of call to 'write(closure:)' is unused
1246 |
1247 | func removeCachedGroup(groupKey: String, groupID: MixpanelType) {
1248 | readWriteLock.write {
| `- warning: result of call to 'write(closure:)' is unused
1249 | groups.removeValue(forKey: makeMapKey(groupKey: groupKey, groupID: groupID))
1250 | }
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1282:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1280 | let startTime = Date().timeIntervalSince1970
1281 | trackingQueue.async { [weak self, startTime, event] in
1282 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1283 | let timedEvents = self.trackInstance.time(event: event, timedEvents: self.timedEvents, startTime: startTime)
1284 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1313:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1311 | public func clearTimedEvents() {
1312 | trackingQueue.async { [weak self] in
1313 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1314 | self.readWriteLock.write {
1315 | self.timedEvents = InternalProperties()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1328:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1326 | public func clearTimedEvent(event: String) {
1327 | trackingQueue.async { [weak self, event] in
1328 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1329 |
1330 | let updatedTimedEvents = self.trackInstance.clearTimedEvent(event: event, timedEvents: self.timedEvents)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1353:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1351 | public func clearSuperProperties() {
1352 | trackingQueue.async { [weak self] in
1353 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1354 | self.superProperties = self.trackInstance.clearSuperProperties(self.superProperties)
1355 | MixpanelPersistence.saveSuperProperties(superProperties: self.superProperties, instanceName: self.name)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1372:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1370 | public func registerSuperProperties(_ properties: Properties) {
1371 | trackingQueue.async { [weak self] in
1372 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1373 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(properties,
1374 | superProperties: self.superProperties)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1373:85: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1371 | trackingQueue.async { [weak self] in
1372 | guard let self = self else { return }
1373 | let updatedSuperProperties = self.trackInstance.registerSuperProperties(properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1374 | superProperties: self.superProperties)
1375 | 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:1401:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1399 | defaultValue: MixpanelType? = nil) {
1400 | trackingQueue.async { [weak self] in
1401 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1402 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(properties,
1403 | superProperties: self.superProperties,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1402:89: warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1400 | trackingQueue.async { [weak self] in
1401 | guard let self = self else { return }
1402 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(properties,
| `- warning: capture of 'properties' with non-sendable type 'Properties' (aka 'Dictionary<String, any MixpanelType>') in a '@Sendable' closure
1403 | superProperties: self.superProperties,
1404 | 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:1404:103: warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1402 | let updatedSuperProperties = self.trackInstance.registerSuperPropertiesOnce(properties,
1403 | superProperties: self.superProperties,
1404 | defaultValue: defaultValue)
| `- warning: capture of 'defaultValue' with non-sendable type '(any MixpanelType)?' in a '@Sendable' closure
1405 | self.readWriteLock.write {
1406 | 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:1429:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1427 | public func unregisterSuperProperty(_ propertyName: String) {
1428 | trackingQueue.async { [weak self] in
1429 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1430 | let updatedSuperProperties = self.trackInstance.unregisterSuperProperty(propertyName,
1431 | superProperties: self.superProperties)
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1448:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1446 | func updateSuperProperty(_ update: @escaping (_ superproperties: inout InternalProperties) -> Void) {
1447 | trackingQueue.async { [weak self] in
1448 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1449 | var superPropertiesShadow = self.superProperties
1450 | self.trackInstance.updateSuperProperty(update,
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1450:52: warning: capture of 'update' with non-sendable type '(inout InternalProperties) -> Void' (aka '(inout Dictionary<String, Any>) -> ()') in a '@Sendable' closure
1448 | guard let self = self else { return }
1449 | var superPropertiesShadow = self.superProperties
1450 | self.trackInstance.updateSuperProperty(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'
1451 | superProperties: &superPropertiesShadow)
1452 | self.readWriteLock.write {
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1565:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1563 | public func optOutTracking() {
1564 | trackingQueue.async { [weak self] in
1565 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1566 | if self.people.distinctId != nil {
1567 | self.people.deleteUser()
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1610:30: warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
76 |
77 | /// The class that represents the Mixpanel Instance
78 | open class MixpanelInstance: CustomDebugStringConvertible, FlushDelegate, AEDelegate, MixpanelFlagDelegate {
| `- note: class 'MixpanelInstance' does not conform to the 'Sendable' protocol
79 |
80 | private let options: MixpanelOptions
:
1608 | public func optInTracking(distinctId: String? = nil, properties: Properties? = nil) {
1609 | trackingQueue.async { [weak self] in
1610 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'MixpanelInstance?' in a '@Sendable' closure
1611 | self.readWriteLock.write {
1612 | self.optOutStatus = false
/Users/admin/builder/spi-builder-workspace/Sources/MixpanelInstance.swift:1620:54: warning: capture of 'properties' with non-sendable type 'Properties?' (aka 'Optional<Dictionary<String, any MixpanelType>>') in a '@Sendable' closure
1618 | self.identify(distinctId: distinctId)
1619 | }
1620 | 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
1621 | }
1622 |
/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:24: 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:24: 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:24: 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:23: 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:23: 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 | }
[27/29] Compiling Mixpanel Group.swift
/Users/admin/builder/spi-builder-workspace/Sources/Group.swift:52:27: 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
:
50 | var r = InternalProperties()
51 | var p = InternalProperties()
52 | r["$token"] = self.apiToken
| `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure
53 | r["$time"] = epochMilliseconds
54 | if action == "$unset" {
/Users/admin/builder/spi-builder-workspace/Sources/Group.swift:57:29: warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
55 | // $unset takes an array of property names which is supplied to this method
56 | // in the properties parameter under the key "$properties"
57 | r[action] = properties["$properties"]
| `- warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
58 | } else {
59 | p += properties
[28/29] Compiling Mixpanel JSONHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/Group.swift:52:27: 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
:
50 | var r = InternalProperties()
51 | var p = InternalProperties()
52 | r["$token"] = self.apiToken
| `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure
53 | r["$time"] = epochMilliseconds
54 | if action == "$unset" {
/Users/admin/builder/spi-builder-workspace/Sources/Group.swift:57:29: warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
55 | // $unset takes an array of property names which is supplied to this method
56 | // in the properties parameter under the key "$properties"
57 | r[action] = properties["$properties"]
| `- warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
58 | } else {
59 | p += properties
[29/29] Compiling Mixpanel MPDB.swift
/Users/admin/builder/spi-builder-workspace/Sources/Group.swift:52:27: 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
:
50 | var r = InternalProperties()
51 | var p = InternalProperties()
52 | r["$token"] = self.apiToken
| `- warning: capture of 'self' with non-sendable type 'Group' in a '@Sendable' closure
53 | r["$time"] = epochMilliseconds
54 | if action == "$unset" {
/Users/admin/builder/spi-builder-workspace/Sources/Group.swift:57:29: warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
55 | // $unset takes an array of property names which is supplied to this method
56 | // in the properties parameter under the key "$properties"
57 | r[action] = properties["$properties"]
| `- warning: capture of 'properties' with non-sendable type 'InternalProperties' (aka 'Dictionary<String, Any>') in a '@Sendable' closure
58 | } else {
59 | p += properties
Build complete! (8.16s)
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.