Build Information
Successful build of CoreBluetoothMock, reference main (f268f0), with Swift 6.1 for macOS (SPM) on 24 Oct 2026 19:43:55 UTC.
Swift 6 data race errors: 30
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
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1487:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1485 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1486 | if let self = self, self.state == .connected {
1487 | characteristic.value = data
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1488 | self.delegate?.peripheral(self,
1489 | didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1495:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1493 | case .failure(let error):
1494 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1495 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1496 | self.delegate?.peripheral(self,
1497 | didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1497:66: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1495 | if let self = self, self.state == .connected {
1496 | self.delegate?.peripheral(self,
1497 | didUpdateValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1498 | error: error)
1499 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1522:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1520 | case .success(let data):
1521 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1522 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1523 | descriptor.value = data
1524 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1523:21: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1521 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1522 | if let self = self, self.state == .connected {
1523 | descriptor.value = data
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1524 | self.delegate?.peripheral(self,
1525 | didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 | internal let identifier: UUID
380 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1531:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1529 | case .failure(let error):
1530 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1531 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1532 | self.delegate?.peripheral(self,
1533 | didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1533:66: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1531 | if let self = self, self.state == .connected {
1532 | self.delegate?.peripheral(self,
1533 | didUpdateValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1534 | error: error)
1535 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 | internal let identifier: UUID
380 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1567:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1565 | let delay = interval * Double(packetsCount)
1566 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1567 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1568 | self.delegate?.peripheral(self,
1569 | didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1569:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1567 | if let self = self, self.state == .connected {
1568 | self.delegate?.peripheral(self,
1569 | didWriteValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1570 | error: nil)
1571 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1575:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1573 | case .failure(let error):
1574 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1575 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1576 | self.delegate?.peripheral(self,
1577 | didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1577:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1575 | if let self = self, self.state == .connected {
1576 | self.delegate?.peripheral(self,
1577 | didWriteValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1578 | error: error)
1579 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1603:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1601 |
1602 | queue.async { [weak self] in
1603 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1604 | // Increase buffer.
1605 | self.mutex.sync {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1636:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1634 | case .success:
1635 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1636 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1637 | self.delegate?.peripheral(self,
1638 | didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1638:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1636 | if let self = self, self.state == .connected {
1637 | self.delegate?.peripheral(self,
1638 | didWriteValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1639 | error: nil)
1640 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 | internal let identifier: UUID
380 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1644:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1642 | case .failure(let error):
1643 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1644 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1645 | self.delegate?.peripheral(self,
1646 | didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1646:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1644 | if let self = self, self.state == .connected {
1645 | self.delegate?.peripheral(self,
1646 | didWriteValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1647 | error: error)
1648 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 | internal let identifier: UUID
380 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1691:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1689 | case .success:
1690 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1691 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1692 | characteristic.isNotifying = enabled
1693 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1692:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1690 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1691 | if let self = self, self.state == .connected {
1692 | characteristic.isNotifying = enabled
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1693 | self.delegate?.peripheral(self,
1694 | didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1696:21: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1694 | didUpdateNotificationStateFor: characteristic,
1695 | error: nil)
1696 | mockCharacteristic.isNotifying = enabled
| `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1697 | delegate.peripheral(self.mock,
1698 | didUpdateNotificationStateFor: mockCharacteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:339:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
337 |
338 | /// Mock implementation of ``CBMCharacteristic``.
339 | open class CBMCharacteristicMock: CBMCharacteristic {
| `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
340 |
341 | open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1697:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1695 | error: nil)
1696 | mockCharacteristic.isNotifying = enabled
1697 | delegate.peripheral(self.mock,
| `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1698 | didUpdateNotificationStateFor: mockCharacteristic,
1699 | error: nil)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/PeripheralPeer/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/Central/CBMCentralManagerMock.swift:1704:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1702 | case .failure(let error):
1703 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1704 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1705 | self.delegate?.peripheral(self,
1706 | didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1706:78: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1704 | if let self = self, self.state == .connected {
1705 | self.delegate?.peripheral(self,
1706 | didUpdateNotificationStateFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1707 | error: error)
1708 | delegate.peripheral(self.mock,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1708:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1706 | didUpdateNotificationStateFor: characteristic,
1707 | error: error)
1708 | delegate.peripheral(self.mock,
| `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1709 | didUpdateNotificationStateFor: mockCharacteristic,
1710 | error: error)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/PeripheralPeer/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/Central/CBMCentralManagerMock.swift:1709:72: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1707 | error: error)
1708 | delegate.peripheral(self.mock,
1709 | didUpdateNotificationStateFor: mockCharacteristic,
| `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1710 | error: error)
1711 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:339:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
337 |
338 | /// Mock implementation of ``CBMCharacteristic``.
339 | open class CBMCharacteristicMock: CBMCharacteristic {
| `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
340 |
341 | open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1722:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1720 | guard manager.ensurePoweredOn() else { return }
1721 | queue.async { [weak self] in
1722 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1723 | let rssi = self.mock.proximity.RSSI
1724 | let delta = CBMCentralManagerMock.rssiDeviation.value
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1742:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1740 | NSLog("[CoreBluetoothMock] L2CAP channels are not implemented in the mock. Opening channel with PSM \(PSM) failed.")
1741 | queue.async { [weak self] in
1742 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1743 | self.delegate?.peripheral(self, didOpen: nil, error: CBMError(.operationNotSupported))
1744 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:160:45: warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
158 | // The advertisement could have been stopped, or replaced, in the meantime.
159 | let isCurrent = mutex.sync { () -> Bool in
160 | guard pendingAdvertisements[config] == token else {
| |- 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
161 | return false
162 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:176:32: warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
174 | target: self,
175 | selector: #selector(self.schedule(timer:)),
176 | 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
177 | repeats: false)
178 | } else {
[29/33] Compiling CoreBluetoothMock CBMCentralManagerFactory.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/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/Central/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/Central/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/Central/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 | /// Advertisements that were started, but whose timers have not been created yet.
56 | ///
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:60:24: warning: static property 'pendingAdvertisements' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
58 | /// so that a timer that was queued earlier is not created after the advertisement
59 | /// has been stopped. Must be accessed on the ``mutex``.
60 | private static var pendingAdvertisements = CBMDictionary<CBMAdvertisementConfig, UUID>()
| |- warning: static property 'pendingAdvertisements' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'pendingAdvertisements' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'pendingAdvertisements' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 | /// A mutex queue for managing managers.
62 | private static let mutex: DispatchQueue = DispatchQueue(label: "Mutex")
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:66: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
64 | ///
65 | /// As `CBManagerAuthorization` was added in iOS 13, the raw value is kept.
66 | 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
67 | didSet {
68 | notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:78: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
76 | ///
77 | /// Defaults to 15 dBm.
78 | 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
79 |
80 | /// The global state of the Bluetooth adapter on the device.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:84:38: 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
82 | /// The state is shared between ``CBMCentralManagerMock`` and ``CBMPeripheralManagerMock``
83 | /// instances, as both use the same Bluetooth adapter.
84 | internal 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
85 | didSet {
86 | notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:453: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
451 | /// - SeeAlso: ``CBMCentralManagerRestoredStateScanServicesKey``
452 | /// - SeeAlso: ``CBMCentralManagerRestoredStateScanOptionsKey``
453 | 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
454 |
455 | #if !os(macOS)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:108: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 |
:
106 | // ...and notify delegate.
107 | manager.queue.async {
108 | manager.delegate?.centralManagerDidUpdateState(manager)
| `- warning: capture of 'manager' with non-sendable type 'CBMCentralManagerMock' in a '@Sendable' closure
109 | }
110 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:387: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 |
:
385 | }
386 | queue.async { [weak self] in
387 | if let self = self {
| `- warning: capture of 'self' with non-sendable type 'CBMCentralManagerMock?' in a '@Sendable' closure
388 | CBMCentralManagerMock.mutex.sync {
389 | CBMCentralManagerMock.managers.append(WeakRef(self))
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1060:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1058 | if isAlreadyConnected {
1059 | queue.async { [weak self] in
1060 | if let self = self, self.state == .connecting {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1061 | self.state = .connected
1062 | self._canSendWriteWithoutResponse = true
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1065:21: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1063 | self.mock.wasConnected = true
1064 | self.mock.virtualConnections += 1
1065 | 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'
1066 | }
1067 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1080:30: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1078 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1079 | // The connection could have been cancelled, or the request replaced, in the meantime.
1080 | guard let self = self, self.pendingConnectionRequest == requestId else {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1081 | return
1082 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1093:17: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1091 | self.state = .disconnected
1092 | }
1093 | 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'
1094 | }
1095 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1108:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1106 | state = .disconnecting
1107 | queue.async { [weak self] in
1108 | if let self = self, self.state == .disconnecting {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1109 | self.state = .disconnected
1110 | completion()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1110:21: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1108 | if let self = self, self.state == .disconnecting {
1109 | self.state = .disconnected
1110 | 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'
1111 | }
1112 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1126:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1124 | // `tearDownSimulation()` could have been called before this is called.
1125 | // See https://github.com/nordicsemi/IOS-CoreBluetooth-Mock/issues/25
1126 | if let self = self, self.state == .disconnecting,
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1127 | CBMCentralManagerMock.managerState == .poweredOn {
1128 | self.state = .disconnected
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1138:17: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1136 | didDisconnect: nil)
1137 | }
1138 | 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'
1139 | }
1140 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1158:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1156 | }
1157 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1158 | if let self = self, CBMCentralManagerMock.managerState == .poweredOn {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1159 | if isReconnecting {
1160 | self.state = .connecting
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1166:17: warning: capture of 'completion' with non-sendable type '((any Error)?) -> ()' in a '@Sendable' closure
1164 | }
1165 | self._canSendWriteWithoutResponse = false
1166 | 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'
1167 | }
1168 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1179:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1177 | }
1178 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1179 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1180 | self.delegate?.peripheralDidUpdateName(self)
1181 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1202:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1200 | let invalidatedServices = oldServices.filter { !services!.contains($0) }
1201 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1202 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1203 | self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
1204 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1203:68: warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1201 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1202 | if let self = self, self.state == .connected {
1203 | self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
| `- warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1204 | }
1205 | }
/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/Central/CBMCentralManagerMock.swift:1225:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1223 | let value = originalCharacteristic.value
1224 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1225 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1226 | characteristic.value = value
1227 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1226:17: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1224 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1225 | if let self = self, self.state == .connected {
1226 | characteristic.value = value
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1227 | self.delegate?.peripheral(self,
1228 | didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1271:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1269 | let delay = interval * Double(newServices.count)
1270 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1271 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1272 | // The services become available when discovery completes.
1273 | let known = self.services ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1274:33: warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1272 | // The services become available when discovery completes.
1273 | let known = self.services ?? []
1274 | let added = newServices.filter { s in
| `- warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1275 | !known.contains { $0.identifier == s.identifier }
1276 | }
/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/Central/CBMCentralManagerMock.swift:1287:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1285 | case .failure(let error):
1286 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1287 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1288 | self.delegate?.peripheral(self, didDiscoverServices: error)
1289 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1327:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1325 | let delay = interval * Double(newServices.count)
1326 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1327 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1328 | // The services become available when discovery completes.
1329 | let known = service._includedServices ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1329:33: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1327 | if let self = self, self.state == .connected {
1328 | // The services become available when discovery completes.
1329 | let known = service._includedServices ?? []
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1330 | let added = newServices.filter { s in
1331 | !known.contains { $0.identifier == s.identifier }
/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/Central/CBMCentralManagerMock.swift:1330:33: warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1328 | // The services become available when discovery completes.
1329 | let known = service._includedServices ?? []
1330 | let added = newServices.filter { s in
| `- warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1331 | !known.contains { $0.identifier == s.identifier }
1332 | }
/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/Central/CBMCentralManagerMock.swift:1343:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1341 | case .failure(let error):
1342 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1343 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1344 | self.delegate?.peripheral(self,
1345 | didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1345:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1343 | if let self = self, self.state == .connected {
1344 | self.delegate?.peripheral(self,
1345 | didDiscoverIncludedServicesFor: service,
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1346 | error: error)
1347 | }
/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/Central/CBMCentralManagerMock.swift:1386:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1384 | let delay = interval * Double(newCharacteristics.count)
1385 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1386 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1387 | // The characteristics become available when discovery completes.
1388 | let known = service._characteristics ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1388:33: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1386 | if let self = self, self.state == .connected {
1387 | // The characteristics become available when discovery completes.
1388 | let known = service._characteristics ?? []
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1389 | let added = newCharacteristics.filter { c in
1390 | !known.contains { $0.identifier == c.identifier }
/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/Central/CBMCentralManagerMock.swift:1389:33: warning: capture of 'newCharacteristics' with non-sendable type '[CBMCharacteristic]' in a '@Sendable' closure
1387 | // The characteristics become available when discovery completes.
1388 | let known = service._characteristics ?? []
1389 | let added = newCharacteristics.filter { c in
| `- warning: capture of 'newCharacteristics' with non-sendable type '[CBMCharacteristic]' in a '@Sendable' closure
1390 | !known.contains { $0.identifier == c.identifier }
1391 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1402:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1400 | case .failure(let error):
1401 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1402 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1403 | self.delegate?.peripheral(self,
1404 | didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1404:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1402 | if let self = self, self.state == .connected {
1403 | self.delegate?.peripheral(self,
1404 | didDiscoverCharacteristicsFor: service,
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1405 | error: error)
1406 | }
/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/Central/CBMCentralManagerMock.swift:1441:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1439 | let delay = interval * Double(newDescriptors.count)
1440 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1441 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1442 | // The descriptors become available when discovery completes.
1443 | let known = characteristic._descriptors ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1443:33: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1441 | if let self = self, self.state == .connected {
1442 | // The descriptors become available when discovery completes.
1443 | let known = characteristic._descriptors ?? []
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1444 | let added = newDescriptors.filter { d in
1445 | !known.contains { $0.identifier == d.identifier }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1444:33: warning: capture of 'newDescriptors' with non-sendable type '[CBMDescriptor]' in a '@Sendable' closure
1442 | // The descriptors become available when discovery completes.
1443 | let known = characteristic._descriptors ?? []
1444 | let added = newDescriptors.filter { d in
| `- warning: capture of 'newDescriptors' with non-sendable type '[CBMDescriptor]' in a '@Sendable' closure
1445 | !known.contains { $0.identifier == d.identifier }
1446 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 | internal let identifier: UUID
380 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1457:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1455 | case .failure(let error):
1456 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1457 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1458 | self.delegate?.peripheral(self,
1459 | didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1459:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1457 | if let self = self, self.state == .connected {
1458 | self.delegate?.peripheral(self,
1459 | didDiscoverDescriptorsFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1460 | error: error)
1461 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1486:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1484 | case .success(let data):
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 | characteristic.value = data
1488 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1487:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1485 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1486 | if let self = self, self.state == .connected {
1487 | characteristic.value = data
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1488 | self.delegate?.peripheral(self,
1489 | didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1495:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1493 | case .failure(let error):
1494 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1495 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1496 | self.delegate?.peripheral(self,
1497 | didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1497:66: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1495 | if let self = self, self.state == .connected {
1496 | self.delegate?.peripheral(self,
1497 | didUpdateValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1498 | error: error)
1499 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1522:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1520 | case .success(let data):
1521 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1522 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1523 | descriptor.value = data
1524 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1523:21: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1521 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1522 | if let self = self, self.state == .connected {
1523 | descriptor.value = data
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1524 | self.delegate?.peripheral(self,
1525 | didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 | internal let identifier: UUID
380 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1531:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1529 | case .failure(let error):
1530 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1531 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1532 | self.delegate?.peripheral(self,
1533 | didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1533:66: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1531 | if let self = self, self.state == .connected {
1532 | self.delegate?.peripheral(self,
1533 | didUpdateValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1534 | error: error)
1535 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 | internal let identifier: UUID
380 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1567:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1565 | let delay = interval * Double(packetsCount)
1566 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1567 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1568 | self.delegate?.peripheral(self,
1569 | didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1569:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1567 | if let self = self, self.state == .connected {
1568 | self.delegate?.peripheral(self,
1569 | didWriteValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1570 | error: nil)
1571 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1575:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1573 | case .failure(let error):
1574 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1575 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1576 | self.delegate?.peripheral(self,
1577 | didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1577:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1575 | if let self = self, self.state == .connected {
1576 | self.delegate?.peripheral(self,
1577 | didWriteValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1578 | error: error)
1579 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1603:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1601 |
1602 | queue.async { [weak self] in
1603 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1604 | // Increase buffer.
1605 | self.mutex.sync {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1636:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1634 | case .success:
1635 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1636 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1637 | self.delegate?.peripheral(self,
1638 | didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1638:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1636 | if let self = self, self.state == .connected {
1637 | self.delegate?.peripheral(self,
1638 | didWriteValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1639 | error: nil)
1640 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 | internal let identifier: UUID
380 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1644:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1642 | case .failure(let error):
1643 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1644 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1645 | self.delegate?.peripheral(self,
1646 | didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1646:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1644 | if let self = self, self.state == .connected {
1645 | self.delegate?.peripheral(self,
1646 | didWriteValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1647 | error: error)
1648 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 | internal let identifier: UUID
380 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1691:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1689 | case .success:
1690 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1691 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1692 | characteristic.isNotifying = enabled
1693 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1692:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1690 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1691 | if let self = self, self.state == .connected {
1692 | characteristic.isNotifying = enabled
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1693 | self.delegate?.peripheral(self,
1694 | didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1696:21: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1694 | didUpdateNotificationStateFor: characteristic,
1695 | error: nil)
1696 | mockCharacteristic.isNotifying = enabled
| `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1697 | delegate.peripheral(self.mock,
1698 | didUpdateNotificationStateFor: mockCharacteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:339:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
337 |
338 | /// Mock implementation of ``CBMCharacteristic``.
339 | open class CBMCharacteristicMock: CBMCharacteristic {
| `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
340 |
341 | open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1697:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1695 | error: nil)
1696 | mockCharacteristic.isNotifying = enabled
1697 | delegate.peripheral(self.mock,
| `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1698 | didUpdateNotificationStateFor: mockCharacteristic,
1699 | error: nil)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/PeripheralPeer/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/Central/CBMCentralManagerMock.swift:1704:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1702 | case .failure(let error):
1703 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1704 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1705 | self.delegate?.peripheral(self,
1706 | didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1706:78: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1704 | if let self = self, self.state == .connected {
1705 | self.delegate?.peripheral(self,
1706 | didUpdateNotificationStateFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1707 | error: error)
1708 | delegate.peripheral(self.mock,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1708:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1706 | didUpdateNotificationStateFor: characteristic,
1707 | error: error)
1708 | delegate.peripheral(self.mock,
| `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1709 | didUpdateNotificationStateFor: mockCharacteristic,
1710 | error: error)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/PeripheralPeer/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/Central/CBMCentralManagerMock.swift:1709:72: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1707 | error: error)
1708 | delegate.peripheral(self.mock,
1709 | didUpdateNotificationStateFor: mockCharacteristic,
| `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1710 | error: error)
1711 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:339:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
337 |
338 | /// Mock implementation of ``CBMCharacteristic``.
339 | open class CBMCharacteristicMock: CBMCharacteristic {
| `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
340 |
341 | open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1722:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1720 | guard manager.ensurePoweredOn() else { return }
1721 | queue.async { [weak self] in
1722 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1723 | let rssi = self.mock.proximity.RSSI
1724 | let delta = CBMCentralManagerMock.rssiDeviation.value
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1742:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1740 | NSLog("[CoreBluetoothMock] L2CAP channels are not implemented in the mock. Opening channel with PSM \(PSM) failed.")
1741 | queue.async { [weak self] in
1742 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1743 | self.delegate?.peripheral(self, didOpen: nil, error: CBMError(.operationNotSupported))
1744 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:160:45: warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
158 | // The advertisement could have been stopped, or replaced, in the meantime.
159 | let isCurrent = mutex.sync { () -> Bool in
160 | guard pendingAdvertisements[config] == token else {
| |- 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
161 | return false
162 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:176:32: warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
174 | target: self,
175 | selector: #selector(self.schedule(timer:)),
176 | 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
177 | repeats: false)
178 | } else {
[30/33] Compiling CoreBluetoothMock CBMCentralManagerMock.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/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/Central/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/Central/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/Central/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 | /// Advertisements that were started, but whose timers have not been created yet.
56 | ///
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:60:24: warning: static property 'pendingAdvertisements' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
58 | /// so that a timer that was queued earlier is not created after the advertisement
59 | /// has been stopped. Must be accessed on the ``mutex``.
60 | private static var pendingAdvertisements = CBMDictionary<CBMAdvertisementConfig, UUID>()
| |- warning: static property 'pendingAdvertisements' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'pendingAdvertisements' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'pendingAdvertisements' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 | /// A mutex queue for managing managers.
62 | private static let mutex: DispatchQueue = DispatchQueue(label: "Mutex")
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:66: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
64 | ///
65 | /// As `CBManagerAuthorization` was added in iOS 13, the raw value is kept.
66 | 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
67 | didSet {
68 | notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:78: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
76 | ///
77 | /// Defaults to 15 dBm.
78 | 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
79 |
80 | /// The global state of the Bluetooth adapter on the device.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:84:38: 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
82 | /// The state is shared between ``CBMCentralManagerMock`` and ``CBMPeripheralManagerMock``
83 | /// instances, as both use the same Bluetooth adapter.
84 | internal 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
85 | didSet {
86 | notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:453: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
451 | /// - SeeAlso: ``CBMCentralManagerRestoredStateScanServicesKey``
452 | /// - SeeAlso: ``CBMCentralManagerRestoredStateScanOptionsKey``
453 | 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
454 |
455 | #if !os(macOS)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:108: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 |
:
106 | // ...and notify delegate.
107 | manager.queue.async {
108 | manager.delegate?.centralManagerDidUpdateState(manager)
| `- warning: capture of 'manager' with non-sendable type 'CBMCentralManagerMock' in a '@Sendable' closure
109 | }
110 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:387: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 |
:
385 | }
386 | queue.async { [weak self] in
387 | if let self = self {
| `- warning: capture of 'self' with non-sendable type 'CBMCentralManagerMock?' in a '@Sendable' closure
388 | CBMCentralManagerMock.mutex.sync {
389 | CBMCentralManagerMock.managers.append(WeakRef(self))
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1060:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1058 | if isAlreadyConnected {
1059 | queue.async { [weak self] in
1060 | if let self = self, self.state == .connecting {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1061 | self.state = .connected
1062 | self._canSendWriteWithoutResponse = true
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1065:21: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1063 | self.mock.wasConnected = true
1064 | self.mock.virtualConnections += 1
1065 | 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'
1066 | }
1067 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1080:30: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1078 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1079 | // The connection could have been cancelled, or the request replaced, in the meantime.
1080 | guard let self = self, self.pendingConnectionRequest == requestId else {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1081 | return
1082 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1093:17: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1091 | self.state = .disconnected
1092 | }
1093 | 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'
1094 | }
1095 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1108:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1106 | state = .disconnecting
1107 | queue.async { [weak self] in
1108 | if let self = self, self.state == .disconnecting {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1109 | self.state = .disconnected
1110 | completion()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1110:21: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1108 | if let self = self, self.state == .disconnecting {
1109 | self.state = .disconnected
1110 | 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'
1111 | }
1112 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1126:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1124 | // `tearDownSimulation()` could have been called before this is called.
1125 | // See https://github.com/nordicsemi/IOS-CoreBluetooth-Mock/issues/25
1126 | if let self = self, self.state == .disconnecting,
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1127 | CBMCentralManagerMock.managerState == .poweredOn {
1128 | self.state = .disconnected
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1138:17: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1136 | didDisconnect: nil)
1137 | }
1138 | 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'
1139 | }
1140 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1158:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1156 | }
1157 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1158 | if let self = self, CBMCentralManagerMock.managerState == .poweredOn {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1159 | if isReconnecting {
1160 | self.state = .connecting
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1166:17: warning: capture of 'completion' with non-sendable type '((any Error)?) -> ()' in a '@Sendable' closure
1164 | }
1165 | self._canSendWriteWithoutResponse = false
1166 | 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'
1167 | }
1168 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1179:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1177 | }
1178 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1179 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1180 | self.delegate?.peripheralDidUpdateName(self)
1181 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1202:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1200 | let invalidatedServices = oldServices.filter { !services!.contains($0) }
1201 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1202 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1203 | self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
1204 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1203:68: warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1201 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1202 | if let self = self, self.state == .connected {
1203 | self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
| `- warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1204 | }
1205 | }
/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/Central/CBMCentralManagerMock.swift:1225:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1223 | let value = originalCharacteristic.value
1224 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1225 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1226 | characteristic.value = value
1227 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1226:17: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1224 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1225 | if let self = self, self.state == .connected {
1226 | characteristic.value = value
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1227 | self.delegate?.peripheral(self,
1228 | didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1271:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1269 | let delay = interval * Double(newServices.count)
1270 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1271 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1272 | // The services become available when discovery completes.
1273 | let known = self.services ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1274:33: warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1272 | // The services become available when discovery completes.
1273 | let known = self.services ?? []
1274 | let added = newServices.filter { s in
| `- warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1275 | !known.contains { $0.identifier == s.identifier }
1276 | }
/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/Central/CBMCentralManagerMock.swift:1287:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1285 | case .failure(let error):
1286 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1287 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1288 | self.delegate?.peripheral(self, didDiscoverServices: error)
1289 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1327:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1325 | let delay = interval * Double(newServices.count)
1326 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1327 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1328 | // The services become available when discovery completes.
1329 | let known = service._includedServices ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1329:33: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1327 | if let self = self, self.state == .connected {
1328 | // The services become available when discovery completes.
1329 | let known = service._includedServices ?? []
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1330 | let added = newServices.filter { s in
1331 | !known.contains { $0.identifier == s.identifier }
/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/Central/CBMCentralManagerMock.swift:1330:33: warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1328 | // The services become available when discovery completes.
1329 | let known = service._includedServices ?? []
1330 | let added = newServices.filter { s in
| `- warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1331 | !known.contains { $0.identifier == s.identifier }
1332 | }
/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/Central/CBMCentralManagerMock.swift:1343:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1341 | case .failure(let error):
1342 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1343 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1344 | self.delegate?.peripheral(self,
1345 | didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1345:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1343 | if let self = self, self.state == .connected {
1344 | self.delegate?.peripheral(self,
1345 | didDiscoverIncludedServicesFor: service,
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1346 | error: error)
1347 | }
/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/Central/CBMCentralManagerMock.swift:1386:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1384 | let delay = interval * Double(newCharacteristics.count)
1385 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1386 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1387 | // The characteristics become available when discovery completes.
1388 | let known = service._characteristics ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1388:33: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1386 | if let self = self, self.state == .connected {
1387 | // The characteristics become available when discovery completes.
1388 | let known = service._characteristics ?? []
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1389 | let added = newCharacteristics.filter { c in
1390 | !known.contains { $0.identifier == c.identifier }
/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/Central/CBMCentralManagerMock.swift:1389:33: warning: capture of 'newCharacteristics' with non-sendable type '[CBMCharacteristic]' in a '@Sendable' closure
1387 | // The characteristics become available when discovery completes.
1388 | let known = service._characteristics ?? []
1389 | let added = newCharacteristics.filter { c in
| `- warning: capture of 'newCharacteristics' with non-sendable type '[CBMCharacteristic]' in a '@Sendable' closure
1390 | !known.contains { $0.identifier == c.identifier }
1391 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1402:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1400 | case .failure(let error):
1401 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1402 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1403 | self.delegate?.peripheral(self,
1404 | didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1404:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1402 | if let self = self, self.state == .connected {
1403 | self.delegate?.peripheral(self,
1404 | didDiscoverCharacteristicsFor: service,
| `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1405 | error: error)
1406 | }
/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/Central/CBMCentralManagerMock.swift:1441:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1439 | let delay = interval * Double(newDescriptors.count)
1440 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1441 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1442 | // The descriptors become available when discovery completes.
1443 | let known = characteristic._descriptors ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1443:33: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1441 | if let self = self, self.state == .connected {
1442 | // The descriptors become available when discovery completes.
1443 | let known = characteristic._descriptors ?? []
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1444 | let added = newDescriptors.filter { d in
1445 | !known.contains { $0.identifier == d.identifier }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1444:33: warning: capture of 'newDescriptors' with non-sendable type '[CBMDescriptor]' in a '@Sendable' closure
1442 | // The descriptors become available when discovery completes.
1443 | let known = characteristic._descriptors ?? []
1444 | let added = newDescriptors.filter { d in
| `- warning: capture of 'newDescriptors' with non-sendable type '[CBMDescriptor]' in a '@Sendable' closure
1445 | !known.contains { $0.identifier == d.identifier }
1446 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 | internal let identifier: UUID
380 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1457:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1455 | case .failure(let error):
1456 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1457 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1458 | self.delegate?.peripheral(self,
1459 | didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1459:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1457 | if let self = self, self.state == .connected {
1458 | self.delegate?.peripheral(self,
1459 | didDiscoverDescriptorsFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1460 | error: error)
1461 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1486:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1484 | case .success(let data):
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 | characteristic.value = data
1488 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1487:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1485 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1486 | if let self = self, self.state == .connected {
1487 | characteristic.value = data
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1488 | self.delegate?.peripheral(self,
1489 | didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1495:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1493 | case .failure(let error):
1494 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1495 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1496 | self.delegate?.peripheral(self,
1497 | didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1497:66: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1495 | if let self = self, self.state == .connected {
1496 | self.delegate?.peripheral(self,
1497 | didUpdateValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1498 | error: error)
1499 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1522:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1520 | case .success(let data):
1521 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1522 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1523 | descriptor.value = data
1524 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1523:21: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1521 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1522 | if let self = self, self.state == .connected {
1523 | descriptor.value = data
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1524 | self.delegate?.peripheral(self,
1525 | didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 | internal let identifier: UUID
380 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1531:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1529 | case .failure(let error):
1530 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1531 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1532 | self.delegate?.peripheral(self,
1533 | didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1533:66: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1531 | if let self = self, self.state == .connected {
1532 | self.delegate?.peripheral(self,
1533 | didUpdateValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1534 | error: error)
1535 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 | internal let identifier: UUID
380 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1567:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1565 | let delay = interval * Double(packetsCount)
1566 | queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1567 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1568 | self.delegate?.peripheral(self,
1569 | didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1569:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1567 | if let self = self, self.state == .connected {
1568 | self.delegate?.peripheral(self,
1569 | didWriteValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1570 | error: nil)
1571 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1575:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1573 | case .failure(let error):
1574 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1575 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1576 | self.delegate?.peripheral(self,
1577 | didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1577:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1575 | if let self = self, self.state == .connected {
1576 | self.delegate?.peripheral(self,
1577 | didWriteValueFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1578 | error: error)
1579 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1603:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1601 |
1602 | queue.async { [weak self] in
1603 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1604 | // Increase buffer.
1605 | self.mutex.sync {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1636:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1634 | case .success:
1635 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1636 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1637 | self.delegate?.peripheral(self,
1638 | didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1638:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1636 | if let self = self, self.state == .connected {
1637 | self.delegate?.peripheral(self,
1638 | didWriteValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1639 | error: nil)
1640 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 | internal let identifier: UUID
380 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1644:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1642 | case .failure(let error):
1643 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1644 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1645 | self.delegate?.peripheral(self,
1646 | didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1646:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1644 | if let self = self, self.state == .connected {
1645 | self.delegate?.peripheral(self,
1646 | didWriteValueFor: descriptor,
| `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1647 | error: error)
1648 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
| `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 | internal let identifier: UUID
380 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1691:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1689 | case .success:
1690 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1691 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1692 | characteristic.isNotifying = enabled
1693 | self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1692:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1690 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1691 | if let self = self, self.state == .connected {
1692 | characteristic.isNotifying = enabled
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1693 | self.delegate?.peripheral(self,
1694 | didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1696:21: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1694 | didUpdateNotificationStateFor: characteristic,
1695 | error: nil)
1696 | mockCharacteristic.isNotifying = enabled
| `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1697 | delegate.peripheral(self.mock,
1698 | didUpdateNotificationStateFor: mockCharacteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:339:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
337 |
338 | /// Mock implementation of ``CBMCharacteristic``.
339 | open class CBMCharacteristicMock: CBMCharacteristic {
| `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
340 |
341 | open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1697:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1695 | error: nil)
1696 | mockCharacteristic.isNotifying = enabled
1697 | delegate.peripheral(self.mock,
| `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1698 | didUpdateNotificationStateFor: mockCharacteristic,
1699 | error: nil)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/PeripheralPeer/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/Central/CBMCentralManagerMock.swift:1704:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1702 | case .failure(let error):
1703 | queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1704 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1705 | self.delegate?.peripheral(self,
1706 | didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1706:78: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1704 | if let self = self, self.state == .connected {
1705 | self.delegate?.peripheral(self,
1706 | didUpdateNotificationStateFor: characteristic,
| `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1707 | error: error)
1708 | delegate.peripheral(self.mock,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
| `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 | internal let identifier: UUID
238 | private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1708:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1706 | didUpdateNotificationStateFor: characteristic,
1707 | error: error)
1708 | delegate.peripheral(self.mock,
| `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1709 | didUpdateNotificationStateFor: mockCharacteristic,
1710 | error: error)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/PeripheralPeer/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/Central/CBMCentralManagerMock.swift:1709:72: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1707 | error: error)
1708 | delegate.peripheral(self.mock,
1709 | didUpdateNotificationStateFor: mockCharacteristic,
| `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1710 | error: error)
1711 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:339:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
337 |
338 | /// Mock implementation of ``CBMCharacteristic``.
339 | open class CBMCharacteristicMock: CBMCharacteristic {
| `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
340 |
341 | open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1722:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1720 | guard manager.ensurePoweredOn() else { return }
1721 | queue.async { [weak self] in
1722 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1723 | let rssi = self.mock.proximity.RSSI
1724 | let delta = CBMCentralManagerMock.rssiDeviation.value
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1742:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
924 | ///
925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
| `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
927 | /// The parent central manager.
928 | private let manager: CBMCentralManagerMock
:
1740 | NSLog("[CoreBluetoothMock] L2CAP channels are not implemented in the mock. Opening channel with PSM \(PSM) failed.")
1741 | queue.async { [weak self] in
1742 | if let self = self, self.state == .connected {
| `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1743 | self.delegate?.peripheral(self, didOpen: nil, error: CBMError(.operationNotSupported))
1744 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:160:45: warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
158 | // The advertisement could have been stopped, or replaced, in the meantime.
159 | let isCurrent = mutex.sync { () -> Bool in
160 | guard pendingAdvertisements[config] == token else {
| |- 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
161 | return false
162 | }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:176:32: warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
174 | target: self,
175 | selector: #selector(self.schedule(timer:)),
176 | 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
177 | repeats: false)
178 | } else {
[31/33] Compiling CoreBluetoothMock CBMMutableAttributes.swift
[32/33] Compiling CoreBluetoothMock CBMPeer.swift
[33/33] Compiling CoreBluetoothMock CBMPeripheral.swift
Build complete! (21.31s)
Fetching https://github.com/apple/swift-docc-plugin
[1/2345] Fetching swift-docc-plugin
Fetched https://github.com/apple/swift-docc-plugin from cache (1.34s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.5.0 (4.44s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit from cache
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (1.08s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.77s)
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
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.5.0
Build complete.
{
"dependencies" : [
{
"identity" : "swift-docc-plugin",
"requirement" : {
"range" : [
{
"lower_bound" : "1.5.0",
"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" : "9.0"
},
{
"name" : "tvos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "CoreBluetoothMock",
"targets" : [
"CoreBluetoothMock"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"swift_languages_versions" : [
"5"
],
"targets" : [
{
"c99name" : "CoreBluetoothMockTests",
"module_type" : "SwiftTarget",
"name" : "CoreBluetoothMockTests",
"path" : "Tests/CoreBluetoothMockTests",
"sources" : [
"CentralBehaviorTestCase.swift",
"CentralManagerAdvancedBehaviorTest.swift",
"CentralManagerBehaviorTest.swift",
"PeripheralBehaviorTest.swift",
"PeripheralManagerBehaviorTest.swift",
"PeripheralManagerTest.swift"
],
"target_dependencies" : [
"CoreBluetoothMock"
],
"type" : "test"
},
{
"c99name" : "CoreBluetoothMock",
"module_type" : "SwiftTarget",
"name" : "CoreBluetoothMock",
"path" : "CoreBluetoothMock",
"product_memberships" : [
"CoreBluetoothMock"
],
"sources" : [
"CBMAttributes.swift",
"CBMDictionary.swift",
"CBMManagerTypes.swift",
"CBMMutableAttributes.swift",
"CBMPeer.swift",
"CBMPeripheral.swift",
"CBMPeripheralPreview.swift",
"Central/CBMCentralManager.swift",
"Central/CBMCentralManagerDelegate.swift",
"Central/CBMCentralManagerDelegateProxy.swift",
"Central/CBMCentralManagerFactory.swift",
"Central/CBMCentralManagerMock.swift",
"Central/CBMCentralManagerNative.swift",
"Central/CBMPeripheralDelegate.swift",
"Central/CBMPeripheralDelegateProxy.swift",
"Central/PeripheralPeer/CBMPeripheralSpec.swift",
"Central/PeripheralPeer/CBMPeripheralSpecDelegate.swift",
"Peripheral/CBMATTRequest.swift",
"Peripheral/CBMCentral.swift",
"Peripheral/CBMPeripheralManager.swift",
"Peripheral/CBMPeripheralManagerDelegate.swift",
"Peripheral/CBMPeripheralManagerFactory.swift",
"Peripheral/CBMPeripheralManagerMock.swift",
"Peripheral/CBMPeripheralManagerNative.swift",
"Peripheral/CentralPeer/CBMCentralSpec.swift",
"Peripheral/CentralPeer/CBMCentralSpecDelegate.swift",
"Specs/Blinky.swift",
"Specs/UART.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Done.