Build Information
Successful build of CoreBluetoothMock, reference 1.0.4 (477998), with Swift 6.1 for macOS (SPM) on 1 Apr 2026 13:01:10 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 InferSendableFromCapturesBuild Log
========================================
RunAll
========================================
Builder version: 4.69.2
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/nordicsemi/IOS-CoreBluetooth-Mock.git
Reference: 1.0.4
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/nordicsemi/IOS-CoreBluetooth-Mock
* tag 1.0.4 -> FETCH_HEAD
HEAD is now at 477998d Merge pull request #148 from NordicSemiconductor/version/1.0.4
Cloned https://github.com/nordicsemi/IOS-CoreBluetooth-Mock.git
Revision (git rev-parse @):
477998d850a2233e05d1941ed0b5a2385da8cf4d
SUCCESS checkout https://github.com/nordicsemi/IOS-CoreBluetooth-Mock.git at 1.0.4
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/nordicsemi/IOS-CoreBluetooth-Mock.git
https://github.com/nordicsemi/IOS-CoreBluetooth-Mock.git
{
"dependencies" : [
{
"identity" : "swift-docc-plugin",
"requirement" : {
"range" : [
{
"lower_bound" : "1.4.5",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-docc-plugin"
}
],
"manifest_display_name" : "CoreBluetoothMock",
"name" : "CoreBluetoothMock",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.14"
},
{
"name" : "ios",
"version" : "12.0"
},
{
"name" : "watchos",
"version" : "4.0"
},
{
"name" : "tvos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "CoreBluetoothMock",
"targets" : [
"CoreBluetoothMock"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"swift_languages_versions" : [
"5"
],
"targets" : [
{
"c99name" : "CoreBluetoothMock",
"module_type" : "SwiftTarget",
"name" : "CoreBluetoothMock",
"path" : "CoreBluetoothMock",
"product_memberships" : [
"CoreBluetoothMock"
],
"sources" : [
"CBMAttributes.swift",
"CBMCentralManager.swift",
"CBMCentralManagerDelegate.swift",
"CBMCentralManagerDelegateProxy.swift",
"CBMCentralManagerFactory.swift",
"CBMCentralManagerMock.swift",
"CBMCentralManagerNative.swift",
"CBMDictionary.swift",
"CBMManagerTypes.swift",
"CBMPeer.swift",
"CBMPeripheral.swift",
"CBMPeripheralDelegate.swift",
"CBMPeripheralDelegateProxy.swift",
"CBMPeripheralPreview.swift",
"CBMPeripheralSpec.swift",
"CBMPeripheralSpecDelegate.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Running build ...
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
[1/1] Compiling plugin Swift-DocC Preview
[2/2] Compiling plugin Swift-DocC
Building for debugging...
[2/4] Write sources
[3/4] Write swift-version-2F0A5646E1D333AE.txt
[5/20] Compiling CoreBluetoothMock CBMPeripheralDelegateProxy.swift
[6/20] Compiling CoreBluetoothMock CBMPeripheralSpec.swift
[7/21] Compiling CoreBluetoothMock CBMPeripheralSpecDelegate.swift
[8/21] Compiling CoreBluetoothMock CBMPeripheralPreview.swift
[9/21] Compiling CoreBluetoothMock CBMCentralManagerNative.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerNative.swift:351:46: warning: capture of 'self' with non-sendable type 'CBMCentralManagerNative' in a '@Sendable' closure
35 | ///
36 | /// This manager can only interact with physical Bluetooth LE devices.
37 | public class CBMCentralManagerNative: CBMCentralManager {
| `- note: class 'CBMCentralManagerNative' does not conform to the 'Sendable' protocol
38 | var observation: NSKeyValueObservation?
39 | @objc dynamic private var manager: CBCentralManager!
:
349 | private func addManagerObserver() {
350 | observation = observe(\.manager?.isScanning, options: [.old, .new]) { _, change in
351 | change.newValue?.flatMap { [weak self] new in
| `- warning: capture of 'self' with non-sendable type 'CBMCentralManagerNative' in a '@Sendable' closure
352 | self?.isScanning = new
353 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMDictionary.swift:56:17: warning: capture of 'self' with non-sendable type 'CBMDictionary<Key, Value>?' in a '@Sendable' closure
35 | /// - Note: This dictionary wrapper does not implement every possible operation and can be expanded as needed
36 | /// for future use.
37 | internal class CBMDictionary<Key: Hashable, Value> {
| `- note: generic class 'CBMDictionary' does not conform to the 'Sendable' protocol
38 | private var dictStorage = [Key: Value]()
39 |
:
54 | set {
55 | queue.async(flags: .barrier) { [weak self] in
56 | self?.dictStorage[key] = newValue
| `- warning: capture of 'self' with non-sendable type 'CBMDictionary<Key, Value>?' in a '@Sendable' closure
57 | }
58 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMDictionary.swift:56:35: warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
35 | /// - Note: This dictionary wrapper does not implement every possible operation and can be expanded as needed
36 | /// for future use.
37 | internal class CBMDictionary<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
38 | private var dictStorage = [Key: Value]()
39 |
:
54 | set {
55 | queue.async(flags: .barrier) { [weak self] in
56 | self?.dictStorage[key] = newValue
| `- warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
57 | }
58 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMDictionary.swift:56:42: warning: capture of 'newValue' with non-sendable type 'Value?' in a '@Sendable' closure
35 | /// - Note: This dictionary wrapper does not implement every possible operation and can be expanded as needed
36 | /// for future use.
37 | internal class CBMDictionary<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
38 | private var dictStorage = [Key: Value]()
39 |
:
54 | set {
55 | queue.async(flags: .barrier) { [weak self] in
56 | self?.dictStorage[key] = newValue
| `- warning: capture of 'newValue' with non-sendable type 'Value?' in a '@Sendable' closure
57 | }
58 | }
[10/21] Compiling CoreBluetoothMock CBMDictionary.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerNative.swift:351:46: warning: capture of 'self' with non-sendable type 'CBMCentralManagerNative' in a '@Sendable' closure
35 | ///
36 | /// This manager can only interact with physical Bluetooth LE devices.
37 | public class CBMCentralManagerNative: CBMCentralManager {
| `- note: class 'CBMCentralManagerNative' does not conform to the 'Sendable' protocol
38 | var observation: NSKeyValueObservation?
39 | @objc dynamic private var manager: CBCentralManager!
:
349 | private func addManagerObserver() {
350 | observation = observe(\.manager?.isScanning, options: [.old, .new]) { _, change in
351 | change.newValue?.flatMap { [weak self] new in
| `- warning: capture of 'self' with non-sendable type 'CBMCentralManagerNative' in a '@Sendable' closure
352 | self?.isScanning = new
353 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMDictionary.swift:56:17: warning: capture of 'self' with non-sendable type 'CBMDictionary<Key, Value>?' in a '@Sendable' closure
35 | /// - Note: This dictionary wrapper does not implement every possible operation and can be expanded as needed
36 | /// for future use.
37 | internal class CBMDictionary<Key: Hashable, Value> {
| `- note: generic class 'CBMDictionary' does not conform to the 'Sendable' protocol
38 | private var dictStorage = [Key: Value]()
39 |
:
54 | set {
55 | queue.async(flags: .barrier) { [weak self] in
56 | self?.dictStorage[key] = newValue
| `- warning: capture of 'self' with non-sendable type 'CBMDictionary<Key, Value>?' in a '@Sendable' closure
57 | }
58 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMDictionary.swift:56:35: warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
35 | /// - Note: This dictionary wrapper does not implement every possible operation and can be expanded as needed
36 | /// for future use.
37 | internal class CBMDictionary<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
38 | private var dictStorage = [Key: Value]()
39 |
:
54 | set {
55 | queue.async(flags: .barrier) { [weak self] in
56 | self?.dictStorage[key] = newValue
| `- warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
57 | }
58 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMDictionary.swift:56:42: warning: capture of 'newValue' with non-sendable type 'Value?' in a '@Sendable' closure
35 | /// - Note: This dictionary wrapper does not implement every possible operation and can be expanded as needed
36 | /// for future use.
37 | internal class CBMDictionary<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
38 | private var dictStorage = [Key: Value]()
39 |
:
54 | set {
55 | queue.async(flags: .barrier) { [weak self] in
56 | self?.dictStorage[key] = newValue
| `- warning: capture of 'newValue' with non-sendable type 'Value?' in a '@Sendable' closure
57 | }
58 | }
[11/21] Compiling CoreBluetoothMock CBMPeripheral.swift
[12/21] Compiling CoreBluetoothMock CBMPeripheralDelegate.swift
[13/21] Compiling CoreBluetoothMock CBMCentralManagerFactory.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:41:24: warning: static property 'managers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
39 |
40 | /// A list of all mock managers instantiated by user.
41 | private static var managers: [WeakRef<CBMCentralManagerMock>] = []
| |- warning: static property 'managers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'managers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'managers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 | /// A list of peripherals known to the system.
43 | private static var peripherals: [CBMPeripheralSpec] = [] {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:43:24: warning: static property 'peripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
41 | private static var managers: [WeakRef<CBMCentralManagerMock>] = []
42 | /// A list of peripherals known to the system.
43 | private static var peripherals: [CBMPeripheralSpec] = [] {
| |- warning: static property 'peripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'peripherals' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'peripherals' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
44 | didSet {
45 | stopAdvertising()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:52:24: warning: static property 'previewPeripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
50 | ///
51 | /// Registered items can be accessed using any ``CBMCentralManagerMock``.
52 | private static var previewPeripherals: Set<CBMPeripheralPreview> = Set()
| |- warning: static property 'previewPeripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'previewPeripherals' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'previewPeripherals' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
53 | /// A map of all current advertisements of all simulated peripherals.
54 | private static var advertisementTimers = CBMDictionary<CBMAdvertisementConfig, Timer>()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:54:24: warning: static property 'advertisementTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
52 | private static var previewPeripherals: Set<CBMPeripheralPreview> = Set()
53 | /// A map of all current advertisements of all simulated peripherals.
54 | private static var advertisementTimers = CBMDictionary<CBMAdvertisementConfig, Timer>()
| |- warning: static property 'advertisementTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'advertisementTimers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'advertisementTimers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
55 | /// A mutex queue for managing managers.
56 | private static let mutex: DispatchQueue = DispatchQueue(label: "Mutex")
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:60:38: warning: static property 'bluetoothAuthorization' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
58 | ///
59 | /// As `CBManagerAuthorization` was added in iOS 13, the raw value is kept.
60 | internal private(set) static var bluetoothAuthorization: Int? {
| |- warning: static property 'bluetoothAuthorization' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'bluetoothAuthorization' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'bluetoothAuthorization' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 | didSet {
62 | notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:72:38: warning: static property 'rssiDeviation' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
70 | ///
71 | /// Defaults to 15 dBm.
72 | internal private(set) static var rssiDeviation: CBMProximity.Deviation = .default
| |- warning: static property 'rssiDeviation' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'rssiDeviation' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'rssiDeviation' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
73 |
74 | /// The global state of the Bluetooth adapter on the device.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:75:41: warning: static property 'managerState' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
73 |
74 | /// The global state of the Bluetooth adapter on the device.
75 | fileprivate private(set) static var managerState: CBMManagerState = .poweredOff {
| |- warning: static property 'managerState' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'managerState' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'managerState' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
76 | didSet {
77 | notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:419:23: warning: static property 'simulateStateRestoration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
417 | /// - SeeAlso: ``CBMCentralManagerRestoredStateScanServicesKey``
418 | /// - SeeAlso: ``CBMCentralManagerRestoredStateScanOptionsKey``
419 | public static var simulateStateRestoration: ((_ identifierKey: String) -> [String : Any]?)?
| |- warning: static property 'simulateStateRestoration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'simulateStateRestoration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'simulateStateRestoration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
420 |
421 | #if !os(macOS)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:97:17: warning: capture of 'manager' with non-sendable type 'CBMCentralManagerMock' in a '@Sendable' closure
35 | /// This implementation will interact only with mock peripherals created using
36 | /// ``CBMPeripheralSpec/simulatePeripheral(identifier:proximity:)``.
37 | open class CBMCentralManagerMock: CBMCentralManager {
| `- note: class 'CBMCentralManagerMock' does not conform to the 'Sendable' protocol
38 |
39 |
:
95 | // ...and notify delegate.
96 | manager.queue.async {
97 | manager.delegate?.centralManagerDidUpdateState(manager)
| `- warning: capture of 'manager' with non-sendable type 'CBMCentralManagerMock' in a '@Sendable' closure
98 | }
99 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:355:27: warning: capture of 'self' with non-sendable type 'CBMCentralManagerMock?' in a '@Sendable' closure
35 | /// This implementation will interact only with mock peripherals created using
36 | /// ``CBMPeripheralSpec/simulatePeripheral(identifier:proximity:)``.
37 | open class CBMCentralManagerMock: CBMCentralManager {
| `- note: class 'CBMCentralManagerMock' does not conform to the 'Sendable' protocol
38 |
39 |
:
353 | }
354 | queue.async { [weak self] in
355 | if let self = self {
| `- warning: capture of 'self' with non-sendable type 'CBMCentralManagerMock?' in a '@Sendable' closure
356 | CBMCentralManagerMock.mutex.sync {
357 | CBMCentralManagerMock.managers.append(WeakRef(self))
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1012:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1010 | if isAlreadyConnected {
1011 | queue.async { [weak self] in
1012 | if let self = self, self.state == .connecting {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1013 | self.state = .connected
1014 | self._canSendWriteWithoutResponse = true
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1017:21: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1015 | self.mock.wasConnected = true
1016 | self.mock.virtualConnections += 1
1017 | completion(.success(()))
| |- warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1018 | }
1019 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1025:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1023 | let result = delegate.peripheralDidReceiveConnectionRequest(mock)
1024 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1025 | if let self = self, self.state == .connecting {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1026 | if case .success = result {
1027 | self.state = .connected
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1034:17: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1032 | self.state = .disconnected
1033 | }
1034 | completion(result)
| |- warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1035 | }
1036 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1046:17: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1044 | state = .disconnected
1045 | queue.async {
1046 | completion()
| |- warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1047 | }
1048 | return
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1061:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1059 | // `tearDownSimulation()` could have been called before this is called.
1060 | // See https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock/issues/25
1061 | if let self = self, self.state == .disconnecting,
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1062 | CBMCentralManagerMock.managerState == .poweredOn {
1063 | self.state = .disconnected
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1073:17: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1071 | didDisconnect: nil)
1072 | }
1073 | completion()
| |- warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1074 | }
1075 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1093:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1091 | }
1092 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1093 | if let self = self, CBMCentralManagerMock.managerState == .poweredOn {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1094 | if isReconnecting {
1095 | self.state = .connecting
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1101:17: warning: capture of 'completion' with non-sendable type '((any Error)?) -> ()' in a '@Sendable' closure
1099 | }
1100 | self._canSendWriteWithoutResponse = false
1101 | completion(error)
| |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1102 | }
1103 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1114:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1112 | }
1113 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1114 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1115 | self.delegate?.peripheralDidUpdateName(self)
1116 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1137:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1135 | let invalidatedServices = oldServices.filter { !services!.contains($0) }
1136 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1137 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1138 | self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
1139 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1138:68: warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1136 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1137 | if let self = self, self.state == .connected {
1138 | self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
| `- warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1139 | }
1140 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
52 | /// may contain multiple characteristics or included services (references to other services).
53 | open class CBMService: CBMAttribute {
| `- note: class 'CBMService' does not conform to the 'Sendable' protocol
54 | internal let identifier: UUID
55 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1160:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1158 | let value = originalCharacteristic.value
1159 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1160 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1161 | characteristic.value = value
1162 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1161:17: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1159 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1160 | if let self = self, self.state == .connected {
1161 | characteristic.value = value
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1162 | self.delegate?.peripheral(self,
1163 | didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1207:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1205 | let delay = interval * Double(newServicesCount)
1206 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1207 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1208 | self.delegate?.peripheral(self, didDiscoverServices: nil)
1209 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1213:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1211 | case .failure(let error):
1212 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1213 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1214 | self.delegate?.peripheral(self, didDiscoverServices: error)
1215 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1256:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1254 | let delay = interval * Double(newServicesCount)
1255 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1256 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1257 | self.delegate?.peripheral(self,
1258 | didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1258:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1256 | if let self = self, self.state == .connected {
1257 | self.delegate?.peripheral(self,
1258 | didDiscoverIncludedServicesFor: service,
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1259 | error: nil)
1260 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
52 | /// may contain multiple characteristics or included services (references to other services).
53 | open class CBMService: CBMAttribute {
| `- note: class 'CBMService' does not conform to the 'Sendable' protocol
54 | internal let identifier: UUID
55 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1264:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1262 | case .failure(let error):
1263 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1264 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1265 | self.delegate?.peripheral(self,
1266 | didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1266:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1264 | if let self = self, self.state == .connected {
1265 | self.delegate?.peripheral(self,
1266 | didDiscoverIncludedServicesFor: service,
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1267 | error: error)
1268 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
52 | /// may contain multiple characteristics or included services (references to other services).
53 | open class CBMService: CBMAttribute {
| `- note: class 'CBMService' does not conform to the 'Sendable' protocol
54 | internal let identifier: UUID
55 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1310:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1308 | let delay = interval * Double(newCharacteristicsCount)
1309 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1310 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1311 | self.delegate?.peripheral(self,
1312 | didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1312:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1310 | if let self = self, self.state == .connected {
1311 | self.delegate?.peripheral(self,
1312 | didDiscoverCharacteristicsFor: service,
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1313 | error: nil)
1314 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
52 | /// may contain multiple characteristics or included services (references to other services).
53 | open class CBMService: CBMAttribute {
| `- note: class 'CBMService' does not conform to the 'Sendable' protocol
54 | internal let identifier: UUID
55 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1318:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1316 | case .failure(let error):
1317 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1318 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1319 | self.delegate?.peripheral(self,
1320 | didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1320:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1318 | if let self = self, self.state == .connected {
1319 | self.delegate?.peripheral(self,
1320 | didDiscoverCharacteristicsFor: service,
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1321 | error: error)
1322 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
52 | /// may contain multiple characteristics or included services (references to other services).
53 | open class CBMService: CBMAttribute {
| `- note: class 'CBMService' does not conform to the 'Sendable' protocol
54 | internal let identifier: UUID
55 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1360:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1358 | let delay = interval * Double(newDescriptorsCount)
1359 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1360 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1361 | self.delegate?.peripheral(self,
1362 | didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1362:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1360 | if let self = self, self.state == .connected {
1361 | self.delegate?.peripheral(self,
1362 | didDiscoverDescriptorsFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1363 | error: nil)
1364 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1368:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1366 | case .failure(let error):
1367 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1368 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1369 | self.delegate?.peripheral(self,
1370 | didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1370:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1368 | if let self = self, self.state == .connected {
1369 | self.delegate?.peripheral(self,
1370 | didDiscoverDescriptorsFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1371 | error: error)
1372 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1397:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1395 | case .success(let data):
1396 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1397 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1398 | characteristic.value = data
1399 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1398:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1396 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1397 | if let self = self, self.state == .connected {
1398 | characteristic.value = data
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1399 | self.delegate?.peripheral(self,
1400 | didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1406:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1404 | case .failure(let error):
1405 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1406 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1407 | self.delegate?.peripheral(self,
1408 | didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1408:66: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1406 | if let self = self, self.state == .connected {
1407 | self.delegate?.peripheral(self,
1408 | didUpdateValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1409 | error: error)
1410 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1433:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1431 | case .success(let data):
1432 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1433 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1434 | descriptor.value = data
1435 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1434:21: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1432 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1433 | if let self = self, self.state == .connected {
1434 | descriptor.value = data
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1435 | self.delegate?.peripheral(self,
1436 | didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 | internal let identifier: UUID
379 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1442:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1440 | case .failure(let error):
1441 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1442 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1443 | self.delegate?.peripheral(self,
1444 | didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1444:66: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1442 | if let self = self, self.state == .connected {
1443 | self.delegate?.peripheral(self,
1444 | didUpdateValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1445 | error: error)
1446 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 | internal let identifier: UUID
379 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1478:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1476 | let delay = interval * Double(packetsCount)
1477 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1478 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1479 | self.delegate?.peripheral(self,
1480 | didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1480:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1478 | if let self = self, self.state == .connected {
1479 | self.delegate?.peripheral(self,
1480 | didWriteValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1481 | error: nil)
1482 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1486:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1484 | case .failure(let error):
1485 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1486 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1487 | self.delegate?.peripheral(self,
1488 | didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1488:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1486 | if let self = self, self.state == .connected {
1487 | self.delegate?.peripheral(self,
1488 | didWriteValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1489 | error: error)
1490 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1508:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1506 |
1507 | queue.async { [weak self] in
1508 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1509 | // Increase buffer.
1510 | self.mutex.sync {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1541:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1539 | case .success:
1540 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1541 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1542 | self.delegate?.peripheral(self,
1543 | didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1543:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1541 | if let self = self, self.state == .connected {
1542 | self.delegate?.peripheral(self,
1543 | didWriteValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1544 | error: nil)
1545 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 | internal let identifier: UUID
379 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1549:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1547 | case .failure(let error):
1548 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1549 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1550 | self.delegate?.peripheral(self,
1551 | didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1551:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1549 | if let self = self, self.state == .connected {
1550 | self.delegate?.peripheral(self,
1551 | didWriteValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1552 | error: error)
1553 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 | internal let identifier: UUID
379 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1596:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1594 | case .success:
1595 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1596 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1597 | characteristic.isNotifying = enabled
1598 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1597:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1595 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1596 | if let self = self, self.state == .connected {
1597 | characteristic.isNotifying = enabled
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1598 | self.delegate?.peripheral(self,
1599 | didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1601:21: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1599 | didUpdateNotificationStateFor: characteristic,
1600 | error: nil)
1601 | mockCharacteristic.isNotifying = enabled
| `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1602 | delegate.peripheral(self.mock,
1603 | didUpdateNotificationStateFor: mockCharacteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:338:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
336 |
337 | /// Mock implementation of ``CBMCharacteristic``.
338 | open class CBMCharacteristicMock: CBMCharacteristic {
| `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
339 |
340 | open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1602:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1600 | error: nil)
1601 | mockCharacteristic.isNotifying = enabled
1602 | delegate.peripheral(self.mock,
| `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1603 | didUpdateNotificationStateFor: mockCharacteristic,
1604 | error: nil)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMPeripheralSpecDelegate.swift:34:17: note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
32 |
33 | /// This delegate should implement the behavior of a real Bluetooth LE device during a connection.
34 | public protocol CBMPeripheralSpecDelegate {
| `- note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
35 |
36 | /// This method is called when the mock peripheral has been reset.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1609:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1607 | case .failure(let error):
1608 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1609 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1610 | self.delegate?.peripheral(self,
1611 | didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1611:78: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1609 | if let self = self, self.state == .connected {
1610 | self.delegate?.peripheral(self,
1611 | didUpdateNotificationStateFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1612 | error: error)
1613 | delegate.peripheral(self.mock,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1613:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1611 | didUpdateNotificationStateFor: characteristic,
1612 | error: error)
1613 | delegate.peripheral(self.mock,
| `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1614 | didUpdateNotificationStateFor: mockCharacteristic,
1615 | error: error)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMPeripheralSpecDelegate.swift:34:17: note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
32 |
33 | /// This delegate should implement the behavior of a real Bluetooth LE device during a connection.
34 | public protocol CBMPeripheralSpecDelegate {
| `- note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
35 |
36 | /// This method is called when the mock peripheral has been reset.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1614:72: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1612 | error: error)
1613 | delegate.peripheral(self.mock,
1614 | didUpdateNotificationStateFor: mockCharacteristic,
| `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1615 | error: error)
1616 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:338:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
336 |
337 | /// Mock implementation of ``CBMCharacteristic``.
338 | open class CBMCharacteristicMock: CBMCharacteristic {
| `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
339 |
340 | open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1627:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1625 | guard manager.ensurePoweredOn() else { return }
1626 | queue.async { [weak self] in
1627 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1628 | let rssi = self.mock.proximity.RSSI
1629 | let delta = CBMCentralManagerMock.rssiDeviation.value
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:142:16: warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
140 | // If the first advertising is to be delayed, create a
141 | // temporary timer that will call the initial data.
142 | if config.delay > 0 {
| |- warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'config' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
143 | advertisementTimers[config] = Timer.scheduledTimer(
144 | timeInterval: config.delay,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:147:32: warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
145 | target: self,
146 | selector: #selector(self.schedule(timer:)),
147 | userInfo: (mock, config),
| |- warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'mock' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
148 | repeats: false)
149 | } else {
[14/21] Compiling CoreBluetoothMock CBMCentralManagerMock.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:41:24: warning: static property 'managers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
39 |
40 | /// A list of all mock managers instantiated by user.
41 | private static var managers: [WeakRef<CBMCentralManagerMock>] = []
| |- warning: static property 'managers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'managers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'managers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 | /// A list of peripherals known to the system.
43 | private static var peripherals: [CBMPeripheralSpec] = [] {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:43:24: warning: static property 'peripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
41 | private static var managers: [WeakRef<CBMCentralManagerMock>] = []
42 | /// A list of peripherals known to the system.
43 | private static var peripherals: [CBMPeripheralSpec] = [] {
| |- warning: static property 'peripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'peripherals' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'peripherals' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
44 | didSet {
45 | stopAdvertising()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:52:24: warning: static property 'previewPeripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
50 | ///
51 | /// Registered items can be accessed using any ``CBMCentralManagerMock``.
52 | private static var previewPeripherals: Set<CBMPeripheralPreview> = Set()
| |- warning: static property 'previewPeripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'previewPeripherals' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'previewPeripherals' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
53 | /// A map of all current advertisements of all simulated peripherals.
54 | private static var advertisementTimers = CBMDictionary<CBMAdvertisementConfig, Timer>()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:54:24: warning: static property 'advertisementTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
52 | private static var previewPeripherals: Set<CBMPeripheralPreview> = Set()
53 | /// A map of all current advertisements of all simulated peripherals.
54 | private static var advertisementTimers = CBMDictionary<CBMAdvertisementConfig, Timer>()
| |- warning: static property 'advertisementTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'advertisementTimers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'advertisementTimers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
55 | /// A mutex queue for managing managers.
56 | private static let mutex: DispatchQueue = DispatchQueue(label: "Mutex")
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:60:38: warning: static property 'bluetoothAuthorization' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
58 | ///
59 | /// As `CBManagerAuthorization` was added in iOS 13, the raw value is kept.
60 | internal private(set) static var bluetoothAuthorization: Int? {
| |- warning: static property 'bluetoothAuthorization' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'bluetoothAuthorization' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'bluetoothAuthorization' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 | didSet {
62 | notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:72:38: warning: static property 'rssiDeviation' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
70 | ///
71 | /// Defaults to 15 dBm.
72 | internal private(set) static var rssiDeviation: CBMProximity.Deviation = .default
| |- warning: static property 'rssiDeviation' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'rssiDeviation' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'rssiDeviation' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
73 |
74 | /// The global state of the Bluetooth adapter on the device.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:75:41: warning: static property 'managerState' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
73 |
74 | /// The global state of the Bluetooth adapter on the device.
75 | fileprivate private(set) static var managerState: CBMManagerState = .poweredOff {
| |- warning: static property 'managerState' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'managerState' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'managerState' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
76 | didSet {
77 | notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:419:23: warning: static property 'simulateStateRestoration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
417 | /// - SeeAlso: ``CBMCentralManagerRestoredStateScanServicesKey``
418 | /// - SeeAlso: ``CBMCentralManagerRestoredStateScanOptionsKey``
419 | public static var simulateStateRestoration: ((_ identifierKey: String) -> [String : Any]?)?
| |- warning: static property 'simulateStateRestoration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'simulateStateRestoration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'simulateStateRestoration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
420 |
421 | #if !os(macOS)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:97:17: warning: capture of 'manager' with non-sendable type 'CBMCentralManagerMock' in a '@Sendable' closure
35 | /// This implementation will interact only with mock peripherals created using
36 | /// ``CBMPeripheralSpec/simulatePeripheral(identifier:proximity:)``.
37 | open class CBMCentralManagerMock: CBMCentralManager {
| `- note: class 'CBMCentralManagerMock' does not conform to the 'Sendable' protocol
38 |
39 |
:
95 | // ...and notify delegate.
96 | manager.queue.async {
97 | manager.delegate?.centralManagerDidUpdateState(manager)
| `- warning: capture of 'manager' with non-sendable type 'CBMCentralManagerMock' in a '@Sendable' closure
98 | }
99 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:355:27: warning: capture of 'self' with non-sendable type 'CBMCentralManagerMock?' in a '@Sendable' closure
35 | /// This implementation will interact only with mock peripherals created using
36 | /// ``CBMPeripheralSpec/simulatePeripheral(identifier:proximity:)``.
37 | open class CBMCentralManagerMock: CBMCentralManager {
| `- note: class 'CBMCentralManagerMock' does not conform to the 'Sendable' protocol
38 |
39 |
:
353 | }
354 | queue.async { [weak self] in
355 | if let self = self {
| `- warning: capture of 'self' with non-sendable type 'CBMCentralManagerMock?' in a '@Sendable' closure
356 | CBMCentralManagerMock.mutex.sync {
357 | CBMCentralManagerMock.managers.append(WeakRef(self))
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1012:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1010 | if isAlreadyConnected {
1011 | queue.async { [weak self] in
1012 | if let self = self, self.state == .connecting {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1013 | self.state = .connected
1014 | self._canSendWriteWithoutResponse = true
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1017:21: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1015 | self.mock.wasConnected = true
1016 | self.mock.virtualConnections += 1
1017 | completion(.success(()))
| |- warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1018 | }
1019 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1025:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1023 | let result = delegate.peripheralDidReceiveConnectionRequest(mock)
1024 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1025 | if let self = self, self.state == .connecting {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1026 | if case .success = result {
1027 | self.state = .connected
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1034:17: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1032 | self.state = .disconnected
1033 | }
1034 | completion(result)
| |- warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1035 | }
1036 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1046:17: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1044 | state = .disconnected
1045 | queue.async {
1046 | completion()
| |- warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1047 | }
1048 | return
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1061:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1059 | // `tearDownSimulation()` could have been called before this is called.
1060 | // See https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock/issues/25
1061 | if let self = self, self.state == .disconnecting,
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1062 | CBMCentralManagerMock.managerState == .poweredOn {
1063 | self.state = .disconnected
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1073:17: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1071 | didDisconnect: nil)
1072 | }
1073 | completion()
| |- warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1074 | }
1075 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1093:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1091 | }
1092 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1093 | if let self = self, CBMCentralManagerMock.managerState == .poweredOn {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1094 | if isReconnecting {
1095 | self.state = .connecting
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1101:17: warning: capture of 'completion' with non-sendable type '((any Error)?) -> ()' in a '@Sendable' closure
1099 | }
1100 | self._canSendWriteWithoutResponse = false
1101 | completion(error)
| |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1102 | }
1103 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1114:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1112 | }
1113 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1114 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1115 | self.delegate?.peripheralDidUpdateName(self)
1116 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1137:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1135 | let invalidatedServices = oldServices.filter { !services!.contains($0) }
1136 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1137 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1138 | self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
1139 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1138:68: warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1136 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1137 | if let self = self, self.state == .connected {
1138 | self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
| `- warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1139 | }
1140 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
52 | /// may contain multiple characteristics or included services (references to other services).
53 | open class CBMService: CBMAttribute {
| `- note: class 'CBMService' does not conform to the 'Sendable' protocol
54 | internal let identifier: UUID
55 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1160:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1158 | let value = originalCharacteristic.value
1159 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1160 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1161 | characteristic.value = value
1162 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1161:17: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1159 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1160 | if let self = self, self.state == .connected {
1161 | characteristic.value = value
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1162 | self.delegate?.peripheral(self,
1163 | didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1207:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1205 | let delay = interval * Double(newServicesCount)
1206 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1207 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1208 | self.delegate?.peripheral(self, didDiscoverServices: nil)
1209 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1213:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1211 | case .failure(let error):
1212 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1213 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1214 | self.delegate?.peripheral(self, didDiscoverServices: error)
1215 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1256:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1254 | let delay = interval * Double(newServicesCount)
1255 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1256 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1257 | self.delegate?.peripheral(self,
1258 | didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1258:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1256 | if let self = self, self.state == .connected {
1257 | self.delegate?.peripheral(self,
1258 | didDiscoverIncludedServicesFor: service,
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1259 | error: nil)
1260 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
52 | /// may contain multiple characteristics or included services (references to other services).
53 | open class CBMService: CBMAttribute {
| `- note: class 'CBMService' does not conform to the 'Sendable' protocol
54 | internal let identifier: UUID
55 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1264:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1262 | case .failure(let error):
1263 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1264 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1265 | self.delegate?.peripheral(self,
1266 | didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1266:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1264 | if let self = self, self.state == .connected {
1265 | self.delegate?.peripheral(self,
1266 | didDiscoverIncludedServicesFor: service,
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1267 | error: error)
1268 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
52 | /// may contain multiple characteristics or included services (references to other services).
53 | open class CBMService: CBMAttribute {
| `- note: class 'CBMService' does not conform to the 'Sendable' protocol
54 | internal let identifier: UUID
55 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1310:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1308 | let delay = interval * Double(newCharacteristicsCount)
1309 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1310 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1311 | self.delegate?.peripheral(self,
1312 | didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1312:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1310 | if let self = self, self.state == .connected {
1311 | self.delegate?.peripheral(self,
1312 | didDiscoverCharacteristicsFor: service,
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1313 | error: nil)
1314 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
52 | /// may contain multiple characteristics or included services (references to other services).
53 | open class CBMService: CBMAttribute {
| `- note: class 'CBMService' does not conform to the 'Sendable' protocol
54 | internal let identifier: UUID
55 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1318:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1316 | case .failure(let error):
1317 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1318 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1319 | self.delegate?.peripheral(self,
1320 | didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1320:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1318 | if let self = self, self.state == .connected {
1319 | self.delegate?.peripheral(self,
1320 | didDiscoverCharacteristicsFor: service,
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1321 | error: error)
1322 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
52 | /// may contain multiple characteristics or included services (references to other services).
53 | open class CBMService: CBMAttribute {
| `- note: class 'CBMService' does not conform to the 'Sendable' protocol
54 | internal let identifier: UUID
55 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1360:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1358 | let delay = interval * Double(newDescriptorsCount)
1359 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1360 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1361 | self.delegate?.peripheral(self,
1362 | didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1362:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1360 | if let self = self, self.state == .connected {
1361 | self.delegate?.peripheral(self,
1362 | didDiscoverDescriptorsFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1363 | error: nil)
1364 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1368:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1366 | case .failure(let error):
1367 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1368 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1369 | self.delegate?.peripheral(self,
1370 | didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1370:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1368 | if let self = self, self.state == .connected {
1369 | self.delegate?.peripheral(self,
1370 | didDiscoverDescriptorsFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1371 | error: error)
1372 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1397:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1395 | case .success(let data):
1396 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1397 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1398 | characteristic.value = data
1399 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1398:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1396 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1397 | if let self = self, self.state == .connected {
1398 | characteristic.value = data
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1399 | self.delegate?.peripheral(self,
1400 | didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1406:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1404 | case .failure(let error):
1405 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1406 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1407 | self.delegate?.peripheral(self,
1408 | didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1408:66: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1406 | if let self = self, self.state == .connected {
1407 | self.delegate?.peripheral(self,
1408 | didUpdateValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1409 | error: error)
1410 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1433:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1431 | case .success(let data):
1432 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1433 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1434 | descriptor.value = data
1435 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1434:21: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1432 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1433 | if let self = self, self.state == .connected {
1434 | descriptor.value = data
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1435 | self.delegate?.peripheral(self,
1436 | didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 | internal let identifier: UUID
379 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1442:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1440 | case .failure(let error):
1441 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1442 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1443 | self.delegate?.peripheral(self,
1444 | didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1444:66: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1442 | if let self = self, self.state == .connected {
1443 | self.delegate?.peripheral(self,
1444 | didUpdateValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1445 | error: error)
1446 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 | internal let identifier: UUID
379 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1478:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1476 | let delay = interval * Double(packetsCount)
1477 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1478 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1479 | self.delegate?.peripheral(self,
1480 | didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1480:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1478 | if let self = self, self.state == .connected {
1479 | self.delegate?.peripheral(self,
1480 | didWriteValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1481 | error: nil)
1482 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1486:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1484 | case .failure(let error):
1485 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1486 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1487 | self.delegate?.peripheral(self,
1488 | didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1488:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1486 | if let self = self, self.state == .connected {
1487 | self.delegate?.peripheral(self,
1488 | didWriteValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1489 | error: error)
1490 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1508:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1506 |
1507 | queue.async { [weak self] in
1508 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1509 | // Increase buffer.
1510 | self.mutex.sync {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1541:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1539 | case .success:
1540 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1541 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1542 | self.delegate?.peripheral(self,
1543 | didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1543:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1541 | if let self = self, self.state == .connected {
1542 | self.delegate?.peripheral(self,
1543 | didWriteValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1544 | error: nil)
1545 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 | internal let identifier: UUID
379 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1549:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1547 | case .failure(let error):
1548 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1549 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1550 | self.delegate?.peripheral(self,
1551 | didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1551:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1549 | if let self = self, self.state == .connected {
1550 | self.delegate?.peripheral(self,
1551 | didWriteValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1552 | error: error)
1553 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 | internal let identifier: UUID
379 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1596:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1594 | case .success:
1595 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1596 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1597 | characteristic.isNotifying = enabled
1598 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1597:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1595 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1596 | if let self = self, self.state == .connected {
1597 | characteristic.isNotifying = enabled
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1598 | self.delegate?.peripheral(self,
1599 | didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1601:21: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1599 | didUpdateNotificationStateFor: characteristic,
1600 | error: nil)
1601 | mockCharacteristic.isNotifying = enabled
| `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1602 | delegate.peripheral(self.mock,
1603 | didUpdateNotificationStateFor: mockCharacteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:338:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
336 |
337 | /// Mock implementation of ``CBMCharacteristic``.
338 | open class CBMCharacteristicMock: CBMCharacteristic {
| `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
339 |
340 | open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1602:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1600 | error: nil)
1601 | mockCharacteristic.isNotifying = enabled
1602 | delegate.peripheral(self.mock,
| `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1603 | didUpdateNotificationStateFor: mockCharacteristic,
1604 | error: nil)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMPeripheralSpecDelegate.swift:34:17: note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
32 |
33 | /// This delegate should implement the behavior of a real Bluetooth LE device during a connection.
34 | public protocol CBMPeripheralSpecDelegate {
| `- note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
35 |
36 | /// This method is called when the mock peripheral has been reset.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1609:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1607 | case .failure(let error):
1608 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1609 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1610 | self.delegate?.peripheral(self,
1611 | didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1611:78: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1609 | if let self = self, self.state == .connected {
1610 | self.delegate?.peripheral(self,
1611 | didUpdateNotificationStateFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1612 | error: error)
1613 | delegate.peripheral(self.mock,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 | internal let identifier: UUID
237 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1613:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1611 | didUpdateNotificationStateFor: characteristic,
1612 | error: error)
1613 | delegate.peripheral(self.mock,
| `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1614 | didUpdateNotificationStateFor: mockCharacteristic,
1615 | error: error)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMPeripheralSpecDelegate.swift:34:17: note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
32 |
33 | /// This delegate should implement the behavior of a real Bluetooth LE device during a connection.
34 | public protocol CBMPeripheralSpecDelegate {
| `- note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
35 |
36 | /// This method is called when the mock peripheral has been reset.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1614:72: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1612 | error: error)
1613 | delegate.peripheral(self.mock,
1614 | didUpdateNotificationStateFor: mockCharacteristic,
| `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1615 | error: error)
1616 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:338:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
336 |
337 | /// Mock implementation of ``CBMCharacteristic``.
338 | open class CBMCharacteristicMock: CBMCharacteristic {
| `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
339 |
340 | open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1627:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
884 | ///
885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
887 | /// The parent central manager.
888 | private let manager: CBMCentralManagerMock
:
1625 | guard manager.ensurePoweredOn() else { return }
1626 | queue.async { [weak self] in
1627 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1628 | let rssi = self.mock.proximity.RSSI
1629 | let delta = CBMCentralManagerMock.rssiDeviation.value
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:142:16: warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
140 | // If the first advertising is to be delayed, create a
141 | // temporary timer that will call the initial data.
142 | if config.delay > 0 {
| |- warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'config' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
143 | advertisementTimers[config] = Timer.scheduledTimer(
144 | timeInterval: config.delay,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:147:32: warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
145 | target: self,
146 | selector: #selector(self.schedule(timer:)),
147 | userInfo: (mock, config),
| |- warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'mock' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
148 | repeats: false)
149 | } else {
[15/21] Compiling CoreBluetoothMock CBMCentralManagerDelegate.swift
[16/21] Compiling CoreBluetoothMock CBMCentralManagerDelegateProxy.swift
[17/21] Emitting module CoreBluetoothMock
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:512:17: warning: let 'uninitializedPeripheral' is not concurrency-safe because non-'Sendable' type 'CBMPeripheralUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
510 | // MARK: - Mocking uninitialized objects
511 |
512 | fileprivate let uninitializedPeripheral = CBMPeripheralUninitialized()
| |- warning: let 'uninitializedPeripheral' is not concurrency-safe because non-'Sendable' type 'CBMPeripheralUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make let 'uninitializedPeripheral' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
513 | fileprivate let uninitializedService = CBMServiceUninitialized()
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
515 |
516 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
| `- note: class 'CBMPeripheralUninitialized' does not conform to the 'Sendable' protocol
517 | let debugDescription: String = "<uninitialized>"
518 |
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:513:17: warning: let 'uninitializedService' is not concurrency-safe because non-'Sendable' type 'CBMServiceUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
511 |
512 | fileprivate let uninitializedPeripheral = CBMPeripheralUninitialized()
513 | fileprivate let uninitializedService = CBMServiceUninitialized()
| |- warning: let 'uninitializedService' is not concurrency-safe because non-'Sendable' type 'CBMServiceUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make let 'uninitializedService' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
515 |
:
585 | }
586 |
587 | fileprivate class CBMServiceUninitialized: CBMService {
| `- note: class 'CBMServiceUninitialized' does not conform to the 'Sendable' protocol
588 | override var debugDescription: String { return "<uninitialized>" }
589 | override var uuid: CBMUUID { uninitialized() }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:514:17: warning: let 'uninitializedCharacteristic' is not concurrency-safe because non-'Sendable' type 'CBMCharacteristicUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
512 | fileprivate let uninitializedPeripheral = CBMPeripheralUninitialized()
513 | fileprivate let uninitializedService = CBMServiceUninitialized()
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
| |- warning: let 'uninitializedCharacteristic' is not concurrency-safe because non-'Sendable' type 'CBMCharacteristicUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make let 'uninitializedCharacteristic' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
515 |
516 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
:
603 | }
604 |
605 | fileprivate class CBMCharacteristicUninitialized: CBMCharacteristic {
| `- note: class 'CBMCharacteristicUninitialized' does not conform to the 'Sendable' protocol
606 | override var debugDescription: String { return "<uninitialized>" }
607 | override var uuid: CBMUUID { uninitialized() }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:41:24: warning: static property 'managers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
39 |
40 | /// A list of all mock managers instantiated by user.
41 | private static var managers: [WeakRef<CBMCentralManagerMock>] = []
| |- warning: static property 'managers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'managers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'managers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 | /// A list of peripherals known to the system.
43 | private static var peripherals: [CBMPeripheralSpec] = [] {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:43:24: warning: static property 'peripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
41 | private static var managers: [WeakRef<CBMCentralManagerMock>] = []
42 | /// A list of peripherals known to the system.
43 | private static var peripherals: [CBMPeripheralSpec] = [] {
| |- warning: static property 'peripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'peripherals' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'peripherals' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
44 | didSet {
45 | stopAdvertising()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:52:24: warning: static property 'previewPeripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
50 | ///
51 | /// Registered items can be accessed using any ``CBMCentralManagerMock``.
52 | private static var previewPeripherals: Set<CBMPeripheralPreview> = Set()
| |- warning: static property 'previewPeripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'previewPeripherals' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'previewPeripherals' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
53 | /// A map of all current advertisements of all simulated peripherals.
54 | private static var advertisementTimers = CBMDictionary<CBMAdvertisementConfig, Timer>()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:54:24: warning: static property 'advertisementTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
52 | private static var previewPeripherals: Set<CBMPeripheralPreview> = Set()
53 | /// A map of all current advertisements of all simulated peripherals.
54 | private static var advertisementTimers = CBMDictionary<CBMAdvertisementConfig, Timer>()
| |- warning: static property 'advertisementTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'advertisementTimers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'advertisementTimers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
55 | /// A mutex queue for managing managers.
56 | private static let mutex: DispatchQueue = DispatchQueue(label: "Mutex")
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:60:38: warning: static property 'bluetoothAuthorization' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
58 | ///
59 | /// As `CBManagerAuthorization` was added in iOS 13, the raw value is kept.
60 | internal private(set) static var bluetoothAuthorization: Int? {
| |- warning: static property 'bluetoothAuthorization' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'bluetoothAuthorization' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'bluetoothAuthorization' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 | didSet {
62 | notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:72:38: warning: static property 'rssiDeviation' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
70 | ///
71 | /// Defaults to 15 dBm.
72 | internal private(set) static var rssiDeviation: CBMProximity.Deviation = .default
| |- warning: static property 'rssiDeviation' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'rssiDeviation' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'rssiDeviation' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
73 |
74 | /// The global state of the Bluetooth adapter on the device.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:75:41: warning: static property 'managerState' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
73 |
74 | /// The global state of the Bluetooth adapter on the device.
75 | fileprivate private(set) static var managerState: CBMManagerState = .poweredOff {
| |- warning: static property 'managerState' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'managerState' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'managerState' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
76 | didSet {
77 | notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:419:23: warning: static property 'simulateStateRestoration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
417 | /// - SeeAlso: ``CBMCentralManagerRestoredStateScanServicesKey``
418 | /// - SeeAlso: ``CBMCentralManagerRestoredStateScanOptionsKey``
419 | public static var simulateStateRestoration: ((_ identifierKey: String) -> [String : Any]?)?
| |- warning: static property 'simulateStateRestoration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'simulateStateRestoration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'simulateStateRestoration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
420 |
421 | #if !os(macOS)
[18/21] Compiling CoreBluetoothMock CBMManagerTypes.swift
[19/21] Compiling CoreBluetoothMock CBMPeer.swift
[20/21] Compiling CoreBluetoothMock CBMAttributes.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:512:17: warning: let 'uninitializedPeripheral' is not concurrency-safe because non-'Sendable' type 'CBMPeripheralUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
510 | // MARK: - Mocking uninitialized objects
511 |
512 | fileprivate let uninitializedPeripheral = CBMPeripheralUninitialized()
| |- warning: let 'uninitializedPeripheral' is not concurrency-safe because non-'Sendable' type 'CBMPeripheralUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make let 'uninitializedPeripheral' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
513 | fileprivate let uninitializedService = CBMServiceUninitialized()
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
515 |
516 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
| `- note: class 'CBMPeripheralUninitialized' does not conform to the 'Sendable' protocol
517 | let debugDescription: String = "<uninitialized>"
518 |
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:513:17: warning: let 'uninitializedService' is not concurrency-safe because non-'Sendable' type 'CBMServiceUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
511 |
512 | fileprivate let uninitializedPeripheral = CBMPeripheralUninitialized()
513 | fileprivate let uninitializedService = CBMServiceUninitialized()
| |- warning: let 'uninitializedService' is not concurrency-safe because non-'Sendable' type 'CBMServiceUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make let 'uninitializedService' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
515 |
:
585 | }
586 |
587 | fileprivate class CBMServiceUninitialized: CBMService {
| `- note: class 'CBMServiceUninitialized' does not conform to the 'Sendable' protocol
588 | override var debugDescription: String { return "<uninitialized>" }
589 | override var uuid: CBMUUID { uninitialized() }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:514:17: warning: let 'uninitializedCharacteristic' is not concurrency-safe because non-'Sendable' type 'CBMCharacteristicUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
512 | fileprivate let uninitializedPeripheral = CBMPeripheralUninitialized()
513 | fileprivate let uninitializedService = CBMServiceUninitialized()
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
| |- warning: let 'uninitializedCharacteristic' is not concurrency-safe because non-'Sendable' type 'CBMCharacteristicUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make let 'uninitializedCharacteristic' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
515 |
516 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
:
603 | }
604 |
605 | fileprivate class CBMCharacteristicUninitialized: CBMCharacteristic {
| `- note: class 'CBMCharacteristicUninitialized' does not conform to the 'Sendable' protocol
606 | override var debugDescription: String { return "<uninitialized>" }
607 | override var uuid: CBMUUID { uninitialized() }
[21/21] Compiling CoreBluetoothMock CBMCentralManager.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:512:17: warning: let 'uninitializedPeripheral' is not concurrency-safe because non-'Sendable' type 'CBMPeripheralUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
510 | // MARK: - Mocking uninitialized objects
511 |
512 | fileprivate let uninitializedPeripheral = CBMPeripheralUninitialized()
| |- warning: let 'uninitializedPeripheral' is not concurrency-safe because non-'Sendable' type 'CBMPeripheralUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make let 'uninitializedPeripheral' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
513 | fileprivate let uninitializedService = CBMServiceUninitialized()
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
515 |
516 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
| `- note: class 'CBMPeripheralUninitialized' does not conform to the 'Sendable' protocol
517 | let debugDescription: String = "<uninitialized>"
518 |
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:513:17: warning: let 'uninitializedService' is not concurrency-safe because non-'Sendable' type 'CBMServiceUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
511 |
512 | fileprivate let uninitializedPeripheral = CBMPeripheralUninitialized()
513 | fileprivate let uninitializedService = CBMServiceUninitialized()
| |- warning: let 'uninitializedService' is not concurrency-safe because non-'Sendable' type 'CBMServiceUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make let 'uninitializedService' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
515 |
:
585 | }
586 |
587 | fileprivate class CBMServiceUninitialized: CBMService {
| `- note: class 'CBMServiceUninitialized' does not conform to the 'Sendable' protocol
588 | override var debugDescription: String { return "<uninitialized>" }
589 | override var uuid: CBMUUID { uninitialized() }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:514:17: warning: let 'uninitializedCharacteristic' is not concurrency-safe because non-'Sendable' type 'CBMCharacteristicUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
512 | fileprivate let uninitializedPeripheral = CBMPeripheralUninitialized()
513 | fileprivate let uninitializedService = CBMServiceUninitialized()
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
| |- warning: let 'uninitializedCharacteristic' is not concurrency-safe because non-'Sendable' type 'CBMCharacteristicUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make let 'uninitializedCharacteristic' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
515 |
516 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
:
603 | }
604 |
605 | fileprivate class CBMCharacteristicUninitialized: CBMCharacteristic {
| `- note: class 'CBMCharacteristicUninitialized' does not conform to the 'Sendable' protocol
606 | override var debugDescription: String { return "<uninitialized>" }
607 | override var uuid: CBMUUID { uninitialized() }
Build complete! (20.56s)
Fetching https://github.com/apple/swift-docc-plugin
[1/2171] Fetching swift-docc-plugin
Fetched https://github.com/apple/swift-docc-plugin from cache (1.16s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.4.6 (4.20s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit from cache
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (0.93s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.59s)
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.4.6
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Build complete.
{
"dependencies" : [
{
"identity" : "swift-docc-plugin",
"requirement" : {
"range" : [
{
"lower_bound" : "1.4.5",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-docc-plugin"
}
],
"manifest_display_name" : "CoreBluetoothMock",
"name" : "CoreBluetoothMock",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.14"
},
{
"name" : "ios",
"version" : "12.0"
},
{
"name" : "watchos",
"version" : "4.0"
},
{
"name" : "tvos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "CoreBluetoothMock",
"targets" : [
"CoreBluetoothMock"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"swift_languages_versions" : [
"5"
],
"targets" : [
{
"c99name" : "CoreBluetoothMock",
"module_type" : "SwiftTarget",
"name" : "CoreBluetoothMock",
"path" : "CoreBluetoothMock",
"product_memberships" : [
"CoreBluetoothMock"
],
"sources" : [
"CBMAttributes.swift",
"CBMCentralManager.swift",
"CBMCentralManagerDelegate.swift",
"CBMCentralManagerDelegateProxy.swift",
"CBMCentralManagerFactory.swift",
"CBMCentralManagerMock.swift",
"CBMCentralManagerNative.swift",
"CBMDictionary.swift",
"CBMManagerTypes.swift",
"CBMPeer.swift",
"CBMPeripheral.swift",
"CBMPeripheralDelegate.swift",
"CBMPeripheralDelegateProxy.swift",
"CBMPeripheralPreview.swift",
"CBMPeripheralSpec.swift",
"CBMPeripheralSpecDelegate.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Done.