The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of SSpec, reference master (2e6842), with Swift 6.1 for macOS (SPM) on 24 Apr 2025 18:54:05 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/dimakura/sspec.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/dimakura/sspec
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
HEAD is now at 2e68427 Extensibility fixes (#33)
Cloned https://github.com/dimakura/sspec.git
Revision (git rev-parse @):
2e6842709607cdbfd3013e7df0dbe32b60932656
SUCCESS checkout https://github.com/dimakura/sspec.git at master
Fetching https://github.com/onevcat/Rainbow
Fetching https://github.com/jkandzi/Progress.swift
[1/465] Fetching progress.swift
[183/1661] Fetching progress.swift, rainbow
Fetched https://github.com/jkandzi/Progress.swift from cache (0.92s)
Fetched https://github.com/onevcat/Rainbow from cache (0.92s)
Computing version for https://github.com/jkandzi/Progress.swift
error: package 'package.swift' is using Swift tools version 3.1.0 which is no longer supported; consider using '// swift-tools-version: 6.1' to specify the current tools version
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/dimakura/sspec.git
https://github.com/dimakura/sspec.git
{
  "dependencies" : [
    {
      "identity" : "rainbow",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "3.0.0",
            "upper_bound" : "4.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/onevcat/Rainbow"
    },
    {
      "identity" : "progress.swift",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.3.0",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/jkandzi/Progress.swift"
    }
  ],
  "manifest_display_name" : "SSpec",
  "name" : "SSpec",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "SSpec",
      "targets" : [
        "SSpec"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "SSpecTests",
      "module_type" : "SwiftTarget",
      "name" : "SSpecTests",
      "path" : "Tests/SSpecTests",
      "sources" : [
        "Extensions/DummyExtension.swift",
        "General/ArraySpec.swift",
        "General/BeforeAfterSpec.swift",
        "General/BoolSpec.swift",
        "General/EquatableSpec.swift",
        "General/NilableSpec.swift",
        "General/StringSpec.swift",
        "SSpec/ExtensionSpec.swift",
        "SSpec/NodeSpec.swift",
        "SSpec/SessionSpec.swift",
        "SSpec/VersionSpec.swift",
        "SSpecTests.swift"
      ],
      "target_dependencies" : [
        "SSpec"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SSpec",
      "module_type" : "SwiftTarget",
      "name" : "SSpec",
      "path" : "Sources/SSpec",
      "product_dependencies" : [
        "Rainbow",
        "Progress"
      ],
      "product_memberships" : [
        "SSpec"
      ],
      "sources" : [
        "Collectors/DotReporter.swift",
        "Collectors/ProgressReporter.swift",
        "Collectors/Reporter.swift",
        "Collectors/SpecReporter.swift",
        "Collectors/TimeTaken.swift",
        "Collectors/Welcomer.swift",
        "Expectations/Array.swift",
        "Expectations/Bool.swift",
        "Expectations/Change.swift",
        "Expectations/Comparable.swift",
        "Expectations/Equatable.swift",
        "Expectations/Generic.swift",
        "Expectations/String.swift",
        "Expectations/ToString.swift",
        "SSpec.swift",
        "Session/Events.swift",
        "Session/Session.swift",
        "Session/Tree.swift",
        "Tree/After.swift",
        "Tree/Before.swift",
        "Tree/Describe.swift",
        "Tree/Example.swift",
        "Tree/IdGenerator.swift",
        "Tree/Node.swift",
        "Tree/Root.swift",
        "Version.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "4.0"
}
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/19] Compiling Progress Utilities.swift
[6/19] Compiling Progress Progress.swift
[7/19] Emitting module Progress
[8/19] Compiling Progress ProgressElements.swift
[9/19] Compiling Rainbow String+Rainbow.swift
[10/19] Compiling Rainbow Style.swift
[11/20] Compiling Rainbow XcodeColorsSupport.swift
[12/20] Compiling Rainbow BackgroundColor.swift
[13/20] Compiling Rainbow CodesParser.swift
[14/20] Compiling Rainbow StringGenerator.swift
[15/20] Compiling Rainbow OutputTarget.swift
[16/20] Compiling Rainbow ModesExtractor.swift
[17/20] Compiling Rainbow Color.swift
[18/20] Compiling Rainbow ControlCode.swift
[19/20] Compiling Rainbow Rainbow.swift
[20/20] Emitting module Rainbow
[21/45] Emitting module SSpec
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Expectations/Array.swift:18:32: warning: use of protocol 'Equatable' as a type must be written 'any Equatable'; this will be an error in a future Swift language mode
16 |
17 | /// Expectations for equatable arrays.
18 | extension SSExpect where T == [Equatable] {
   |                                `- warning: use of protocol 'Equatable' as a type must be written 'any Equatable'; this will be an error in a future Swift language mode
19 |   private func areEqual<X: Equatable>(_ a: T?, _ b: [X]) -> Bool {
20 |     guard let A = a as? [X] else { return false }
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/SSpec.swift:15:22: warning: static property '_currentSession' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
13 |   }
14 |
15 |   private static var _currentSession: SSSession?
   |                      |- warning: static property '_currentSession' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                      |- note: convert '_currentSession' to a 'let' constant to make 'Sendable' shared state immutable
   |                      |- note: add '@MainActor' to make static property '_currentSession' part of global actor 'MainActor'
   |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
16 |
17 |   /// Current session.
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/SSpec.swift:21:14: warning: static property 'reporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
19 |
20 |   /// Current reporter.
21 |   static var reporter: Reporter = .Dot
   |              |- warning: static property 'reporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |              |- note: convert 'reporter' to a 'let' constant to make 'Sendable' shared state immutable
   |              |- note: add '@MainActor' to make static property 'reporter' part of global actor 'MainActor'
   |              `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
22 |
23 |   /// You use this method only once for running sessions.
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/IdGenerator.swift:3:22: warning: static property 'lastId' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 1 | /// Consequtive id generator.
 2 | struct IdGenerator {
 3 |   private static var lastId: Int = 0
   |                      |- warning: static property 'lastId' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                      |- note: convert 'lastId' to a 'let' constant to make 'Sendable' shared state immutable
   |                      |- note: add '@MainActor' to make static property 'lastId' part of global actor 'MainActor'
   |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 4 |
 5 |   static var nextId: Int {
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:4:14: warning: static property 'current' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  2 | class Node: Equatable, Hashable {
  3 |   /// Current node: used for running examples.
  4 |   static var current: Node? = nil
    |              |- warning: static property 'current' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |              |- note: convert 'current' to a 'let' constant to make 'Sendable' shared state immutable
    |              |- note: add '@MainActor' to make static property 'current' part of global actor 'MainActor'
    |              `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  5 |
  6 |   /// Equatable implementation.
[22/47] Compiling SSpec Comparable.swift
[23/47] Compiling SSpec Equatable.swift
[24/47] Compiling SSpec Generic.swift
[25/47] Compiling SSpec String.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/SSpec.swift:15:22: warning: static property '_currentSession' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
13 |   }
14 |
15 |   private static var _currentSession: SSSession?
   |                      |- warning: static property '_currentSession' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                      |- note: convert '_currentSession' to a 'let' constant to make 'Sendable' shared state immutable
   |                      |- note: add '@MainActor' to make static property '_currentSession' part of global actor 'MainActor'
   |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
16 |
17 |   /// Current session.
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/SSpec.swift:21:14: warning: static property 'reporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
19 |
20 |   /// Current reporter.
21 |   static var reporter: Reporter = .Dot
   |              |- warning: static property 'reporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |              |- note: convert 'reporter' to a 'let' constant to make 'Sendable' shared state immutable
   |              |- note: add '@MainActor' to make static property 'reporter' part of global actor 'MainActor'
   |              `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
22 |
23 |   /// You use this method only once for running sessions.
[26/47] Compiling SSpec ToString.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/SSpec.swift:15:22: warning: static property '_currentSession' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
13 |   }
14 |
15 |   private static var _currentSession: SSSession?
   |                      |- warning: static property '_currentSession' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                      |- note: convert '_currentSession' to a 'let' constant to make 'Sendable' shared state immutable
   |                      |- note: add '@MainActor' to make static property '_currentSession' part of global actor 'MainActor'
   |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
16 |
17 |   /// Current session.
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/SSpec.swift:21:14: warning: static property 'reporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
19 |
20 |   /// Current reporter.
21 |   static var reporter: Reporter = .Dot
   |              |- warning: static property 'reporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |              |- note: convert 'reporter' to a 'let' constant to make 'Sendable' shared state immutable
   |              |- note: add '@MainActor' to make static property 'reporter' part of global actor 'MainActor'
   |              `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
22 |
23 |   /// You use this method only once for running sessions.
[27/47] Compiling SSpec SSpec.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/SSpec.swift:15:22: warning: static property '_currentSession' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
13 |   }
14 |
15 |   private static var _currentSession: SSSession?
   |                      |- warning: static property '_currentSession' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                      |- note: convert '_currentSession' to a 'let' constant to make 'Sendable' shared state immutable
   |                      |- note: add '@MainActor' to make static property '_currentSession' part of global actor 'MainActor'
   |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
16 |
17 |   /// Current session.
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/SSpec.swift:21:14: warning: static property 'reporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
19 |
20 |   /// Current reporter.
21 |   static var reporter: Reporter = .Dot
   |              |- warning: static property 'reporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |              |- note: convert 'reporter' to a 'let' constant to make 'Sendable' shared state immutable
   |              |- note: add '@MainActor' to make static property 'reporter' part of global actor 'MainActor'
   |              `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
22 |
23 |   /// You use this method only once for running sessions.
[28/47] Compiling SSpec SpecReporter.swift
[29/47] Compiling SSpec TimeTaken.swift
[30/47] Compiling SSpec Welcomer.swift
[31/47] Compiling SSpec Describe.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
[32/47] Compiling SSpec Example.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
[33/47] Compiling SSpec Array.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Expectations/Array.swift:18:32: warning: use of protocol 'Equatable' as a type must be written 'any Equatable'; this will be an error in a future Swift language mode
16 |
17 | /// Expectations for equatable arrays.
18 | extension SSExpect where T == [Equatable] {
   |                                `- warning: use of protocol 'Equatable' as a type must be written 'any Equatable'; this will be an error in a future Swift language mode
19 |   private func areEqual<X: Equatable>(_ a: T?, _ b: [X]) -> Bool {
20 |     guard let A = a as? [X] else { return false }
[34/47] Compiling SSpec Bool.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Expectations/Array.swift:18:32: warning: use of protocol 'Equatable' as a type must be written 'any Equatable'; this will be an error in a future Swift language mode
16 |
17 | /// Expectations for equatable arrays.
18 | extension SSExpect where T == [Equatable] {
   |                                `- warning: use of protocol 'Equatable' as a type must be written 'any Equatable'; this will be an error in a future Swift language mode
19 |   private func areEqual<X: Equatable>(_ a: T?, _ b: [X]) -> Bool {
20 |     guard let A = a as? [X] else { return false }
[35/47] Compiling SSpec Change.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Expectations/Array.swift:18:32: warning: use of protocol 'Equatable' as a type must be written 'any Equatable'; this will be an error in a future Swift language mode
16 |
17 | /// Expectations for equatable arrays.
18 | extension SSExpect where T == [Equatable] {
   |                                `- warning: use of protocol 'Equatable' as a type must be written 'any Equatable'; this will be an error in a future Swift language mode
19 |   private func areEqual<X: Equatable>(_ a: T?, _ b: [X]) -> Bool {
20 |     guard let A = a as? [X] else { return false }
[36/47] Compiling SSpec IdGenerator.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/IdGenerator.swift:3:22: warning: static property 'lastId' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 1 | /// Consequtive id generator.
 2 | struct IdGenerator {
 3 |   private static var lastId: Int = 0
   |                      |- warning: static property 'lastId' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                      |- note: convert 'lastId' to a 'let' constant to make 'Sendable' shared state immutable
   |                      |- note: add '@MainActor' to make static property 'lastId' part of global actor 'MainActor'
   |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 4 |
 5 |   static var nextId: Int {
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:4:14: warning: static property 'current' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  2 | class Node: Equatable, Hashable {
  3 |   /// Current node: used for running examples.
  4 |   static var current: Node? = nil
    |              |- warning: static property 'current' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |              |- note: convert 'current' to a 'let' constant to make 'Sendable' shared state immutable
    |              |- note: add '@MainActor' to make static property 'current' part of global actor 'MainActor'
    |              `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  5 |
  6 |   /// Equatable implementation.
[37/47] Compiling SSpec Node.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/IdGenerator.swift:3:22: warning: static property 'lastId' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 1 | /// Consequtive id generator.
 2 | struct IdGenerator {
 3 |   private static var lastId: Int = 0
   |                      |- warning: static property 'lastId' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                      |- note: convert 'lastId' to a 'let' constant to make 'Sendable' shared state immutable
   |                      |- note: add '@MainActor' to make static property 'lastId' part of global actor 'MainActor'
   |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 4 |
 5 |   static var nextId: Int {
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:4:14: warning: static property 'current' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  2 | class Node: Equatable, Hashable {
  3 |   /// Current node: used for running examples.
  4 |   static var current: Node? = nil
    |              |- warning: static property 'current' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |              |- note: convert 'current' to a 'let' constant to make 'Sendable' shared state immutable
    |              |- note: add '@MainActor' to make static property 'current' part of global actor 'MainActor'
    |              `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  5 |
  6 |   /// Equatable implementation.
[38/47] Compiling SSpec After.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
[39/47] Compiling SSpec Before.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
[40/47] Compiling SSpec Events.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
[41/47] Compiling SSpec Session.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
[42/47] Compiling SSpec Tree.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
[43/47] Compiling SSpec DotReporter.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
[44/47] Compiling SSpec ProgressReporter.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
[45/47] Compiling SSpec Reporter.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
[46/47] Compiling SSpec Root.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
[47/47] Compiling SSpec Version.swift
/Users/admin/builder/spi-builder-workspace/Sources/SSpec/Tree/Node.swift:52:7: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 50 |   }
 51 |
 52 |   var hashValue: Int {
    |       `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Node' to 'Hashable' by implementing 'hash(into:)' instead
 53 |     return id
 54 |   }
Build complete! (7.78s)
Updating https://github.com/jkandzi/Progress.swift
Updating https://github.com/onevcat/Rainbow
Updated https://github.com/onevcat/Rainbow (0.42s)
Updated https://github.com/jkandzi/Progress.swift (0.42s)
Computing version for https://github.com/jkandzi/Progress.swift
Computed https://github.com/jkandzi/Progress.swift at 0.4.0 (1.01s)
Computing version for https://github.com/onevcat/Rainbow
Computed https://github.com/onevcat/Rainbow at 3.2.0 (0.54s)
Creating working copy for https://github.com/jkandzi/Progress.swift
Working copy of https://github.com/jkandzi/Progress.swift resolved at 0.4.0
Creating working copy for https://github.com/onevcat/Rainbow
Working copy of https://github.com/onevcat/Rainbow resolved at 3.2.0
Build complete.
{
  "dependencies" : [
    {
      "identity" : "rainbow",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "3.0.0",
            "upper_bound" : "4.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/onevcat/Rainbow"
    },
    {
      "identity" : "progress.swift",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.3.0",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/jkandzi/Progress.swift"
    }
  ],
  "manifest_display_name" : "SSpec",
  "name" : "SSpec",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "SSpec",
      "targets" : [
        "SSpec"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "SSpecTests",
      "module_type" : "SwiftTarget",
      "name" : "SSpecTests",
      "path" : "Tests/SSpecTests",
      "sources" : [
        "Extensions/DummyExtension.swift",
        "General/ArraySpec.swift",
        "General/BeforeAfterSpec.swift",
        "General/BoolSpec.swift",
        "General/EquatableSpec.swift",
        "General/NilableSpec.swift",
        "General/StringSpec.swift",
        "SSpec/ExtensionSpec.swift",
        "SSpec/NodeSpec.swift",
        "SSpec/SessionSpec.swift",
        "SSpec/VersionSpec.swift",
        "SSpecTests.swift"
      ],
      "target_dependencies" : [
        "SSpec"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SSpec",
      "module_type" : "SwiftTarget",
      "name" : "SSpec",
      "path" : "Sources/SSpec",
      "product_dependencies" : [
        "Rainbow",
        "Progress"
      ],
      "product_memberships" : [
        "SSpec"
      ],
      "sources" : [
        "Collectors/DotReporter.swift",
        "Collectors/ProgressReporter.swift",
        "Collectors/Reporter.swift",
        "Collectors/SpecReporter.swift",
        "Collectors/TimeTaken.swift",
        "Collectors/Welcomer.swift",
        "Expectations/Array.swift",
        "Expectations/Bool.swift",
        "Expectations/Change.swift",
        "Expectations/Comparable.swift",
        "Expectations/Equatable.swift",
        "Expectations/Generic.swift",
        "Expectations/String.swift",
        "Expectations/ToString.swift",
        "SSpec.swift",
        "Session/Events.swift",
        "Session/Session.swift",
        "Session/Tree.swift",
        "Tree/After.swift",
        "Tree/Before.swift",
        "Tree/Describe.swift",
        "Tree/Example.swift",
        "Tree/IdGenerator.swift",
        "Tree/Node.swift",
        "Tree/Root.swift",
        "Version.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "4.0"
}
Done.