Build Information
Successful build of Eazy, reference main (8bc6d6
), with Swift 6.1 for macOS (SPM) on 26 Apr 2025 23:45:14 UTC.
Swift 6 data race errors: 4
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Build Log
========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/bangerang/swift-eazy.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/bangerang/swift-eazy
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 8bc6d6c Add license
Cloned https://github.com/bangerang/swift-eazy.git
Revision (git rev-parse @):
8bc6d6c7e53329c31be18cca0f17dbe83be49e62
SUCCESS checkout https://github.com/bangerang/swift-eazy.git at main
Fetching https://github.com/pointfreeco/xctest-dynamic-overlay from cache
Fetching https://github.com/pointfreeco/swift-custom-dump from cache
Fetched https://github.com/pointfreeco/swift-custom-dump from cache (0.50s)
Computing version for https://github.com/pointfreeco/swift-custom-dump
Fetched https://github.com/pointfreeco/xctest-dynamic-overlay from cache (0.50s)
Computed https://github.com/pointfreeco/swift-custom-dump at 0.4.0 (1.16s)
Computing version for https://github.com/pointfreeco/xctest-dynamic-overlay
Computed https://github.com/pointfreeco/xctest-dynamic-overlay at 0.2.1 (0.64s)
Creating working copy for https://github.com/pointfreeco/swift-custom-dump
Working copy of https://github.com/pointfreeco/swift-custom-dump resolved at 0.4.0
Creating working copy for https://github.com/pointfreeco/xctest-dynamic-overlay
Working copy of https://github.com/pointfreeco/xctest-dynamic-overlay resolved at 0.2.1
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
"identity": ".resolve-product-dependencies",
"name": "resolve-dependencies",
"url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"dependencies": [
{
"identity": "swift-eazy",
"name": "Eazy",
"url": "https://github.com/bangerang/swift-eazy.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-eazy",
"dependencies": [
{
"identity": "swift-custom-dump",
"name": "swift-custom-dump",
"url": "https://github.com/pointfreeco/swift-custom-dump",
"version": "0.4.0",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-custom-dump",
"dependencies": [
{
"identity": "xctest-dynamic-overlay",
"name": "xctest-dynamic-overlay",
"url": "https://github.com/pointfreeco/xctest-dynamic-overlay",
"version": "0.9.0",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/xctest-dynamic-overlay",
"dependencies": [
]
}
]
}
]
}
]
}
Fetching https://github.com/bangerang/swift-eazy.git
[1/528] Fetching swift-eazy
Fetched https://github.com/bangerang/swift-eazy.git from cache (0.81s)
Fetching https://github.com/pointfreeco/swift-custom-dump from cache
Fetched https://github.com/pointfreeco/swift-custom-dump from cache (0.46s)
Computing version for https://github.com/pointfreeco/swift-custom-dump
Computed https://github.com/pointfreeco/swift-custom-dump at 0.4.0 (0.52s)
Fetching https://github.com/pointfreeco/xctest-dynamic-overlay from cache
Fetched https://github.com/pointfreeco/xctest-dynamic-overlay from cache (0.42s)
Computing version for https://github.com/pointfreeco/xctest-dynamic-overlay
Computed https://github.com/pointfreeco/xctest-dynamic-overlay at 0.9.0 (1.08s)
Creating working copy for https://github.com/pointfreeco/swift-custom-dump
Working copy of https://github.com/pointfreeco/swift-custom-dump resolved at 0.4.0
Creating working copy for https://github.com/pointfreeco/xctest-dynamic-overlay
Working copy of https://github.com/pointfreeco/xctest-dynamic-overlay resolved at 0.9.0
Creating working copy for https://github.com/bangerang/swift-eazy.git
Working copy of https://github.com/bangerang/swift-eazy.git resolved at main (8bc6d6c)
warning: '.resolve-product-dependencies': dependency 'swift-eazy' is not used by any target
Found 1 product dependencies
- swift-custom-dump
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/bangerang/swift-eazy.git
https://github.com/bangerang/swift-eazy.git
{
"dependencies" : [
{
"identity" : "swift-custom-dump",
"requirement" : {
"exact" : [
"0.4.0"
]
},
"type" : "sourceControl",
"url" : "https://github.com/pointfreeco/swift-custom-dump"
}
],
"manifest_display_name" : "Eazy",
"name" : "Eazy",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "macos",
"version" : "11.0"
},
{
"name" : "tvos",
"version" : "14.0"
},
{
"name" : "watchos",
"version" : "7.0"
}
],
"products" : [
{
"name" : "Eazy",
"targets" : [
"Eazy"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "EazyTests",
"module_type" : "SwiftTarget",
"name" : "EazyTests",
"path" : "Tests/EazyTests",
"sources" : [
"EazyTests.swift",
"UIKitTests.swift"
],
"target_dependencies" : [
"Eazy"
],
"type" : "test"
},
{
"c99name" : "Eazy",
"module_type" : "SwiftTarget",
"name" : "Eazy",
"path" : "Sources/Eazy",
"product_dependencies" : [
"CustomDump"
],
"product_memberships" : [
"Eazy"
],
"sources" : [
"Action.swift",
"Debug.swift",
"Extensions/Equatable.swift",
"Extensions/Publisher.swift",
"Extensions/UIKit.swift",
"Hooks.swift",
"Interactor.swift",
"Store.swift"
],
"type" : "library"
}
],
"tools_version" : "5.5"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/4] Write sources
[3/4] Write swift-version-2F0A5646E1D333AE.txt
[5/6] Compiling XCTestDynamicOverlay XCTFail.swift
[6/6] Emitting module XCTestDynamicOverlay
[7/30] Compiling CustomDump CustomDumpRepresentable.swift
[8/30] Compiling CustomDump CustomDumpStringConvertible.swift
[9/32] Emitting module CustomDump
[10/32] Compiling CustomDump String.swift
[11/32] Compiling CustomDump XCTAssertNoDifference.swift
[12/32] Compiling CustomDump Foundation.swift
[13/32] Compiling CustomDump GameKit.swift
[14/32] Compiling CustomDump KeyPath.swift
[15/32] Compiling CustomDump Swift.swift
[16/32] Compiling CustomDump SwiftUI.swift
[17/32] Compiling CustomDump UIKit.swift
[18/32] Compiling CustomDump CoreImage.swift
[19/32] Compiling CustomDump CoreLocation.swift
[20/32] Compiling CustomDump CoreMotion.swift
[21/32] Compiling CustomDump UserNotifications.swift
[22/32] Compiling CustomDump UserNotificationsUI.swift
[23/32] Compiling CustomDump CustomDumpReflectable.swift
[24/32] Compiling CustomDump AnyType.swift
[25/32] Compiling CustomDump Box.swift
[26/32] Compiling CustomDump Diff.swift
[27/32] Compiling CustomDump Dump.swift
[28/32] Compiling CustomDump Photos.swift
[29/32] Compiling CustomDump Speech.swift
[30/32] Compiling CustomDump StoreKit.swift
[31/32] Compiling CustomDump CollectionDifference.swift
[32/32] Compiling CustomDump Mirror.swift
[33/41] Compiling Eazy Interactor.swift
[34/41] Compiling Eazy UIKit.swift
[35/41] Compiling Eazy Debug.swift
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:7:23: warning: static property 'print' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// The default handler for managing log output.
7 | public static var print: (String) -> Void = { message in
| |- warning: static property 'print' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'print' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'print' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
8 | if NSClassFromString("XCTest") == nil {
9 | Swift.print(message)
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:30:29: warning: static property 'logEnabledType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
28 | }
29 |
30 | static private(set) var logEnabledType: LogEnabledType = .none
| |- warning: static property 'logEnabledType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logEnabledType' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logEnabledType' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
31 |
32 | public enum FilterOption {
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:88:24: warning: capture of 'value' with non-sendable type 'T' in a '@Sendable' closure
83 | static private let queue = DispatchQueue(label: "Eazy Logger", qos: .background)
84 |
85 | static func logInitialState<T>(_ value: T, print: @escaping (String) -> Void) {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
86 | queue.async {
87 | var output = ""
88 | customDump(value, to: &output)
| `- warning: capture of 'value' with non-sendable type 'T' in a '@Sendable' closure
89 | let message = "Eazy - Initial state:\n\(output)"
90 | print(message)
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:90:13: warning: capture of 'print' with non-sendable type '(String) -> Void' in a '@Sendable' closure
88 | customDump(value, to: &output)
89 | let message = "Eazy - Initial state:\n\(output)"
90 | print(message)
| |- warning: capture of 'print' with non-sendable type '(String) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
91 | }
92 | }
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:97:13: warning: capture of 'print' with non-sendable type '(String) -> Void' in a '@Sendable' closure
95 | queue.async {
96 | let message = "Eazy - Triggered action:\n\(action)"
97 | print(message)
| |- warning: capture of 'print' with non-sendable type '(String) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
98 | }
99 | }
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:104:24: warning: capture of 'action' with non-sendable type 'Action' in a '@Sendable' closure
99 | }
100 |
101 | static func logAction<Action>(_ action: Action, print: @escaping (String) -> Void) {
| `- note: consider making generic parameter 'Action' conform to the 'Sendable' protocol
102 | queue.async {
103 | var output = ""
104 | customDump(action, to: &output)
| `- warning: capture of 'action' with non-sendable type 'Action' in a '@Sendable' closure
105 | let message = "Eazy - Triggered action:\n\(output)"
106 | print(message)
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:106:13: warning: capture of 'print' with non-sendable type '(String) -> Void' in a '@Sendable' closure
104 | customDump(action, to: &output)
105 | let message = "Eazy - Triggered action:\n\(output)"
106 | print(message)
| |- warning: capture of 'print' with non-sendable type '(String) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
107 | }
108 | }
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:113:24: warning: capture of 'value' with non-sendable type 'T' in a '@Sendable' closure
108 | }
109 |
110 | static func logHook<Hook, T>(_ hook: Hook, _ value: T, print: @escaping (String) -> Void) {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
111 | queue.async {
112 | var valueOutput = ""
113 | customDump(value, to: &valueOutput)
| `- warning: capture of 'value' with non-sendable type 'T' in a '@Sendable' closure
114 | let message = "Eazy - Hook fired:\n\(hook) \(valueOutput)"
115 | print(message)
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:114:50: warning: capture of 'hook' with non-sendable type 'Hook' in a '@Sendable' closure
108 | }
109 |
110 | static func logHook<Hook, T>(_ hook: Hook, _ value: T, print: @escaping (String) -> Void) {
| `- note: consider making generic parameter 'Hook' conform to the 'Sendable' protocol
111 | queue.async {
112 | var valueOutput = ""
113 | customDump(value, to: &valueOutput)
114 | let message = "Eazy - Hook fired:\n\(hook) \(valueOutput)"
| `- warning: capture of 'hook' with non-sendable type 'Hook' in a '@Sendable' closure
115 | print(message)
116 | }
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:115:13: warning: capture of 'print' with non-sendable type '(String) -> Void' in a '@Sendable' closure
113 | customDump(value, to: &valueOutput)
114 | let message = "Eazy - Hook fired:\n\(hook) \(valueOutput)"
115 | print(message)
| |- warning: capture of 'print' with non-sendable type '(String) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
116 | }
117 | }
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:121:29: warning: capture of 'old' with non-sendable type 'T?' in a '@Sendable' closure
117 | }
118 |
119 | static func logStateChange<T>(old: T?, new: T, print: @escaping (String) -> Void) {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
120 | queue.async {
121 | guard let old = old else {
| `- warning: capture of 'old' with non-sendable type 'T?' in a '@Sendable' closure
122 | return
123 | }
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:124:39: warning: capture of 'new' with non-sendable type 'T' in a '@Sendable' closure
117 | }
118 |
119 | static func logStateChange<T>(old: T?, new: T, print: @escaping (String) -> Void) {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
120 | queue.async {
121 | guard let old = old else {
122 | return
123 | }
124 | if let output = diff(old, new).map({ "\($0)\n" }) {
| `- warning: capture of 'new' with non-sendable type 'T' in a '@Sendable' closure
125 | let message = "Eazy - State changed:\n" + output
126 | print(message)
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:126:17: warning: capture of 'print' with non-sendable type '(String) -> Void' in a '@Sendable' closure
124 | if let output = diff(old, new).map({ "\($0)\n" }) {
125 | let message = "Eazy - State changed:\n" + output
126 | print(message)
| |- warning: capture of 'print' with non-sendable type '(String) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
127 | }
128 | }
[36/41] Compiling Eazy Publisher.swift
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Extensions/Publisher.swift:9:24: warning: sending 'animation' risks causing data races; this is an error in the Swift 6 language mode
7 | return sink { [weak store] value in
8 | Task { @MainActor [weak store] in
9 | switch animation {
| |- warning: sending 'animation' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'animation' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
10 | case .none:
11 | store?.set(keyPath, value, forceUpdate: forceUpdate)
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Extensions/Publisher.swift:11:32: warning: sending 'keyPath' risks causing data races; this is an error in the Swift 6 language mode
9 | switch animation {
10 | case .none:
11 | store?.set(keyPath, value, forceUpdate: forceUpdate)
| |- warning: sending 'keyPath' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'keyPath' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
12 | case .`default`:
13 | withAnimation {
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Extensions/Publisher.swift:11:41: warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
9 | switch animation {
10 | case .none:
11 | store?.set(keyPath, value, forceUpdate: forceUpdate)
| |- warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'value' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
12 | case .`default`:
13 | withAnimation {
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Extensions/Publisher.swift:29:33: warning: sending 'action' risks causing data races; this is an error in the Swift 6 language mode
27 | return sink { [weak store] value in
28 | Task { @MainActor [weak store] in
29 | store?.dispatch(action)
| |- warning: sending 'action' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'action' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
30 | }
31 | }
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Extensions/Publisher.swift:37:33: warning: sending 'action' risks causing data races; this is an error in the Swift 6 language mode
35 | return sink { [weak store] value in
36 | Task { @MainActor [weak store] in
37 | store?.dispatch(action(value))
| |- warning: sending 'action' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'action' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
38 | }
39 | }
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Extensions/Publisher.swift:37:40: warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
35 | return sink { [weak store] value in
36 | Task { @MainActor [weak store] in
37 | store?.dispatch(action(value))
| |- warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'value' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
38 | }
39 | }
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Extensions/Publisher.swift:64:34: warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
62 | cancellable?.cancel()
63 | }, receiveValue: { value in
64 | continuation.yield(value)
| |- warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'value' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
65 | }
66 | )
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Extensions/Publisher.swift:80:38: warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
78 | cancellable?.cancel()
79 | }, receiveValue: { value in
80 | continuation.yield(value)
| |- warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'value' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
81 | }
82 | )
[37/41] Compiling Eazy Action.swift
[38/41] Emitting module Eazy
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:7:23: warning: static property 'print' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// The default handler for managing log output.
7 | public static var print: (String) -> Void = { message in
| |- warning: static property 'print' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'print' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'print' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
8 | if NSClassFromString("XCTest") == nil {
9 | Swift.print(message)
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Debug.swift:30:29: warning: static property 'logEnabledType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
28 | }
29 |
30 | static private(set) var logEnabledType: LogEnabledType = .none
| |- warning: static property 'logEnabledType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logEnabledType' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logEnabledType' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
31 |
32 | public enum FilterOption {
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Hooks.swift:29:16: warning: static property 'hookReceivedOutput' is not concurrency-safe because non-'Sendable' type 'PassthroughSubject<(hook: String, value: Any), Never>' may have shared mutable state; this is an error in the Swift 6 language mode
27 |
28 | class HookRepository {
29 | static let hookReceivedOutput = PassthroughSubject<(hook: String, value: Any), Never>()
| `- warning: static property 'hookReceivedOutput' is not concurrency-safe because non-'Sendable' type 'PassthroughSubject<(hook: String, value: Any), Never>' may have shared mutable state; this is an error in the Swift 6 language mode
30 | static var hooks: [String] = []
31 | }
Combine.PassthroughSubject:2:20: note: generic class 'PassthroughSubject' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
2 | final public class PassthroughSubject<Output, Failure> : Subject where Failure : Error {
| `- note: generic class 'PassthroughSubject' does not conform to the 'Sendable' protocol
3 | public init()
4 | @objc deinit
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Hooks.swift:2:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Combine'
1 | import Foundation
2 | import Combine
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Combine'
3 | import CustomDump
4 |
:
27 |
28 | class HookRepository {
29 | static let hookReceivedOutput = PassthroughSubject<(hook: String, value: Any), Never>()
| |- note: add '@MainActor' to make static property 'hookReceivedOutput' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
30 | static var hooks: [String] = []
31 | }
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Hooks.swift:30:16: warning: static property 'hooks' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
28 | class HookRepository {
29 | static let hookReceivedOutput = PassthroughSubject<(hook: String, value: Any), Never>()
30 | static var hooks: [String] = []
| |- warning: static property 'hooks' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'hooks' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'hooks' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
31 | }
32 |
[39/41] Compiling Eazy Store.swift
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Store.swift:32:16: warning: main actor-isolated property 'store' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
27 | @propertyWrapper
28 | public struct StateStore<State: Equatable, Action: Equatable>: DynamicProperty {
29 | @StateObject private var store: Store<State, Action>
| `- note: property declared here
30 |
31 | public var wrappedValue: Store<State, Action> {
32 | return store
| `- warning: main actor-isolated property 'store' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
33 | }
34 |
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Store.swift:36:16: warning: main actor-isolated property 'store' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
27 | @propertyWrapper
28 | public struct StateStore<State: Equatable, Action: Equatable>: DynamicProperty {
29 | @StateObject private var store: Store<State, Action>
| `- note: property declared here
30 |
31 | public var wrappedValue: Store<State, Action> {
:
34 |
35 | public var projectedValue: Store<State, Action>.Binder {
36 | return store.binder
| `- warning: main actor-isolated property 'store' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
37 | }
38 |
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Store.swift:83:9: warning: main actor-isolated property 'provider' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
56 | var explicitKeyPathChange: PartialKeyPath<State>?
57 |
58 | private let provider: Provider
| `- note: property declared here
59 |
60 | init(provider: Provider) {
:
81 |
82 | public nonisolated func receive<S>(subscriber: S) where S : Subscriber, Never == S.Failure, State == S.Input {
83 | provider
| `- warning: main actor-isolated property 'provider' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
84 | .objectChanged()
85 | .removeDuplicates()
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Store.swift:580:76: warning: non-sendable result type 'AsyncStream<Publishers.Output<PassthroughSubject<(hook: String, value: Any), Never>>.Output>' (aka 'AsyncStream<(hook: String, value: Any)>') cannot be sent from nonisolated context in call to instance method 'stream(timeout:scheduler:)'; this is an error in the Swift 6 language mode
578 |
579 | await Task { @MainActor in
580 | let stream = await HookRepository.hookReceivedOutput.prefix(1).stream()
| `- warning: non-sendable result type 'AsyncStream<Publishers.Output<PassthroughSubject<(hook: String, value: Any), Never>>.Output>' (aka 'AsyncStream<(hook: String, value: Any)>') cannot be sent from nonisolated context in call to instance method 'stream(timeout:scheduler:)'; this is an error in the Swift 6 language mode
581 | trigger()
582 | for await data in stream {
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Store.swift:582:13: warning: non-sendable result type 'Publishers.Output<PassthroughSubject<(hook: String, value: Any), Never>>.Output?' (aka 'Optional<(hook: String, value: Any)>') cannot be sent from nonisolated context in call to instance method 'next()'; this is an error in the Swift 6 language mode
580 | let stream = await HookRepository.hookReceivedOutput.prefix(1).stream()
581 | trigger()
582 | for await data in stream {
| `- warning: non-sendable result type 'Publishers.Output<PassthroughSubject<(hook: String, value: Any), Never>>.Output?' (aka 'Optional<(hook: String, value: Any)>') cannot be sent from nonisolated context in call to instance method 'next()'; this is an error in the Swift 6 language mode
583 | if data.hook == identifier {
584 | store.didTriggerHook = true
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Store.swift:608:54: warning: non-sendable result type 'Action?' cannot be sent from nonisolated context in call to instance method 'first(timeout:scheduler:)'; this is an error in the Swift 6 language mode
553 |
554 | /// A ``TestStore`` is a test utility that can be used for writing test code.
555 | public class TestStore<State: Equatable, Action: Equatable>: Store<State, Action> {
| `- note: consider making generic parameter 'Action' conform to the 'Sendable' protocol
556 |
557 | public private(set) var stateUpdates: [State] = []
:
606 |
607 | public func didTrigger(_ action: Action) async -> Bool {
608 | return await mutatingStore.didDispatchAction.first() == action
| `- warning: non-sendable result type 'Action?' cannot be sent from nonisolated context in call to instance method 'first(timeout:scheduler:)'; this is an error in the Swift 6 language mode
609 | }
610 |
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Store.swift:608:54: warning: sending value of non-Sendable type 'PassthroughSubject<Action, Never>' risks causing data races; this is an error in the Swift 6 language mode
606 |
607 | public func didTrigger(_ action: Action) async -> Bool {
608 | return await mutatingStore.didDispatchAction.first() == action
| |- warning: sending value of non-Sendable type 'PassthroughSubject<Action, Never>' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated value of non-Sendable type 'PassthroughSubject<Action, Never>' to nonisolated callee risks causing races in between main actor-isolated and nonisolated uses
609 | }
610 |
[40/41] Compiling Eazy Equatable.swift
[41/41] Compiling Eazy Hooks.swift
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Hooks.swift:29:16: warning: static property 'hookReceivedOutput' is not concurrency-safe because non-'Sendable' type 'PassthroughSubject<(hook: String, value: Any), Never>' may have shared mutable state; this is an error in the Swift 6 language mode
27 |
28 | class HookRepository {
29 | static let hookReceivedOutput = PassthroughSubject<(hook: String, value: Any), Never>()
| `- warning: static property 'hookReceivedOutput' is not concurrency-safe because non-'Sendable' type 'PassthroughSubject<(hook: String, value: Any), Never>' may have shared mutable state; this is an error in the Swift 6 language mode
30 | static var hooks: [String] = []
31 | }
Combine.PassthroughSubject:2:20: note: generic class 'PassthroughSubject' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
2 | final public class PassthroughSubject<Output, Failure> : Subject where Failure : Error {
| `- note: generic class 'PassthroughSubject' does not conform to the 'Sendable' protocol
3 | public init()
4 | @objc deinit
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Hooks.swift:2:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Combine'
1 | import Foundation
2 | import Combine
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Combine'
3 | import CustomDump
4 |
:
27 |
28 | class HookRepository {
29 | static let hookReceivedOutput = PassthroughSubject<(hook: String, value: Any), Never>()
| |- note: add '@MainActor' to make static property 'hookReceivedOutput' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
30 | static var hooks: [String] = []
31 | }
/Users/admin/builder/spi-builder-workspace/Sources/Eazy/Hooks.swift:30:16: warning: static property 'hooks' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
28 | class HookRepository {
29 | static let hookReceivedOutput = PassthroughSubject<(hook: String, value: Any), Never>()
30 | static var hooks: [String] = []
| |- warning: static property 'hooks' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'hooks' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'hooks' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
31 | }
32 |
Build complete! (19.75s)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-custom-dump",
"requirement" : {
"exact" : [
"0.4.0"
]
},
"type" : "sourceControl",
"url" : "https://github.com/pointfreeco/swift-custom-dump"
}
],
"manifest_display_name" : "Eazy",
"name" : "Eazy",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "macos",
"version" : "11.0"
},
{
"name" : "tvos",
"version" : "14.0"
},
{
"name" : "watchos",
"version" : "7.0"
}
],
"products" : [
{
"name" : "Eazy",
"targets" : [
"Eazy"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "EazyTests",
"module_type" : "SwiftTarget",
"name" : "EazyTests",
"path" : "Tests/EazyTests",
"sources" : [
"EazyTests.swift",
"UIKitTests.swift"
],
"target_dependencies" : [
"Eazy"
],
"type" : "test"
},
{
"c99name" : "Eazy",
"module_type" : "SwiftTarget",
"name" : "Eazy",
"path" : "Sources/Eazy",
"product_dependencies" : [
"CustomDump"
],
"product_memberships" : [
"Eazy"
],
"sources" : [
"Action.swift",
"Debug.swift",
"Extensions/Equatable.swift",
"Extensions/Publisher.swift",
"Extensions/UIKit.swift",
"Hooks.swift",
"Interactor.swift",
"Store.swift"
],
"type" : "library"
}
],
"tools_version" : "5.5"
}
Done.