Build Information
Successful build of NavigationBackport, reference main (4f4c1b
), with Swift 6.0 for macOS (SPM) on 6 Nov 2024 16:20:09 UTC.
Swift 6 data race errors: 2
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.1.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Build Log
========================================
RunAll
========================================
Builder version: 4.56.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/johnpatrickmorgan/NavigationBackport.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/johnpatrickmorgan/NavigationBackport
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 4f4c1b2 Refactors to allow ViewBuilder usage
Cloned https://github.com/johnpatrickmorgan/NavigationBackport.git
Revision (git rev-parse @):
4f4c1b201c6e92c9d5236d69f563d5f435d6f340
SUCCESS checkout https://github.com/johnpatrickmorgan/NavigationBackport.git at main
========================================
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": "navigationbackport",
"name": "NavigationBackport",
"url": "https://github.com/johnpatrickmorgan/NavigationBackport.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/NavigationBackport",
"dependencies": [
]
}
]
}
Fetching https://github.com/johnpatrickmorgan/NavigationBackport.git
[1/1329] Fetching navigationbackport
Fetched https://github.com/johnpatrickmorgan/NavigationBackport.git from cache (0.99s)
Creating working copy for https://github.com/johnpatrickmorgan/NavigationBackport.git
Working copy of https://github.com/johnpatrickmorgan/NavigationBackport.git resolved at main (4f4c1b2)
warning: '.resolve-product-dependencies': dependency 'navigationbackport' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.0
Building package at path: $PWD
https://github.com/johnpatrickmorgan/NavigationBackport.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.1.0.app xcrun 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--7754E27361AE5C74.txt
[3/31] Emitting module NavigationBackport
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/DestinationBuilderView.swift:16:15: warning: main actor-isolated operator function '==' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
13 | }
14 |
15 | struct DataDependentView<Content: View>: View, Equatable {
| `- note: add '@preconcurrency' to the 'Equatable' conformance to defer isolation checking to run time
16 | static func ==(lhs: DataDependentView, rhs: DataDependentView) -> Bool {
| |- warning: main actor-isolated operator function '==' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to '==' to make this operator function not isolated to the actor
17 | return lhs.data == rhs.data
18 | }
Swift.Equatable:2:17: note: '==' declared here
1 | public protocol Equatable {
2 | static func == (lhs: Self, rhs: Self) -> Bool
| `- note: '==' declared here
3 | }
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/EnvironmentValues+navigationStack.swift:4:14: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'UseNavigationStackPolicy' may have shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | struct UseNavigationStackPolicyKey: EnvironmentKey {
4 | static let defaultValue = UseNavigationStackPolicy.whenAvailable
| |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'UseNavigationStackPolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- 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
5 | }
6 |
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/UseNavigationStackPolicy.swift:3:13: note: consider making enum 'UseNavigationStackPolicy' conform to the 'Sendable' protocol
1 | import SwiftUI
2 |
3 | public enum UseNavigationStackPolicy {
| `- note: consider making enum 'UseNavigationStackPolicy' conform to the 'Sendable' protocol
4 | case whenAvailable
5 | case never
[4/34] Compiling NavigationBackport View+nbUseNavigationStack.swift
[5/34] Compiling NavigationBackport View+onFirstAppear.swift
[6/34] Compiling NavigationBackport apply.swift
[7/34] Compiling NavigationBackport NBNavigationPath+utilities.swift
[8/34] Compiling NavigationBackport NBNavigationPath.swift
[9/34] Compiling NavigationBackport NBNavigationStack.swift
[10/34] Compiling NavigationBackport Navigator.swift
[11/34] Compiling NavigationBackport Node.swift
[12/34] Compiling NavigationBackport NonReactiveState.swift
[13/34] Compiling NavigationBackport EnvironmentValues+navigationStack.swift
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/EnvironmentValues+navigationStack.swift:4:14: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'UseNavigationStackPolicy' may have shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | struct UseNavigationStackPolicyKey: EnvironmentKey {
4 | static let defaultValue = UseNavigationStackPolicy.whenAvailable
| |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'UseNavigationStackPolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- 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
5 | }
6 |
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/UseNavigationStackPolicy.swift:3:13: note: consider making enum 'UseNavigationStackPolicy' conform to the 'Sendable' protocol
1 | import SwiftUI
2 |
3 | public enum UseNavigationStackPolicy {
| `- note: consider making enum 'UseNavigationStackPolicy' conform to the 'Sendable' protocol
4 | case whenAvailable
5 | case never
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/LocalDestinationBuilderModifier.swift:22:7: warning: capture of 'destinationBuilder' with non-sendable type 'DestinationBuilderHolder?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
20 | // the view tree. Dispatching async allows those re-renders to succeed before removing the local builder.
21 | DispatchQueue.main.async { [destinationBuilder, id] in
22 | destinationBuilder?.removeLocalBuilder(identifier: id)
| `- warning: capture of 'destinationBuilder' with non-sendable type 'DestinationBuilderHolder?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
23 | }
24 | }
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/DestinationBuilderHolder.swift:5:7: note: class 'DestinationBuilderHolder' does not conform to the 'Sendable' protocol
3 |
4 | /// Keeps hold of the destination builder closures for a given type or local destination ID.
5 | class DestinationBuilderHolder: ObservableObject {
| `- note: class 'DestinationBuilderHolder' does not conform to the 'Sendable' protocol
6 | static func identifier(for type: Any.Type) -> String {
7 | String(reflecting: type)
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/LocalDestinationBuilderModifier.swift:22:7: warning: sending 'destinationBuilder' risks causing data races; this is an error in the Swift 6 language mode
20 | // the view tree. Dispatching async allows those re-renders to succeed before removing the local builder.
21 | DispatchQueue.main.async { [destinationBuilder, id] in
22 | destinationBuilder?.removeLocalBuilder(identifier: id)
| |- warning: sending 'destinationBuilder' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'destinationBuilder' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
23 | }
24 | }
[14/34] Compiling NavigationBackport LocalDestinationBuilderModifier.swift
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/EnvironmentValues+navigationStack.swift:4:14: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'UseNavigationStackPolicy' may have shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | struct UseNavigationStackPolicyKey: EnvironmentKey {
4 | static let defaultValue = UseNavigationStackPolicy.whenAvailable
| |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'UseNavigationStackPolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- 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
5 | }
6 |
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/UseNavigationStackPolicy.swift:3:13: note: consider making enum 'UseNavigationStackPolicy' conform to the 'Sendable' protocol
1 | import SwiftUI
2 |
3 | public enum UseNavigationStackPolicy {
| `- note: consider making enum 'UseNavigationStackPolicy' conform to the 'Sendable' protocol
4 | case whenAvailable
5 | case never
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/LocalDestinationBuilderModifier.swift:22:7: warning: capture of 'destinationBuilder' with non-sendable type 'DestinationBuilderHolder?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
20 | // the view tree. Dispatching async allows those re-renders to succeed before removing the local builder.
21 | DispatchQueue.main.async { [destinationBuilder, id] in
22 | destinationBuilder?.removeLocalBuilder(identifier: id)
| `- warning: capture of 'destinationBuilder' with non-sendable type 'DestinationBuilderHolder?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
23 | }
24 | }
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/DestinationBuilderHolder.swift:5:7: note: class 'DestinationBuilderHolder' does not conform to the 'Sendable' protocol
3 |
4 | /// Keeps hold of the destination builder closures for a given type or local destination ID.
5 | class DestinationBuilderHolder: ObservableObject {
| `- note: class 'DestinationBuilderHolder' does not conform to the 'Sendable' protocol
6 | static func identifier(for type: Any.Type) -> String {
7 | String(reflecting: type)
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/LocalDestinationBuilderModifier.swift:22:7: warning: sending 'destinationBuilder' risks causing data races; this is an error in the Swift 6 language mode
20 | // the view tree. Dispatching async allows those re-renders to succeed before removing the local builder.
21 | DispatchQueue.main.async { [destinationBuilder, id] in
22 | destinationBuilder?.removeLocalBuilder(identifier: id)
| |- warning: sending 'destinationBuilder' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'destinationBuilder' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
23 | }
24 | }
[15/34] Compiling NavigationBackport NBNavigationLink.swift
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/EnvironmentValues+navigationStack.swift:4:14: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'UseNavigationStackPolicy' may have shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | struct UseNavigationStackPolicyKey: EnvironmentKey {
4 | static let defaultValue = UseNavigationStackPolicy.whenAvailable
| |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'UseNavigationStackPolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- 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
5 | }
6 |
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/UseNavigationStackPolicy.swift:3:13: note: consider making enum 'UseNavigationStackPolicy' conform to the 'Sendable' protocol
1 | import SwiftUI
2 |
3 | public enum UseNavigationStackPolicy {
| `- note: consider making enum 'UseNavigationStackPolicy' conform to the 'Sendable' protocol
4 | case whenAvailable
5 | case never
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/LocalDestinationBuilderModifier.swift:22:7: warning: capture of 'destinationBuilder' with non-sendable type 'DestinationBuilderHolder?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
20 | // the view tree. Dispatching async allows those re-renders to succeed before removing the local builder.
21 | DispatchQueue.main.async { [destinationBuilder, id] in
22 | destinationBuilder?.removeLocalBuilder(identifier: id)
| `- warning: capture of 'destinationBuilder' with non-sendable type 'DestinationBuilderHolder?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
23 | }
24 | }
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/DestinationBuilderHolder.swift:5:7: note: class 'DestinationBuilderHolder' does not conform to the 'Sendable' protocol
3 |
4 | /// Keeps hold of the destination builder closures for a given type or local destination ID.
5 | class DestinationBuilderHolder: ObservableObject {
| `- note: class 'DestinationBuilderHolder' does not conform to the 'Sendable' protocol
6 | static func identifier(for type: Any.Type) -> String {
7 | String(reflecting: type)
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/LocalDestinationBuilderModifier.swift:22:7: warning: sending 'destinationBuilder' risks causing data races; this is an error in the Swift 6 language mode
20 | // the view tree. Dispatching async allows those re-renders to succeed before removing the local builder.
21 | DispatchQueue.main.async { [destinationBuilder, id] in
22 | destinationBuilder?.removeLocalBuilder(identifier: id)
| |- warning: sending 'destinationBuilder' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'destinationBuilder' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
23 | }
24 | }
[16/34] Compiling NavigationBackport ObservableObject+withDelaysIfUnsupported.swift
[17/34] Compiling NavigationBackport Router.swift
[18/34] Compiling NavigationBackport Unobserved.swift
[19/34] Compiling NavigationBackport NavigationPathHolder.swift
[20/34] Compiling NavigationBackport Navigator+utilities.swift
[21/34] Compiling NavigationBackport Navigator+withDelaysIfUnsupported.swift
[22/34] Compiling NavigationBackport UseNavigationStackPolicy.swift
[23/34] Compiling NavigationBackport View+_navigationDestination.swift
[24/34] Compiling NavigationBackport View+nbNavigationDestination.swift
[25/34] Compiling NavigationBackport Array+utilities.swift
[26/34] Compiling NavigationBackport Binding+withDelaysIfUnsupported.swift
[27/34] Compiling NavigationBackport CodableRepresentation.swift
[28/34] Compiling NavigationBackport ConditionalViewBuilder.swift
[29/34] Compiling NavigationBackport DestinationBuilderHolder.swift
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/DestinationBuilderView.swift:16:15: warning: main actor-isolated operator function '==' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
13 | }
14 |
15 | struct DataDependentView<Content: View>: View, Equatable {
| `- note: add '@preconcurrency' to the 'Equatable' conformance to defer isolation checking to run time
16 | static func ==(lhs: DataDependentView, rhs: DataDependentView) -> Bool {
| |- warning: main actor-isolated operator function '==' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to '==' to make this operator function not isolated to the actor
17 | return lhs.data == rhs.data
18 | }
Swift.Equatable:2:17: note: '==' declared here
1 | public protocol Equatable {
2 | static func == (lhs: Self, rhs: Self) -> Bool
| `- note: '==' declared here
3 | }
[30/34] Compiling NavigationBackport DestinationBuilderModifier.swift
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/DestinationBuilderView.swift:16:15: warning: main actor-isolated operator function '==' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
13 | }
14 |
15 | struct DataDependentView<Content: View>: View, Equatable {
| `- note: add '@preconcurrency' to the 'Equatable' conformance to defer isolation checking to run time
16 | static func ==(lhs: DataDependentView, rhs: DataDependentView) -> Bool {
| |- warning: main actor-isolated operator function '==' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to '==' to make this operator function not isolated to the actor
17 | return lhs.data == rhs.data
18 | }
Swift.Equatable:2:17: note: '==' declared here
1 | public protocol Equatable {
2 | static func == (lhs: Self, rhs: Self) -> Bool
| `- note: '==' declared here
3 | }
[31/34] Compiling NavigationBackport DestinationBuilderView.swift
/Users/admin/builder/spi-builder-workspace/Sources/NavigationBackport/DestinationBuilderView.swift:16:15: warning: main actor-isolated operator function '==' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
13 | }
14 |
15 | struct DataDependentView<Content: View>: View, Equatable {
| `- note: add '@preconcurrency' to the 'Equatable' conformance to defer isolation checking to run time
16 | static func ==(lhs: DataDependentView, rhs: DataDependentView) -> Bool {
| |- warning: main actor-isolated operator function '==' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to '==' to make this operator function not isolated to the actor
17 | return lhs.data == rhs.data
18 | }
Swift.Equatable:2:17: note: '==' declared here
1 | public protocol Equatable {
2 | static func == (lhs: Self, rhs: Self) -> Bool
| `- note: '==' declared here
3 | }
[32/34] Compiling NavigationBackport NBScreen.swift
[33/34] Compiling NavigationBackport NavigationBackport.swift
[34/34] Compiling NavigationBackport NavigationLinkRowStyle.swift
Build complete! (31.19s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "NavigationBackport",
"name" : "NavigationBackport",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "watchos",
"version" : "7.0"
},
{
"name" : "macos",
"version" : "11.0"
},
{
"name" : "tvos",
"version" : "14.0"
}
],
"products" : [
{
"name" : "NavigationBackport",
"targets" : [
"NavigationBackport"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "NavigationBackportTests",
"module_type" : "SwiftTarget",
"name" : "NavigationBackportTests",
"path" : "Tests/NavigationBackportTests",
"sources" : [
"NavigationBackportTests.swift"
],
"target_dependencies" : [
"NavigationBackport"
],
"type" : "test"
},
{
"c99name" : "NavigationBackport",
"module_type" : "SwiftTarget",
"name" : "NavigationBackport",
"path" : "Sources/NavigationBackport",
"product_memberships" : [
"NavigationBackport"
],
"sources" : [
"Array+utilities.swift",
"Binding+withDelaysIfUnsupported.swift",
"CodableRepresentation.swift",
"ConditionalViewBuilder.swift",
"DestinationBuilderHolder.swift",
"DestinationBuilderModifier.swift",
"DestinationBuilderView.swift",
"EnvironmentValues+navigationStack.swift",
"LocalDestinationBuilderModifier.swift",
"NBNavigationLink.swift",
"NBNavigationPath+utilities.swift",
"NBNavigationPath.swift",
"NBNavigationStack.swift",
"NBScreen.swift",
"NavigationBackport.swift",
"NavigationLinkRowStyle.swift",
"NavigationPathHolder.swift",
"Navigator+utilities.swift",
"Navigator+withDelaysIfUnsupported.swift",
"Navigator.swift",
"Node.swift",
"NonReactiveState.swift",
"ObservableObject+withDelaysIfUnsupported.swift",
"Router.swift",
"Unobserved.swift",
"UseNavigationStackPolicy.swift",
"View+_navigationDestination.swift",
"View+nbNavigationDestination.swift",
"View+nbUseNavigationStack.swift",
"View+onFirstAppear.swift",
"apply.swift"
],
"type" : "library"
}
],
"tools_version" : "5.6"
}
Done.