Build Information
Successful build of SwiftKeys with Swift 6.0 for macOS (SPM).
Swift 6 data race errors: 15
Build Command
env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Build Log
========================================
RunAll
========================================
Builder version: 4.40.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/jordanbaird/SwiftKeys.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/jordanbaird/SwiftKeys
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 577088c Update README.md
Cloned https://github.com/jordanbaird/SwiftKeys.git
Revision (git rev-parse @):
577088c3c4a20f2b11cff3a61b2454044feea2cc
SPI manifest file found: $workDir/.spi.yml
SUCCESS checkout https://github.com/jordanbaird/SwiftKeys.git at main
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.0
Building package at path: $workDir
https://github.com/jordanbaird/SwiftKeys.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-6F35C1178C84523A.txt
[3/14] Compiling SwiftKeys Utilities.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:279:16: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
245 |
246 | /// A wrapper for the unified logging system.
247 | struct Logger {
| `- note: consider making struct 'Logger' conform to the 'Sendable' protocol
248 | /// The logger's corresponding object in the unified logging system.
249 | let log: OSLog
:
277 | extension Logger {
278 | /// The default logger.
279 | static let `default` = Self(log: .default, level: .default)
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'default' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
280 |
281 | /// The logger for error messages.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:282:16: warning: static property 'error' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
245 |
246 | /// A wrapper for the unified logging system.
247 | struct Logger {
| `- note: consider making struct 'Logger' conform to the 'Sendable' protocol
248 | /// The logger's corresponding object in the unified logging system.
249 | let log: OSLog
:
280 |
281 | /// The logger for error messages.
282 | static let error = Self(log: .default, level: .error)
| |- warning: static property 'error' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'error' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
283 |
284 | /// The logger for debug messages.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:285:16: warning: static property 'debug' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
245 |
246 | /// A wrapper for the unified logging system.
247 | struct Logger {
| `- note: consider making struct 'Logger' conform to the 'Sendable' protocol
248 | /// The logger's corresponding object in the unified logging system.
249 | let log: OSLog
:
283 |
284 | /// The logger for debug messages.
285 | static let debug = Self(log: .default, level: .debug)
| |- warning: static property 'debug' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'debug' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
286 |
287 | /// The logger for faults.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:288:16: warning: static property 'fault' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
245 |
246 | /// A wrapper for the unified logging system.
247 | struct Logger {
| `- note: consider making struct 'Logger' conform to the 'Sendable' protocol
248 | /// The logger's corresponding object in the unified logging system.
249 | let log: OSLog
:
286 |
287 | /// The logger for faults.
288 | static let fault = Self(log: .default, level: .fault)
| |- warning: static property 'fault' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'fault' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
289 |
290 | /// The logger for informative messages.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:291:16: warning: static property 'info' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
245 |
246 | /// A wrapper for the unified logging system.
247 | struct Logger {
| `- note: consider making struct 'Logger' conform to the 'Sendable' protocol
248 | /// The logger's corresponding object in the unified logging system.
249 | let log: OSLog
:
289 |
290 | /// The logger for informative messages.
291 | static let info = Self(log: .default, level: .info)
| |- warning: static property 'info' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'info' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
292 | }
293 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:33:42: warning: main actor-isolated property 'bounds' can not be referenced from a non-isolated context; this is an error in the Swift 6 language mode
30 | }
31 |
32 | static func roundedRectBorder(for control: NSSegmentedControl) -> CALayer {
| `- note: add '@MainActor' to make static method 'roundedRectBorder(for:)' part of global actor 'MainActor'
33 | roundedRectBorder(frame: control.bounds, color: .controlColor, lineWidth: 1, cornerRadius: 6)
| `- warning: main actor-isolated property 'bounds' can not be referenced from a non-isolated context; this is an error in the Swift 6 language mode
34 | }
35 |
AppKit.NSView:76:25: note: property declared here
74 | @available(swift, obsoleted: 3, renamed: "rotate(byDegrees:)")
75 | open func rotateByAngle(_ angle: CGFloat)
76 | @MainActor open var bounds: NSRect { get set }
| `- note: property declared here
77 | open var isFlipped: Bool { get }
78 | @available(swift, obsoleted: 3, renamed: "isFlipped")
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:38:31: warning: main actor-isolated property 'bounds' can not be referenced from a non-isolated context; this is an error in the Swift 6 language mode
34 | }
35 |
36 | static func segmentSplitter(for control: NSSegmentedControl, afterSegment segment: Int) -> CALayer {
| `- note: add '@MainActor' to make static method 'segmentSplitter(for:afterSegment:)' part of global actor 'MainActor'
37 | let layer = CAShapeLayer()
38 | layer.frame = control.bounds
| `- warning: main actor-isolated property 'bounds' can not be referenced from a non-isolated context; this is an error in the Swift 6 language mode
39 | layer.lineWidth = 1
40 | if #available(macOS 10.14, *) {
AppKit.NSView:76:25: note: property declared here
74 | @available(swift, obsoleted: 3, renamed: "rotate(byDegrees:)")
75 | open func rotateByAngle(_ angle: CGFloat)
76 | @MainActor open var bounds: NSRect { get set }
| `- note: property declared here
77 | open var isFlipped: Bool { get }
78 | @available(swift, obsoleted: 3, renamed: "isFlipped")
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:48:48: warning: main actor-isolated property 'segmentCount' can not be referenced from a non-isolated context; this is an error in the Swift 6 language mode
34 | }
35 |
36 | static func segmentSplitter(for control: NSSegmentedControl, afterSegment segment: Int) -> CALayer {
| `- note: add '@MainActor' to make static method 'segmentSplitter(for:afterSegment:)' part of global actor 'MainActor'
37 | let layer = CAShapeLayer()
38 | layer.frame = control.bounds
:
46 | let path = CGMutablePath()
47 |
48 | let segment = max(min(segment, control.segmentCount), 0)
| `- warning: main actor-isolated property 'segmentCount' can not be referenced from a non-isolated context; this is an error in the Swift 6 language mode
49 | let xPosition: CGFloat = (0...segment).reduce(into: 0) {
50 | $0 += control.width(forSegment: $1)
AppKit.NSSegmentedControl:2:25: note: property declared here
1 | @MainActor open class NSSegmentedControl : NSControl, NSUserInterfaceCompression {
2 | @MainActor open var segmentCount: Int { get set }
| `- note: property declared here
3 | open var selectedSegment: Int { get set }
4 | open func selectSegment(withTag tag: Int) -> Bool
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:50:27: warning: call to main actor-isolated instance method 'width(forSegment:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
48 | let segment = max(min(segment, control.segmentCount), 0)
49 | let xPosition: CGFloat = (0...segment).reduce(into: 0) {
50 | $0 += control.width(forSegment: $1)
| `- warning: call to main actor-isolated instance method 'width(forSegment:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
51 | }
52 |
AppKit.NSSegmentedControl:8:26: note: calls to instance method 'width(forSegment:)' from outside of its actor context are implicitly asynchronous
6 | open func selectSegmentWithTag(_ tag: Int) -> Bool
7 | open func setWidth(_ width: CGFloat, forSegment segment: Int)
8 | @MainActor open func width(forSegment segment: Int) -> CGFloat
| `- note: calls to instance method 'width(forSegment:)' from outside of its actor context are implicitly asynchronous
9 | @available(swift, obsoleted: 3, renamed: "width(forSegment:)")
10 | open func widthForSegment(_ segment: Int) -> CGFloat
[4/15] Compiling SwiftKeys NSMenuItem+extensions.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:11:24: warning: static property 'keyCommandNameStorage' is not concurrency-safe because non-'Sendable' type 'Storage<KeyCommand.Name>' may have shared mutable state; this is an error in the Swift 6 language mode
9 |
10 | extension NSMenuItem {
11 | private static let keyCommandNameStorage = Storage<KeyCommand.Name>()
| |- warning: static property 'keyCommandNameStorage' is not concurrency-safe because non-'Sendable' type 'Storage<KeyCommand.Name>' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'keyCommandNameStorage' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
12 | private static let keyAndModifierChangeHandlerStorage = Storage<VoidHandler>()
13 | private static let observationStorage = Storage<Set<NSKeyValueObservation>>()
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:349:7: note: generic class 'Storage' does not conform to the 'Sendable' protocol
347 |
348 | /// A type that uses object association to store external values.
349 | class Storage<Value> {
| `- note: generic class 'Storage' does not conform to the 'Sendable' protocol
350 | private let policy: AssociationPolicy
351 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:12:24: warning: static property 'keyAndModifierChangeHandlerStorage' is not concurrency-safe because non-'Sendable' type 'Storage<VoidHandler>' (aka 'Storage<Handler<()>>') may have shared mutable state; this is an error in the Swift 6 language mode
10 | extension NSMenuItem {
11 | private static let keyCommandNameStorage = Storage<KeyCommand.Name>()
12 | private static let keyAndModifierChangeHandlerStorage = Storage<VoidHandler>()
| |- warning: static property 'keyAndModifierChangeHandlerStorage' is not concurrency-safe because non-'Sendable' type 'Storage<VoidHandler>' (aka 'Storage<Handler<()>>') may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'keyAndModifierChangeHandlerStorage' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
13 | private static let observationStorage = Storage<Set<NSKeyValueObservation>>()
14 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:349:7: note: generic class 'Storage' does not conform to the 'Sendable' protocol
347 |
348 | /// A type that uses object association to store external values.
349 | class Storage<Value> {
| `- note: generic class 'Storage' does not conform to the 'Sendable' protocol
350 | private let policy: AssociationPolicy
351 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:13:24: warning: static property 'observationStorage' is not concurrency-safe because non-'Sendable' type 'Storage<Set<NSKeyValueObservation>>' may have shared mutable state; this is an error in the Swift 6 language mode
11 | private static let keyCommandNameStorage = Storage<KeyCommand.Name>()
12 | private static let keyAndModifierChangeHandlerStorage = Storage<VoidHandler>()
13 | private static let observationStorage = Storage<Set<NSKeyValueObservation>>()
| |- warning: static property 'observationStorage' is not concurrency-safe because non-'Sendable' type 'Storage<Set<NSKeyValueObservation>>' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'observationStorage' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 | private var keyAndModifierChangeHandler: VoidHandler? {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:349:7: note: generic class 'Storage' does not conform to the 'Sendable' protocol
347 |
348 | /// A type that uses object association to store external values.
349 | class Storage<Value> {
| `- note: generic class 'Storage' does not conform to the 'Sendable' protocol
350 | private let policy: AssociationPolicy
351 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:62:29: warning: capture of 'self' with non-sendable type 'NSMenuItem?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
60 | observe(\.keyEquivalent, options: [.old, .new]) { [weak self] _, changes in
61 | guard
62 | let self,
| `- warning: capture of 'self' with non-sendable type 'NSMenuItem?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
63 | let oldValue = changes.oldValue,
64 | let newValue = changes.newValue,
Swift.Optional:1:21: note: generic enum 'Optional' does not conform to the 'Sendable' protocol
1 | @frozen public enum Optional<Wrapped> : ~Copyable where Wrapped : ~Copyable {
| `- note: generic enum 'Optional' does not conform to the 'Sendable' protocol
2 | case none
3 | case some(Wrapped)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:76:29: warning: capture of 'self' with non-sendable type 'NSMenuItem?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
74 | observe(\.keyEquivalentModifierMask, options: [.old, .new]) { [weak self] _, changes in
75 | guard
76 | let self,
| `- warning: capture of 'self' with non-sendable type 'NSMenuItem?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
77 | let oldValue = changes.oldValue,
78 | let newValue = changes.newValue,
Swift.Optional:1:21: note: generic enum 'Optional' does not conform to the 'Sendable' protocol
1 | @frozen public enum Optional<Wrapped> : ~Copyable where Wrapped : ~Copyable {
| `- note: generic enum 'Optional' does not conform to the 'Sendable' protocol
2 | case none
3 | case some(Wrapped)
[5/15] Compiling SwiftKeys KeyRecorder.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/Modifier.swift:99:16: warning: static property 'canonicalOrder' is not concurrency-safe because non-'Sendable' type 'Array<KeyCommand.Modifier>' may have shared mutable state; this is an error in the Swift 6 language mode
9 | extension KeyCommand {
10 | /// Constants that represent the modifier keys of a key command.
11 | public enum Modifier {
| `- note: consider making enum 'Modifier' conform to the 'Sendable' protocol
12 | /// The Control key.
13 | case control
:
97 | /// The order that macOS represents its modifier keys, according
98 | /// to the Apple Style Guide.
99 | static let canonicalOrder: Self = {
| |- warning: static property 'canonicalOrder' is not concurrency-safe because non-'Sendable' type 'Array<KeyCommand.Modifier>' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'canonicalOrder' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 | let canonicalOrder: Self = [
101 | .control,
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:412:22: warning: main actor-isolated property 'recordingState' can not be mutated from a Sendable closure; this is an error in the Swift 6 language mode
206 | }
207 |
208 | var recordingState = RecordingState.idle {
| `- note: mutation of this property is only permitted within the actor
209 | didSet {
210 | updateVisualAppearance()
:
410 | }
411 | if !newValue {
412 | self.recordingState = .idle
| `- warning: main actor-isolated property 'recordingState' can not be mutated from a Sendable closure; this is an error in the Swift 6 language mode
413 | self.updateBasedOnNewRecordingState()
414 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:413:22: warning: call to main actor-isolated instance method 'updateBasedOnNewRecordingState()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
411 | if !newValue {
412 | self.recordingState = .idle
413 | self.updateBasedOnNewRecordingState()
| `- warning: call to main actor-isolated instance method 'updateBasedOnNewRecordingState()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
414 | }
415 | }
:
499 | }
500 |
501 | func updateBasedOnNewRecordingState() {
| `- note: calls to instance method 'updateBasedOnNewRecordingState()' from outside of its actor context are implicitly asynchronous
502 | // Note: updateVisualAppearance() will get called as an observation
503 | // handler as soon as the proxy's registration state changes.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:426:22: warning: main actor-isolated property 'recordingState' can not be mutated from a Sendable closure; this is an error in the Swift 6 language mode
206 | }
207 |
208 | var recordingState = RecordingState.idle {
| `- note: mutation of this property is only permitted within the actor
209 | didSet {
210 | updateVisualAppearance()
:
424 | }
425 | if newValue != .current {
426 | self.recordingState = .idle
| `- warning: main actor-isolated property 'recordingState' can not be mutated from a Sendable closure; this is an error in the Swift 6 language mode
427 | self.updateBasedOnNewRecordingState()
428 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:427:22: warning: call to main actor-isolated instance method 'updateBasedOnNewRecordingState()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
425 | if newValue != .current {
426 | self.recordingState = .idle
427 | self.updateBasedOnNewRecordingState()
| `- warning: call to main actor-isolated instance method 'updateBasedOnNewRecordingState()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
428 | }
429 | }
:
499 | }
500 |
501 | func updateBasedOnNewRecordingState() {
| `- note: calls to instance method 'updateBasedOnNewRecordingState()' from outside of its actor context are implicitly asynchronous
502 | // Note: updateVisualAppearance() will get called as an observation
503 | // handler as soon as the proxy's registration state changes.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:579:25: warning: call to main actor-isolated initializer 'init()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
573 | }
574 |
575 | func displayAlert() {
| `- note: add '@MainActor' to make instance method 'displayAlert()' part of global actor 'MainActor'
576 | guard self != .noFailure else {
577 | return
578 | }
579 | let alert = NSAlert()
| `- warning: call to main actor-isolated initializer 'init()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
580 | alert.messageText = messageText
581 | alert.informativeText = infoText
AppKit.NSAlert:33:23: note: calls to initializer 'init()' from outside of its actor context are implicitly asynchronous
31 | open func beginSheetModalForWindow(_ sheetWindow: NSWindow, completionHandler handler: ((NSApplication.ModalResponse) -> Void)? = nil)
32 | open var window: NSWindow { get }
33 | @MainActor public init()
| `- note: calls to initializer 'init()' from outside of its actor context are implicitly asynchronous
34 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:580:19: warning: main actor-isolated property 'messageText' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
573 | }
574 |
575 | func displayAlert() {
| `- note: add '@MainActor' to make instance method 'displayAlert()' part of global actor 'MainActor'
576 | guard self != .noFailure else {
577 | return
578 | }
579 | let alert = NSAlert()
580 | alert.messageText = messageText
| `- warning: main actor-isolated property 'messageText' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
581 | alert.informativeText = infoText
582 | alert.runModal()
AppKit.NSAlert:5:14: note: mutation of this property is only permitted within the actor
3 | @available(*, unavailable, renamed: "init(error:)", message: "Not available in Swift")
4 | open class func alertWithError(_ error: any Error) -> NSAlert
5 | open var messageText: String { get set }
| `- note: mutation of this property is only permitted within the actor
6 | open var informativeText: String { get set }
7 | open var icon: NSImage! { get set }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:581:19: warning: main actor-isolated property 'informativeText' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
573 | }
574 |
575 | func displayAlert() {
| `- note: add '@MainActor' to make instance method 'displayAlert()' part of global actor 'MainActor'
576 | guard self != .noFailure else {
577 | return
:
579 | let alert = NSAlert()
580 | alert.messageText = messageText
581 | alert.informativeText = infoText
| `- warning: main actor-isolated property 'informativeText' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
582 | alert.runModal()
583 | }
AppKit.NSAlert:6:14: note: mutation of this property is only permitted within the actor
4 | open class func alertWithError(_ error: any Error) -> NSAlert
5 | open var messageText: String { get set }
6 | open var informativeText: String { get set }
| `- note: mutation of this property is only permitted within the actor
7 | open var icon: NSImage! { get set }
8 | open func addButton(withTitle title: String) -> NSButton
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:582:19: warning: call to main actor-isolated instance method 'runModal()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
573 | }
574 |
575 | func displayAlert() {
| `- note: add '@MainActor' to make instance method 'displayAlert()' part of global actor 'MainActor'
576 | guard self != .noFailure else {
577 | return
:
580 | alert.messageText = messageText
581 | alert.informativeText = infoText
582 | alert.runModal()
| `- warning: call to main actor-isolated instance method 'runModal()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
583 | }
584 |
AppKit.NSAlert:20:26: note: calls to instance method 'runModal()' from outside of its actor context are implicitly asynchronous
18 | @available(macOS 10.5, *)
19 | open func layout()
20 | @MainActor open func runModal() -> NSApplication.ModalResponse
| `- note: calls to instance method 'runModal()' from outside of its actor context are implicitly asynchronous
21 | @available(macOS 10.5, *)
22 | open var showsSuppressionButton: Bool { get set }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:526:23: warning: cannot access property 'keyDownMonitor' with a non-sendable type 'LocalEventMonitor?' from non-isolated deinit; this is an error in the Swift 6 language mode
524 |
525 | deinit {
526 | keyDownMonitor?.stop()
| `- warning: cannot access property 'keyDownMonitor' with a non-sendable type 'LocalEventMonitor?' from non-isolated deinit; this is an error in the Swift 6 language mode
527 | mouseDownMonitor?.stop()
528 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:74:7: note: class 'LocalEventMonitor' does not conform to the 'Sendable' protocol
72 | // MARK: - LocalEventMonitor
73 |
74 | class LocalEventMonitor {
| `- note: class 'LocalEventMonitor' does not conform to the 'Sendable' protocol
75 | private let mask: NSEvent.EventTypeMask
76 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:527:25: warning: cannot access property 'mouseDownMonitor' with a non-sendable type 'LocalEventMonitor?' from non-isolated deinit; this is an error in the Swift 6 language mode
525 | deinit {
526 | keyDownMonitor?.stop()
527 | mouseDownMonitor?.stop()
| `- warning: cannot access property 'mouseDownMonitor' with a non-sendable type 'LocalEventMonitor?' from non-isolated deinit; this is an error in the Swift 6 language mode
528 | }
529 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:74:7: note: class 'LocalEventMonitor' does not conform to the 'Sendable' protocol
72 | // MARK: - LocalEventMonitor
73 |
74 | class LocalEventMonitor {
| `- note: class 'LocalEventMonitor' does not conform to the 'Sendable' protocol
75 | private let mask: NSEvent.EventTypeMask
76 |
[6/15] Compiling SwiftKeys Name.swift
[7/15] Compiling SwiftKeys KeyCommandProxy.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:12:24: warning: static property 'eventHandlerRef' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
10 | // MARK: Static Properties
11 |
12 | private static var eventHandlerRef: EventHandlerRef?
| |- warning: static property 'eventHandlerRef' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'eventHandlerRef' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'eventHandlerRef' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
13 |
14 | private static let eventTypes = [
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:25:24: warning: static property 'proxyCount' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
23 | ]
24 |
25 | private static var proxyCount: UInt32 = 0
| |- warning: static property 'proxyCount' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'proxyCount' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'proxyCount' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
26 |
27 | private static let signature: OSType = NSHFSTypeCodeFromFileType("'SWKE'")
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:346:24: warning: static property 'all' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
344 |
345 | extension ProxyStorage {
346 | private static var all = Self()
| |- warning: static property 'all' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'all' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'all' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
347 |
348 | static func proxy(with identifier: EventHotKeyID) -> KeyCommandProxy? {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/Modifier.swift:99:16: warning: static property 'canonicalOrder' is not concurrency-safe because non-'Sendable' type 'Array<KeyCommand.Modifier>' may have shared mutable state; this is an error in the Swift 6 language mode
9 | extension KeyCommand {
10 | /// Constants that represent the modifier keys of a key command.
11 | public enum Modifier {
| `- note: consider making enum 'Modifier' conform to the 'Sendable' protocol
12 | /// The Control key.
13 | case control
:
97 | /// The order that macOS represents its modifier keys, according
98 | /// to the Apple Style Guide.
99 | static let canonicalOrder: Self = {
| |- warning: static property 'canonicalOrder' is not concurrency-safe because non-'Sendable' type 'Array<KeyCommand.Modifier>' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'canonicalOrder' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 | let canonicalOrder: Self = [
101 | .control,
[8/15] Compiling SwiftKeys Modifier.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:12:24: warning: static property 'eventHandlerRef' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
10 | // MARK: Static Properties
11 |
12 | private static var eventHandlerRef: EventHandlerRef?
| |- warning: static property 'eventHandlerRef' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'eventHandlerRef' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'eventHandlerRef' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
13 |
14 | private static let eventTypes = [
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:25:24: warning: static property 'proxyCount' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
23 | ]
24 |
25 | private static var proxyCount: UInt32 = 0
| |- warning: static property 'proxyCount' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'proxyCount' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'proxyCount' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
26 |
27 | private static let signature: OSType = NSHFSTypeCodeFromFileType("'SWKE'")
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:346:24: warning: static property 'all' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
344 |
345 | extension ProxyStorage {
346 | private static var all = Self()
| |- warning: static property 'all' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'all' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'all' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
347 |
348 | static func proxy(with identifier: EventHotKeyID) -> KeyCommandProxy? {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/Modifier.swift:99:16: warning: static property 'canonicalOrder' is not concurrency-safe because non-'Sendable' type 'Array<KeyCommand.Modifier>' may have shared mutable state; this is an error in the Swift 6 language mode
9 | extension KeyCommand {
10 | /// Constants that represent the modifier keys of a key command.
11 | public enum Modifier {
| `- note: consider making enum 'Modifier' conform to the 'Sendable' protocol
12 | /// The Control key.
13 | case control
:
97 | /// The order that macOS represents its modifier keys, according
98 | /// to the Apple Style Guide.
99 | static let canonicalOrder: Self = {
| |- warning: static property 'canonicalOrder' is not concurrency-safe because non-'Sendable' type 'Array<KeyCommand.Modifier>' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'canonicalOrder' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 | let canonicalOrder: Self = [
101 | .control,
[9/15] Compiling SwiftKeys BezelStyle.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:35:27: warning: static property 'flatBordered' is not concurrency-safe because non-'Sendable' type 'KeyRecorder.BezelStyle' may have shared mutable state; this is an error in the Swift 6 language mode
11 | /// A type that represents the visual style used to display a ``KeyRecorder``'s
12 | /// bezel.
13 | public enum BezelStyle: CaseIterable, Hashable {
| `- note: consider making enum 'BezelStyle' conform to the 'Sendable' protocol
14 | /// The key recorder is displayed with a rounded rectangular bezel.
15 | case rounded
:
33 | /// border.
34 | @available(*, deprecated, renamed: "capsule")
35 | public static let flatBordered: Self = .capsule
| |- warning: static property 'flatBordered' is not concurrency-safe because non-'Sendable' type 'KeyRecorder.BezelStyle' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'flatBordered' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 | }
37 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:68:17: warning: main actor-isolated property 'segmentStyle' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 | func apply(to control: KeyRecorderSegmentedControl) {
| `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 | control.segmentStyle = cocoaValue
| `- warning: main actor-isolated property 'segmentStyle' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
69 | switch self {
70 | case .flat:
AppKit.NSSegmentedControl:60:25: note: mutation of this property is only permitted within the actor
58 | open func showsMenuIndicatorForSegment(_ segment: Int) -> Bool
59 | @available(macOS 10.5, *)
60 | @MainActor open var segmentStyle: NSSegmentedControl.Style { get set }
| `- note: mutation of this property is only permitted within the actor
61 | @available(macOS 10.10.3, *)
62 | open var isSpringLoaded: Bool { get set }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:71:27: warning: main actor-isolated property 'isBezeled' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 | func apply(to control: KeyRecorderSegmentedControl) {
| `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 | control.segmentStyle = cocoaValue
69 | switch self {
70 | case .flat:
71 | control.cell?.isBezeled = false
| `- warning: main actor-isolated property 'isBezeled' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
72 | control.borderLayer = .roundedRectBorder(for: control)
73 | control.splitterLayer = .segmentSplitter(for: control, afterSegment: 0)
AppKit.NSCell:35:25: note: mutation of this property is only permitted within the actor
33 | @available(swift, obsoleted: 3, renamed: "isBordered")
34 | open var bordered: Bool { get set }
35 | @MainActor open var isBezeled: Bool { get set }
| `- note: mutation of this property is only permitted within the actor
36 | @available(swift, obsoleted: 3, renamed: "isBezeled")
37 | open var bezeled: Bool { get set }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:71:21: warning: main actor-isolated property 'cell' can not be referenced from a non-isolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 | func apply(to control: KeyRecorderSegmentedControl) {
| `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 | control.segmentStyle = cocoaValue
69 | switch self {
70 | case .flat:
71 | control.cell?.isBezeled = false
| `- warning: main actor-isolated property 'cell' can not be referenced from a non-isolated context; this is an error in the Swift 6 language mode
72 | control.borderLayer = .roundedRectBorder(for: control)
73 | control.splitterLayer = .segmentSplitter(for: control, afterSegment: 0)
AppKit.NSControl:5:25: note: property declared here
3 | open func setFloatingPointFormat(_ autoRange: Bool, left leftDigits: Int, right rightDigits: Int)
4 | open class var cellClass: AnyClass? { get set }
5 | @MainActor open var cell: NSCell? { get set }
| `- note: property declared here
6 | open func selectedCell() -> NSCell?
7 | open func selectedTag() -> Int
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:72:21: warning: main actor-isolated property 'borderLayer' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 | func apply(to control: KeyRecorderSegmentedControl) {
| `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 | control.segmentStyle = cocoaValue
69 | switch self {
70 | case .flat:
71 | control.cell?.isBezeled = false
72 | control.borderLayer = .roundedRectBorder(for: control)
| `- warning: main actor-isolated property 'borderLayer' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
73 | control.splitterLayer = .segmentSplitter(for: control, afterSegment: 0)
74 | default:
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:226:9: note: mutation of this property is only permitted within the actor
224 | }
225 |
226 | var borderLayer: CALayer? {
| `- note: mutation of this property is only permitted within the actor
227 | didSet {
228 | if let borderLayer {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:73:21: warning: main actor-isolated property 'splitterLayer' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 | func apply(to control: KeyRecorderSegmentedControl) {
| `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 | control.segmentStyle = cocoaValue
69 | switch self {
:
71 | control.cell?.isBezeled = false
72 | control.borderLayer = .roundedRectBorder(for: control)
73 | control.splitterLayer = .segmentSplitter(for: control, afterSegment: 0)
| `- warning: main actor-isolated property 'splitterLayer' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
74 | default:
75 | control.cell?.isBezeled = true
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:237:9: note: mutation of this property is only permitted within the actor
235 | }
236 |
237 | var splitterLayer: CALayer? {
| `- note: mutation of this property is only permitted within the actor
238 | didSet {
239 | if let splitterLayer {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:75:27: warning: main actor-isolated property 'isBezeled' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 | func apply(to control: KeyRecorderSegmentedControl) {
| `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 | control.segmentStyle = cocoaValue
69 | switch self {
:
73 | control.splitterLayer = .segmentSplitter(for: control, afterSegment: 0)
74 | default:
75 | control.cell?.isBezeled = true
| `- warning: main actor-isolated property 'isBezeled' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
76 | control.borderLayer = nil
77 | control.splitterLayer = nil
AppKit.NSCell:35:25: note: mutation of this property is only permitted within the actor
33 | @available(swift, obsoleted: 3, renamed: "isBordered")
34 | open var bordered: Bool { get set }
35 | @MainActor open var isBezeled: Bool { get set }
| `- note: mutation of this property is only permitted within the actor
36 | @available(swift, obsoleted: 3, renamed: "isBezeled")
37 | open var bezeled: Bool { get set }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:75:21: warning: main actor-isolated property 'cell' can not be referenced from a non-isolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 | func apply(to control: KeyRecorderSegmentedControl) {
| `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 | control.segmentStyle = cocoaValue
69 | switch self {
:
73 | control.splitterLayer = .segmentSplitter(for: control, afterSegment: 0)
74 | default:
75 | control.cell?.isBezeled = true
| `- warning: main actor-isolated property 'cell' can not be referenced from a non-isolated context; this is an error in the Swift 6 language mode
76 | control.borderLayer = nil
77 | control.splitterLayer = nil
AppKit.NSControl:5:25: note: property declared here
3 | open func setFloatingPointFormat(_ autoRange: Bool, left leftDigits: Int, right rightDigits: Int)
4 | open class var cellClass: AnyClass? { get set }
5 | @MainActor open var cell: NSCell? { get set }
| `- note: property declared here
6 | open func selectedCell() -> NSCell?
7 | open func selectedTag() -> Int
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:76:21: warning: main actor-isolated property 'borderLayer' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 | func apply(to control: KeyRecorderSegmentedControl) {
| `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 | control.segmentStyle = cocoaValue
69 | switch self {
:
74 | default:
75 | control.cell?.isBezeled = true
76 | control.borderLayer = nil
| `- warning: main actor-isolated property 'borderLayer' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
77 | control.splitterLayer = nil
78 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:226:9: note: mutation of this property is only permitted within the actor
224 | }
225 |
226 | var borderLayer: CALayer? {
| `- note: mutation of this property is only permitted within the actor
227 | didSet {
228 | if let borderLayer {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:77:21: warning: main actor-isolated property 'splitterLayer' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
65 | // MARK: BezelStyle Methods
66 | extension KeyRecorder.BezelStyle {
67 | func apply(to control: KeyRecorderSegmentedControl) {
| `- note: add '@MainActor' to make instance method 'apply(to:)' part of global actor 'MainActor'
68 | control.segmentStyle = cocoaValue
69 | switch self {
:
75 | control.cell?.isBezeled = true
76 | control.borderLayer = nil
77 | control.splitterLayer = nil
| `- warning: main actor-isolated property 'splitterLayer' can not be mutated from a non-isolated context; this is an error in the Swift 6 language mode
78 | }
79 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:237:9: note: mutation of this property is only permitted within the actor
235 | }
236 |
237 | var splitterLayer: CALayer? {
| `- note: mutation of this property is only permitted within the actor
238 | didSet {
239 | if let splitterLayer {
[10/15] Emitting module SwiftKeys
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/Key.swift:251:24: warning: static property 'customStringMapping' is not concurrency-safe because non-'Sendable' type '[KeyCommand.Key : String]' may have shared mutable state; this is an error in the Swift 6 language mode
8 | extension KeyCommand {
9 | /// Constants that represent the various keys available on a keyboard.
10 | public enum Key {
| `- note: consider making enum 'Key' conform to the 'Sendable' protocol
11 |
12 | // MARK: ANSI
:
249 | /// Maps custom string representations to keys that can't be
250 | /// represented by a key equivalent.
251 | private static let customStringMapping: [KeyCommand.Key: String] = [
| |- warning: static property 'customStringMapping' is not concurrency-safe because non-'Sendable' type '[KeyCommand.Key : String]' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'customStringMapping' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
252 | .space: "Space", // matches macOS representation
253 | .tab: "⇥",
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:12:24: warning: static property 'eventHandlerRef' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
10 | // MARK: Static Properties
11 |
12 | private static var eventHandlerRef: EventHandlerRef?
| |- warning: static property 'eventHandlerRef' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'eventHandlerRef' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'eventHandlerRef' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
13 |
14 | private static let eventTypes = [
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:25:24: warning: static property 'proxyCount' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
23 | ]
24 |
25 | private static var proxyCount: UInt32 = 0
| |- warning: static property 'proxyCount' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'proxyCount' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'proxyCount' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
26 |
27 | private static let signature: OSType = NSHFSTypeCodeFromFileType("'SWKE'")
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/KeyCommandProxy.swift:346:24: warning: static property 'all' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
344 |
345 | extension ProxyStorage {
346 | private static var all = Self()
| |- warning: static property 'all' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'all' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'all' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
347 |
348 | static func proxy(with identifier: EventHotKeyID) -> KeyCommandProxy? {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/Modifier.swift:99:16: warning: static property 'canonicalOrder' is not concurrency-safe because non-'Sendable' type 'Array<KeyCommand.Modifier>' may have shared mutable state; this is an error in the Swift 6 language mode
9 | extension KeyCommand {
10 | /// Constants that represent the modifier keys of a key command.
11 | public enum Modifier {
| `- note: consider making enum 'Modifier' conform to the 'Sendable' protocol
12 | /// The Control key.
13 | case control
:
97 | /// The order that macOS represents its modifier keys, according
98 | /// to the Apple Style Guide.
99 | static let canonicalOrder: Self = {
| |- warning: static property 'canonicalOrder' is not concurrency-safe because non-'Sendable' type 'Array<KeyCommand.Modifier>' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'canonicalOrder' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 | let canonicalOrder: Self = [
101 | .control,
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/BezelStyle.swift:35:27: warning: static property 'flatBordered' is not concurrency-safe because non-'Sendable' type 'KeyRecorder.BezelStyle' may have shared mutable state; this is an error in the Swift 6 language mode
11 | /// A type that represents the visual style used to display a ``KeyRecorder``'s
12 | /// bezel.
13 | public enum BezelStyle: CaseIterable, Hashable {
| `- note: consider making enum 'BezelStyle' conform to the 'Sendable' protocol
14 | /// The key recorder is displayed with a rounded rectangular bezel.
15 | case rounded
:
33 | /// border.
34 | @available(*, deprecated, renamed: "capsule")
35 | public static let flatBordered: Self = .capsule
| |- warning: static property 'flatBordered' is not concurrency-safe because non-'Sendable' type 'KeyRecorder.BezelStyle' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'flatBordered' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 | }
37 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:11:24: warning: static property 'keyCommandNameStorage' is not concurrency-safe because non-'Sendable' type 'Storage<KeyCommand.Name>' may have shared mutable state; this is an error in the Swift 6 language mode
9 |
10 | extension NSMenuItem {
11 | private static let keyCommandNameStorage = Storage<KeyCommand.Name>()
| |- warning: static property 'keyCommandNameStorage' is not concurrency-safe because non-'Sendable' type 'Storage<KeyCommand.Name>' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'keyCommandNameStorage' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
12 | private static let keyAndModifierChangeHandlerStorage = Storage<VoidHandler>()
13 | private static let observationStorage = Storage<Set<NSKeyValueObservation>>()
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:349:7: note: generic class 'Storage' does not conform to the 'Sendable' protocol
347 |
348 | /// A type that uses object association to store external values.
349 | class Storage<Value> {
| `- note: generic class 'Storage' does not conform to the 'Sendable' protocol
350 | private let policy: AssociationPolicy
351 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:12:24: warning: static property 'keyAndModifierChangeHandlerStorage' is not concurrency-safe because non-'Sendable' type 'Storage<VoidHandler>' (aka 'Storage<Handler<()>>') may have shared mutable state; this is an error in the Swift 6 language mode
10 | extension NSMenuItem {
11 | private static let keyCommandNameStorage = Storage<KeyCommand.Name>()
12 | private static let keyAndModifierChangeHandlerStorage = Storage<VoidHandler>()
| |- warning: static property 'keyAndModifierChangeHandlerStorage' is not concurrency-safe because non-'Sendable' type 'Storage<VoidHandler>' (aka 'Storage<Handler<()>>') may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'keyAndModifierChangeHandlerStorage' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
13 | private static let observationStorage = Storage<Set<NSKeyValueObservation>>()
14 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:349:7: note: generic class 'Storage' does not conform to the 'Sendable' protocol
347 |
348 | /// A type that uses object association to store external values.
349 | class Storage<Value> {
| `- note: generic class 'Storage' does not conform to the 'Sendable' protocol
350 | private let policy: AssociationPolicy
351 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/NSMenuItem+extensions.swift:13:24: warning: static property 'observationStorage' is not concurrency-safe because non-'Sendable' type 'Storage<Set<NSKeyValueObservation>>' may have shared mutable state; this is an error in the Swift 6 language mode
11 | private static let keyCommandNameStorage = Storage<KeyCommand.Name>()
12 | private static let keyAndModifierChangeHandlerStorage = Storage<VoidHandler>()
13 | private static let observationStorage = Storage<Set<NSKeyValueObservation>>()
| |- warning: static property 'observationStorage' is not concurrency-safe because non-'Sendable' type 'Storage<Set<NSKeyValueObservation>>' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'observationStorage' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 | private var keyAndModifierChangeHandler: VoidHandler? {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:349:7: note: generic class 'Storage' does not conform to the 'Sendable' protocol
347 |
348 | /// A type that uses object association to store external values.
349 | class Storage<Value> {
| `- note: generic class 'Storage' does not conform to the 'Sendable' protocol
350 | private let policy: AssociationPolicy
351 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:279:16: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
245 |
246 | /// A wrapper for the unified logging system.
247 | struct Logger {
| `- note: consider making struct 'Logger' conform to the 'Sendable' protocol
248 | /// The logger's corresponding object in the unified logging system.
249 | let log: OSLog
:
277 | extension Logger {
278 | /// The default logger.
279 | static let `default` = Self(log: .default, level: .default)
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'default' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
280 |
281 | /// The logger for error messages.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:282:16: warning: static property 'error' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
245 |
246 | /// A wrapper for the unified logging system.
247 | struct Logger {
| `- note: consider making struct 'Logger' conform to the 'Sendable' protocol
248 | /// The logger's corresponding object in the unified logging system.
249 | let log: OSLog
:
280 |
281 | /// The logger for error messages.
282 | static let error = Self(log: .default, level: .error)
| |- warning: static property 'error' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'error' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
283 |
284 | /// The logger for debug messages.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:285:16: warning: static property 'debug' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
245 |
246 | /// A wrapper for the unified logging system.
247 | struct Logger {
| `- note: consider making struct 'Logger' conform to the 'Sendable' protocol
248 | /// The logger's corresponding object in the unified logging system.
249 | let log: OSLog
:
283 |
284 | /// The logger for debug messages.
285 | static let debug = Self(log: .default, level: .debug)
| |- warning: static property 'debug' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'debug' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
286 |
287 | /// The logger for faults.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:288:16: warning: static property 'fault' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
245 |
246 | /// A wrapper for the unified logging system.
247 | struct Logger {
| `- note: consider making struct 'Logger' conform to the 'Sendable' protocol
248 | /// The logger's corresponding object in the unified logging system.
249 | let log: OSLog
:
286 |
287 | /// The logger for faults.
288 | static let fault = Self(log: .default, level: .fault)
| |- warning: static property 'fault' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'fault' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
289 |
290 | /// The logger for informative messages.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/Utilities.swift:291:16: warning: static property 'info' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
245 |
246 | /// A wrapper for the unified logging system.
247 | struct Logger {
| `- note: consider making struct 'Logger' conform to the 'Sendable' protocol
248 | /// The logger's corresponding object in the unified logging system.
249 | let log: OSLog
:
289 |
290 | /// The logger for informative messages.
291 | static let info = Self(log: .default, level: .info)
| |- warning: static property 'info' is not concurrency-safe because non-'Sendable' type 'Logger' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'info' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
292 | }
293 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/ViewModifiers.swift:13:16: warning: static property 'defaultValue' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
11 | @available(macOS 10.15, *)
12 | struct KeyRecorderBezelStyleKey: EnvironmentKey {
13 | static var defaultValue = KeyRecorderView.BezelStyle.rounded
| |- warning: static property 'defaultValue' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'defaultValue' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 | }
15 |
[11/15] Compiling SwiftKeys Observation.swift
[12/15] Compiling SwiftKeys Key.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/Key.swift:251:24: warning: static property 'customStringMapping' is not concurrency-safe because non-'Sendable' type '[KeyCommand.Key : String]' may have shared mutable state; this is an error in the Swift 6 language mode
8 | extension KeyCommand {
9 | /// Constants that represent the various keys available on a keyboard.
10 | public enum Key {
| `- note: consider making enum 'Key' conform to the 'Sendable' protocol
11 |
12 | // MARK: ANSI
:
249 | /// Maps custom string representations to keys that can't be
250 | /// represented by a key equivalent.
251 | private static let customStringMapping: [KeyCommand.Key: String] = [
| |- warning: static property 'customStringMapping' is not concurrency-safe because non-'Sendable' type '[KeyCommand.Key : String]' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'customStringMapping' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
252 | .space: "Space", // matches macOS representation
253 | .tab: "⇥",
[13/15] Compiling SwiftKeys KeyCommand.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyCommand/Key.swift:251:24: warning: static property 'customStringMapping' is not concurrency-safe because non-'Sendable' type '[KeyCommand.Key : String]' may have shared mutable state; this is an error in the Swift 6 language mode
8 | extension KeyCommand {
9 | /// Constants that represent the various keys available on a keyboard.
10 | public enum Key {
| `- note: consider making enum 'Key' conform to the 'Sendable' protocol
11 |
12 | // MARK: ANSI
:
249 | /// Maps custom string representations to keys that can't be
250 | /// represented by a key equivalent.
251 | private static let customStringMapping: [KeyCommand.Key: String] = [
| |- warning: static property 'customStringMapping' is not concurrency-safe because non-'Sendable' type '[KeyCommand.Key : String]' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'customStringMapping' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
252 | .space: "Space", // matches macOS representation
253 | .tab: "⇥",
[14/15] Compiling SwiftKeys KeyRecorderView.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorderView.swift:79:17: warning: call to main actor-isolated initializer 'init(keyCommand:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
77 | self.init(keyCommand: keyCommand) {
78 | _KeyRecorderView {
79 | KeyRecorder(keyCommand: keyCommand)
| `- warning: call to main actor-isolated initializer 'init(keyCommand:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
80 | }
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorder.swift:149:12: note: calls to initializer 'init(keyCommand:)' from outside of its actor context are implicitly asynchronous
147 | /// Whenever a new key combination is recorded, the key and modifiers
148 | /// of the command will be updated to match.
149 | public init(keyCommand: KeyCommand) {
| `- note: calls to initializer 'init(keyCommand:)' from outside of its actor context are implicitly asynchronous
150 | super.init(_keyCommand: keyCommand)
151 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/KeyRecorder/KeyRecorderView.swift:79:17: warning: sending 'keyCommand' risks causing data races; this is an error in the Swift 6 language mode
77 | self.init(keyCommand: keyCommand) {
78 | _KeyRecorderView {
79 | KeyRecorder(keyCommand: keyCommand)
| |- warning: sending 'keyCommand' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'keyCommand' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
80 | }
81 | }
[15/15] Compiling SwiftKeys ViewModifiers.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftKeys/Utilities/ViewModifiers.swift:13:16: warning: static property 'defaultValue' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
11 | @available(macOS 10.15, *)
12 | struct KeyRecorderBezelStyleKey: EnvironmentKey {
13 | static var defaultValue = KeyRecorderView.BezelStyle.rounded
| |- warning: static property 'defaultValue' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultValue' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'defaultValue' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 | }
15 |
Build complete! (35.77s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "SwiftKeys",
"name" : "SwiftKeys",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.13"
}
],
"products" : [
{
"name" : "SwiftKeys",
"targets" : [
"SwiftKeys"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "SwiftKeysTests",
"module_type" : "SwiftTarget",
"name" : "SwiftKeysTests",
"path" : "Tests/SwiftKeysTests",
"sources" : [
"EventTypeTests.swift",
"KeyCommandProxyTests.swift",
"KeyCommandTests.swift",
"KeyRecorderTests.swift",
"Utilities.swift"
],
"target_dependencies" : [
"SwiftKeys"
],
"type" : "test"
},
{
"c99name" : "SwiftKeys",
"module_type" : "SwiftTarget",
"name" : "SwiftKeys",
"path" : "Sources/SwiftKeys",
"product_memberships" : [
"SwiftKeys"
],
"sources" : [
"KeyCommand/Key.swift",
"KeyCommand/KeyCommand.swift",
"KeyCommand/KeyCommandProxy.swift",
"KeyCommand/Modifier.swift",
"KeyCommand/Name.swift",
"KeyCommand/Observation.swift",
"KeyRecorder/BezelStyle.swift",
"KeyRecorder/KeyRecorder.swift",
"KeyRecorder/KeyRecorderView.swift",
"Utilities/NSMenuItem+extensions.swift",
"Utilities/Utilities.swift",
"Utilities/ViewModifiers.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Done.