Build Information
Successful build of swift-quiz, reference 0.1.0 (0dd29d
), with Swift 6.1 for macOS (SPM) on 26 Apr 2025 02:55:03 UTC.
Swift 6 data race errors: 0
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/rwbutler/swift-quiz.git
Reference: 0.1.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/rwbutler/swift-quiz
* tag 0.1.0 -> FETCH_HEAD
HEAD is now at 0dd29d1 Allow scoring rules for all question types
Cloned https://github.com/rwbutler/swift-quiz.git
Revision (git rev-parse @):
0dd29d1ffa56d7c63470a9bd1d8dd01328ec7655
SUCCESS checkout https://github.com/rwbutler/swift-quiz.git at 0.1.0
Fetching https://github.com/krisk/fuse-swift
Fetching https://github.com/rwbutler/LetterCase
Fetching https://github.com/rwbutler/Hash
[14/691] Fetching fuse-swift
[98/1008] Fetching fuse-swift, lettercase
[270/1293] Fetching fuse-swift, lettercase, hash
Fetched https://github.com/rwbutler/Hash from cache (0.91s)
Fetched https://github.com/krisk/fuse-swift from cache (0.91s)
Fetched https://github.com/rwbutler/LetterCase from cache (0.91s)
Computing version for https://github.com/krisk/fuse-swift
Computed https://github.com/krisk/fuse-swift at 1.4.0 (1.50s)
Computing version for https://github.com/rwbutler/Hash
Computed https://github.com/rwbutler/Hash at 1.5.0 (2.77s)
Computing version for https://github.com/rwbutler/LetterCase
Computed https://github.com/rwbutler/LetterCase at 1.6.1 (0.53s)
Creating working copy for https://github.com/rwbutler/LetterCase
Working copy of https://github.com/rwbutler/LetterCase resolved at 1.6.1
Creating working copy for https://github.com/krisk/fuse-swift
Working copy of https://github.com/krisk/fuse-swift resolved at 1.4.0
Creating working copy for https://github.com/rwbutler/Hash
Working copy of https://github.com/rwbutler/Hash resolved at 1.5.0
========================================
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-quiz",
"name": "swift-quiz",
"url": "https://github.com/rwbutler/swift-quiz.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-quiz",
"dependencies": [
{
"identity": "hash",
"name": "Hash",
"url": "https://github.com/rwbutler/Hash",
"version": "1.5.0",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Hash",
"dependencies": [
]
},
{
"identity": "lettercase",
"name": "LetterCase",
"url": "https://github.com/rwbutler/LetterCase",
"version": "1.6.1",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/LetterCase",
"dependencies": [
]
},
{
"identity": "fuse-swift",
"name": "Fuse",
"url": "https://github.com/krisk/fuse-swift",
"version": "1.4.0",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/fuse-swift",
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/rwbutler/swift-quiz.git
[6/256] Fetching swift-quiz
Fetched https://github.com/rwbutler/swift-quiz.git from cache (0.94s)
Fetching https://github.com/rwbutler/Hash from cache
Fetching https://github.com/rwbutler/LetterCase from cache
Fetching https://github.com/krisk/fuse-swift from cache
Fetched https://github.com/rwbutler/Hash from cache (0.55s)
Fetched https://github.com/rwbutler/LetterCase from cache (0.55s)
Fetched https://github.com/krisk/fuse-swift from cache (0.55s)
Computing version for https://github.com/krisk/fuse-swift
Computed https://github.com/krisk/fuse-swift at 1.4.0 (0.61s)
Computing version for https://github.com/rwbutler/Hash
Computed https://github.com/rwbutler/Hash at 1.5.0 (0.03s)
Computing version for https://github.com/rwbutler/LetterCase
Computed https://github.com/rwbutler/LetterCase at 1.6.1 (0.02s)
Creating working copy for https://github.com/krisk/fuse-swift
Working copy of https://github.com/krisk/fuse-swift resolved at 1.4.0
Creating working copy for https://github.com/rwbutler/Hash
Working copy of https://github.com/rwbutler/Hash resolved at 1.5.0
Creating working copy for https://github.com/rwbutler/swift-quiz.git
Working copy of https://github.com/rwbutler/swift-quiz.git resolved at 0.1.0 (0dd29d1)
Creating working copy for https://github.com/rwbutler/LetterCase
Working copy of https://github.com/rwbutler/LetterCase resolved at 1.6.1
warning: '.resolve-product-dependencies': dependency 'swift-quiz' is not used by any target
Found 3 product dependencies
- Hash
- LetterCase
- Fuse
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/rwbutler/swift-quiz.git
https://github.com/rwbutler/swift-quiz.git
{
"dependencies" : [
{
"identity" : "hash",
"requirement" : {
"range" : [
{
"lower_bound" : "1.4.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/rwbutler/Hash"
},
{
"identity" : "lettercase",
"requirement" : {
"range" : [
{
"lower_bound" : "1.3.1",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/rwbutler/LetterCase"
},
{
"identity" : "fuse-swift",
"requirement" : {
"range" : [
{
"lower_bound" : "1.4.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/krisk/fuse-swift"
}
],
"manifest_display_name" : "swift-quiz",
"name" : "swift-quiz",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "8.0"
},
{
"name" : "macos",
"version" : "10.13"
}
],
"products" : [
{
"name" : "SwiftQuiz",
"targets" : [
"SwiftQuiz"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "SwiftQuiz",
"module_type" : "SwiftTarget",
"name" : "SwiftQuiz",
"path" : "code",
"product_dependencies" : [
"Hash",
"LetterCase",
"Fuse"
],
"product_memberships" : [
"SwiftQuiz"
],
"sources" : [
"SwiftQuiz.swift",
"combine/Publishers.swift",
"combine/QuizPublisher.swift",
"combine/QuizSubscription.swift",
"extensions/ArrayAdditions.swift",
"extensions/StringAdditions.swift",
"model/CodableError.swift",
"model/MultipleAnswer.swift",
"model/MultipleChoice.swift",
"model/PackageQuizResult.swift",
"model/PackagingError.swift",
"model/Question.swift",
"model/Quiz.swift",
"model/QuizConfiguration.swift",
"model/QuizError.swift",
"model/QuizEvent.swift",
"model/QuizType.swift",
"model/Round.swift",
"model/ShortAnswer.swift",
"services/QuizServices.swift",
"services/access-control/definition/AccessControlService.swift",
"services/access-control/implementation/DefaultAccessControlService.swift",
"services/access-control/model/Flagpole.swift",
"services/images/definition/ImagesService.swift",
"services/marking/definition/MarkingService.swift",
"services/marking/implementation/DefaultMarkingService.swift",
"services/marking/model/MarkingFrequency.swift",
"services/marking/model/MarkingSubmission.swift",
"services/messaging/definition/MessagingService.swift",
"services/messaging/implementation/SlackMessagingService.swift",
"services/parsing/definition/ParsingService.swift",
"services/parsing/implementation/CodableParsingService.swift",
"services/parsing/model/QuestionModel.swift",
"services/parsing/model/QuizModel.swift",
"services/parsing/model/RoundModel.swift",
"shell/Command.swift",
"shell/QuizFactory.swift"
],
"type" : "library"
}
],
"tools_version" : "5.1"
}
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/5] Write sources
[4/5] Write swift-version-2F0A5646E1D333AE.txt
[6/24] Compiling Hash StringAdditions.swift
[7/25] Compiling Hash StringRepresentable.swift
[8/25] Compiling Hash DataAdditions.swift
[9/25] Compiling Hash Hash.swift
[10/25] Compiling Hash HashAlgorithm.swift
[11/25] Compiling Fuse FuseUtilities.swift
[12/25] Compiling Fuse String+Fuse.swift
[13/25] Compiling Fuse Fuse.swift
[14/25] Emitting module Fuse
[15/25] Compiling Hash HMAC.swift
[16/25] Compiling Hash Cryptable.swift
[17/25] Compiling Hash DecryptedData.swift
[18/25] Compiling Hash EncryptedData.swift
[19/25] Emitting module Hash
[20/25] Compiling Hash EncryptionAlgorithm.swift
[21/25] Compiling LetterCase LetterCase.swift
[22/25] Compiling LetterCase StringAdditions.swift
[23/25] Compiling LetterCase LetterCaseOptions.swift
[24/25] Emitting module LetterCase
[25/25] Compiling LetterCase KeyDecodingStrategyAdditions.swift
[26/60] Emitting module SwiftQuiz
/Users/admin/builder/spi-builder-workspace/code/model/PackageQuizResult.swift:10:1: warning: extension declares a conformance of imported type 'Result' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
8 | import Foundation
9 |
10 | extension SwiftQuiz.PackageQuizResult: CustomStringConvertible {
| |- warning: extension declares a conformance of imported type 'Result' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
11 | public var description: String {
12 | switch self {
[27/63] Compiling SwiftQuiz MultipleChoice.swift
/Users/admin/builder/spi-builder-workspace/code/model/PackageQuizResult.swift:10:1: warning: extension declares a conformance of imported type 'Result' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
8 | import Foundation
9 |
10 | extension SwiftQuiz.PackageQuizResult: CustomStringConvertible {
| |- warning: extension declares a conformance of imported type 'Result' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
11 | public var description: String {
12 | switch self {
[28/63] Compiling SwiftQuiz PackageQuizResult.swift
/Users/admin/builder/spi-builder-workspace/code/model/PackageQuizResult.swift:10:1: warning: extension declares a conformance of imported type 'Result' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
8 | import Foundation
9 |
10 | extension SwiftQuiz.PackageQuizResult: CustomStringConvertible {
| |- warning: extension declares a conformance of imported type 'Result' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
11 | public var description: String {
12 | switch self {
[29/63] Compiling SwiftQuiz PackagingError.swift
/Users/admin/builder/spi-builder-workspace/code/model/PackageQuizResult.swift:10:1: warning: extension declares a conformance of imported type 'Result' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
8 | import Foundation
9 |
10 | extension SwiftQuiz.PackageQuizResult: CustomStringConvertible {
| |- warning: extension declares a conformance of imported type 'Result' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
11 | public var description: String {
12 | switch self {
[30/63] Compiling SwiftQuiz Question.swift
/Users/admin/builder/spi-builder-workspace/code/model/PackageQuizResult.swift:10:1: warning: extension declares a conformance of imported type 'Result' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
8 | import Foundation
9 |
10 | extension SwiftQuiz.PackageQuizResult: CustomStringConvertible {
| |- warning: extension declares a conformance of imported type 'Result' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
11 | public var description: String {
12 | switch self {
[31/63] Compiling SwiftQuiz MessagingService.swift
/Users/admin/builder/spi-builder-workspace/code/services/messaging/implementation/SlackMessagingService.swift:29:17: warning: capture of 'completion' with non-sendable type '() -> Void' in a '@Sendable' closure
27 | guard let data = data, error == nil else {
28 | print(String(describing: error))
29 | completion()
| |- warning: capture of 'completion' with non-sendable type '() -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 | return
31 | }
[32/63] Compiling SwiftQuiz SlackMessagingService.swift
/Users/admin/builder/spi-builder-workspace/code/services/messaging/implementation/SlackMessagingService.swift:29:17: warning: capture of 'completion' with non-sendable type '() -> Void' in a '@Sendable' closure
27 | guard let data = data, error == nil else {
28 | print(String(describing: error))
29 | completion()
| |- warning: capture of 'completion' with non-sendable type '() -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 | return
31 | }
[33/63] Compiling SwiftQuiz ParsingService.swift
/Users/admin/builder/spi-builder-workspace/code/services/messaging/implementation/SlackMessagingService.swift:29:17: warning: capture of 'completion' with non-sendable type '() -> Void' in a '@Sendable' closure
27 | guard let data = data, error == nil else {
28 | print(String(describing: error))
29 | completion()
| |- warning: capture of 'completion' with non-sendable type '() -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 | return
31 | }
[34/63] Compiling SwiftQuiz CodableParsingService.swift
[35/63] Compiling SwiftQuiz QuestionModel.swift
[36/63] Compiling SwiftQuiz QuizModel.swift
[37/63] Compiling SwiftQuiz AccessControlService.swift
/Users/admin/builder/spi-builder-workspace/code/services/access-control/implementation/DefaultAccessControlService.swift:37:17: warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in a '@Sendable' closure
9 | import LetterCase
10 |
11 | class DefaultAccessControlService: AccessControlService {
| `- note: class 'DefaultAccessControlService' does not conform to the 'Sendable' protocol
12 |
13 | private var quizType: QuizType {
:
35 | decoder.keyDecodingStrategy = .convertFromKebabCase
36 | if let model = try? decoder.decode(Flagpole.self, from: data) {
37 | self?.updateACLs(with: model.accessToken)
| `- warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in a '@Sendable' closure
38 | let identifiers: [UUID] = self?.completions.keys.compactMap { $0 } ?? []
39 | identifiers.forEach { identifier in
/Users/admin/builder/spi-builder-workspace/code/services/access-control/implementation/DefaultAccessControlService.swift:40:38: warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in an isolated closure; this is an error in the Swift 6 language mode
9 | import LetterCase
10 |
11 | class DefaultAccessControlService: AccessControlService {
| `- note: class 'DefaultAccessControlService' does not conform to the 'Sendable' protocol
12 |
13 | private var quizType: QuizType {
:
38 | let identifiers: [UUID] = self?.completions.keys.compactMap { $0 } ?? []
39 | identifiers.forEach { identifier in
40 | let isUnlocked = self?.isUnlockedSync(identifier) == true
| `- warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in an isolated closure; this is an error in the Swift 6 language mode
41 | self?.completions[identifier]?(isUnlocked)
42 | if isUnlocked {
/Users/admin/builder/spi-builder-workspace/code/services/access-control/implementation/DefaultAccessControlService.swift:71:33: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
69 | self.timer = timer
70 | DispatchQueue.main.async {
71 | RunLoop.current.add(timer, forMode: RunLoop.Mode.common)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'timer' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
72 | }
73 | } else {
[38/63] Compiling SwiftQuiz DefaultAccessControlService.swift
/Users/admin/builder/spi-builder-workspace/code/services/access-control/implementation/DefaultAccessControlService.swift:37:17: warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in a '@Sendable' closure
9 | import LetterCase
10 |
11 | class DefaultAccessControlService: AccessControlService {
| `- note: class 'DefaultAccessControlService' does not conform to the 'Sendable' protocol
12 |
13 | private var quizType: QuizType {
:
35 | decoder.keyDecodingStrategy = .convertFromKebabCase
36 | if let model = try? decoder.decode(Flagpole.self, from: data) {
37 | self?.updateACLs(with: model.accessToken)
| `- warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in a '@Sendable' closure
38 | let identifiers: [UUID] = self?.completions.keys.compactMap { $0 } ?? []
39 | identifiers.forEach { identifier in
/Users/admin/builder/spi-builder-workspace/code/services/access-control/implementation/DefaultAccessControlService.swift:40:38: warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in an isolated closure; this is an error in the Swift 6 language mode
9 | import LetterCase
10 |
11 | class DefaultAccessControlService: AccessControlService {
| `- note: class 'DefaultAccessControlService' does not conform to the 'Sendable' protocol
12 |
13 | private var quizType: QuizType {
:
38 | let identifiers: [UUID] = self?.completions.keys.compactMap { $0 } ?? []
39 | identifiers.forEach { identifier in
40 | let isUnlocked = self?.isUnlockedSync(identifier) == true
| `- warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in an isolated closure; this is an error in the Swift 6 language mode
41 | self?.completions[identifier]?(isUnlocked)
42 | if isUnlocked {
/Users/admin/builder/spi-builder-workspace/code/services/access-control/implementation/DefaultAccessControlService.swift:71:33: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
69 | self.timer = timer
70 | DispatchQueue.main.async {
71 | RunLoop.current.add(timer, forMode: RunLoop.Mode.common)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'timer' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
72 | }
73 | } else {
[39/63] Compiling SwiftQuiz Flagpole.swift
/Users/admin/builder/spi-builder-workspace/code/services/access-control/implementation/DefaultAccessControlService.swift:37:17: warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in a '@Sendable' closure
9 | import LetterCase
10 |
11 | class DefaultAccessControlService: AccessControlService {
| `- note: class 'DefaultAccessControlService' does not conform to the 'Sendable' protocol
12 |
13 | private var quizType: QuizType {
:
35 | decoder.keyDecodingStrategy = .convertFromKebabCase
36 | if let model = try? decoder.decode(Flagpole.self, from: data) {
37 | self?.updateACLs(with: model.accessToken)
| `- warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in a '@Sendable' closure
38 | let identifiers: [UUID] = self?.completions.keys.compactMap { $0 } ?? []
39 | identifiers.forEach { identifier in
/Users/admin/builder/spi-builder-workspace/code/services/access-control/implementation/DefaultAccessControlService.swift:40:38: warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in an isolated closure; this is an error in the Swift 6 language mode
9 | import LetterCase
10 |
11 | class DefaultAccessControlService: AccessControlService {
| `- note: class 'DefaultAccessControlService' does not conform to the 'Sendable' protocol
12 |
13 | private var quizType: QuizType {
:
38 | let identifiers: [UUID] = self?.completions.keys.compactMap { $0 } ?? []
39 | identifiers.forEach { identifier in
40 | let isUnlocked = self?.isUnlockedSync(identifier) == true
| `- warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in an isolated closure; this is an error in the Swift 6 language mode
41 | self?.completions[identifier]?(isUnlocked)
42 | if isUnlocked {
/Users/admin/builder/spi-builder-workspace/code/services/access-control/implementation/DefaultAccessControlService.swift:71:33: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
69 | self.timer = timer
70 | DispatchQueue.main.async {
71 | RunLoop.current.add(timer, forMode: RunLoop.Mode.common)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'timer' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
72 | }
73 | } else {
[40/63] Compiling SwiftQuiz ImagesService.swift
/Users/admin/builder/spi-builder-workspace/code/services/access-control/implementation/DefaultAccessControlService.swift:37:17: warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in a '@Sendable' closure
9 | import LetterCase
10 |
11 | class DefaultAccessControlService: AccessControlService {
| `- note: class 'DefaultAccessControlService' does not conform to the 'Sendable' protocol
12 |
13 | private var quizType: QuizType {
:
35 | decoder.keyDecodingStrategy = .convertFromKebabCase
36 | if let model = try? decoder.decode(Flagpole.self, from: data) {
37 | self?.updateACLs(with: model.accessToken)
| `- warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in a '@Sendable' closure
38 | let identifiers: [UUID] = self?.completions.keys.compactMap { $0 } ?? []
39 | identifiers.forEach { identifier in
/Users/admin/builder/spi-builder-workspace/code/services/access-control/implementation/DefaultAccessControlService.swift:40:38: warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in an isolated closure; this is an error in the Swift 6 language mode
9 | import LetterCase
10 |
11 | class DefaultAccessControlService: AccessControlService {
| `- note: class 'DefaultAccessControlService' does not conform to the 'Sendable' protocol
12 |
13 | private var quizType: QuizType {
:
38 | let identifiers: [UUID] = self?.completions.keys.compactMap { $0 } ?? []
39 | identifiers.forEach { identifier in
40 | let isUnlocked = self?.isUnlockedSync(identifier) == true
| `- warning: capture of 'self' with non-sendable type 'DefaultAccessControlService?' in an isolated closure; this is an error in the Swift 6 language mode
41 | self?.completions[identifier]?(isUnlocked)
42 | if isUnlocked {
/Users/admin/builder/spi-builder-workspace/code/services/access-control/implementation/DefaultAccessControlService.swift:71:33: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
69 | self.timer = timer
70 | DispatchQueue.main.async {
71 | RunLoop.current.add(timer, forMode: RunLoop.Mode.common)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'timer' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
72 | }
73 | } else {
[41/63] Compiling SwiftQuiz RoundModel.swift
[42/63] Compiling SwiftQuiz Command.swift
[43/63] Compiling SwiftQuiz QuizFactory.swift
[44/63] Compiling SwiftQuiz Quiz.swift
[45/63] Compiling SwiftQuiz QuizConfiguration.swift
[46/63] Compiling SwiftQuiz QuizError.swift
[47/63] Compiling SwiftQuiz QuizEvent.swift
[48/63] Compiling SwiftQuiz SwiftQuiz.swift
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:346:17: warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
12 | typealias QuestionKey = UUID
13 |
14 | public class SwiftQuiz {
| `- note: class 'SwiftQuiz' does not conform to the 'Sendable' protocol
15 |
16 | public typealias PackageQuizResult = Result<Void, Error>
:
344 | internalQueue.async { [weak self] in
345 | do {
346 | self?.quizData = try Data(contentsOf: quizURL)
| `- warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
347 | if let quizData = self?.quizData {
348 | if let key = key {
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:362:13: warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
12 | typealias QuestionKey = UUID
13 |
14 | public class SwiftQuiz {
| `- note: class 'SwiftQuiz' does not conform to the 'Sendable' protocol
15 |
16 | public typealias PackageQuizResult = Result<Void, Error>
:
360 | private func invokeCallback(with event: QuizEvent) {
361 | let nextOperation = BlockOperation { [weak self] in
362 | self?.eventCallbacks.forEach { callback in
| `- warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
363 | callback(event)
364 | }
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:363:26: warning: capture of 'event' with non-sendable type 'QuizEvent' in a '@Sendable' closure
361 | let nextOperation = BlockOperation { [weak self] in
362 | self?.eventCallbacks.forEach { callback in
363 | callback(event)
| `- warning: capture of 'event' with non-sendable type 'QuizEvent' in a '@Sendable' closure
364 | }
365 | }
/Users/admin/builder/spi-builder-workspace/code/model/QuizEvent.swift:11:13: note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
9 | import Foundation
10 |
11 | public enum QuizEvent: Equatable, CustomStringConvertible {
| `- note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
12 |
13 | case keyRequired
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:363:26: warning: capture of 'event' with non-sendable type 'QuizEvent' in an isolated closure; this is an error in the Swift 6 language mode
361 | let nextOperation = BlockOperation { [weak self] in
362 | self?.eventCallbacks.forEach { callback in
363 | callback(event)
| `- warning: capture of 'event' with non-sendable type 'QuizEvent' in an isolated closure; this is an error in the Swift 6 language mode
364 | }
365 | }
/Users/admin/builder/spi-builder-workspace/code/model/QuizEvent.swift:11:13: note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
9 | import Foundation
10 |
11 | public enum QuizEvent: Equatable, CustomStringConvertible {
| `- note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
12 |
13 | case keyRequired
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:375:13: warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
12 | typealias QuestionKey = UUID
13 |
14 | public class SwiftQuiz {
| `- note: class 'SwiftQuiz' does not conform to the 'Sendable' protocol
15 |
16 | public typealias PackageQuizResult = Result<Void, Error>
:
373 | private func invokeCallback(with error: QuizError) {
374 | externalQueue.async { [weak self] in
375 | self?.errorCallbacks.forEach { callback in
| `- warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
376 | callback(error)
377 | }
[49/63] Compiling SwiftQuiz Publishers.swift
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:346:17: warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
12 | typealias QuestionKey = UUID
13 |
14 | public class SwiftQuiz {
| `- note: class 'SwiftQuiz' does not conform to the 'Sendable' protocol
15 |
16 | public typealias PackageQuizResult = Result<Void, Error>
:
344 | internalQueue.async { [weak self] in
345 | do {
346 | self?.quizData = try Data(contentsOf: quizURL)
| `- warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
347 | if let quizData = self?.quizData {
348 | if let key = key {
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:362:13: warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
12 | typealias QuestionKey = UUID
13 |
14 | public class SwiftQuiz {
| `- note: class 'SwiftQuiz' does not conform to the 'Sendable' protocol
15 |
16 | public typealias PackageQuizResult = Result<Void, Error>
:
360 | private func invokeCallback(with event: QuizEvent) {
361 | let nextOperation = BlockOperation { [weak self] in
362 | self?.eventCallbacks.forEach { callback in
| `- warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
363 | callback(event)
364 | }
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:363:26: warning: capture of 'event' with non-sendable type 'QuizEvent' in a '@Sendable' closure
361 | let nextOperation = BlockOperation { [weak self] in
362 | self?.eventCallbacks.forEach { callback in
363 | callback(event)
| `- warning: capture of 'event' with non-sendable type 'QuizEvent' in a '@Sendable' closure
364 | }
365 | }
/Users/admin/builder/spi-builder-workspace/code/model/QuizEvent.swift:11:13: note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
9 | import Foundation
10 |
11 | public enum QuizEvent: Equatable, CustomStringConvertible {
| `- note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
12 |
13 | case keyRequired
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:363:26: warning: capture of 'event' with non-sendable type 'QuizEvent' in an isolated closure; this is an error in the Swift 6 language mode
361 | let nextOperation = BlockOperation { [weak self] in
362 | self?.eventCallbacks.forEach { callback in
363 | callback(event)
| `- warning: capture of 'event' with non-sendable type 'QuizEvent' in an isolated closure; this is an error in the Swift 6 language mode
364 | }
365 | }
/Users/admin/builder/spi-builder-workspace/code/model/QuizEvent.swift:11:13: note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
9 | import Foundation
10 |
11 | public enum QuizEvent: Equatable, CustomStringConvertible {
| `- note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
12 |
13 | case keyRequired
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:375:13: warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
12 | typealias QuestionKey = UUID
13 |
14 | public class SwiftQuiz {
| `- note: class 'SwiftQuiz' does not conform to the 'Sendable' protocol
15 |
16 | public typealias PackageQuizResult = Result<Void, Error>
:
373 | private func invokeCallback(with error: QuizError) {
374 | externalQueue.async { [weak self] in
375 | self?.errorCallbacks.forEach { callback in
| `- warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
376 | callback(error)
377 | }
[50/63] Compiling SwiftQuiz QuizPublisher.swift
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:346:17: warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
12 | typealias QuestionKey = UUID
13 |
14 | public class SwiftQuiz {
| `- note: class 'SwiftQuiz' does not conform to the 'Sendable' protocol
15 |
16 | public typealias PackageQuizResult = Result<Void, Error>
:
344 | internalQueue.async { [weak self] in
345 | do {
346 | self?.quizData = try Data(contentsOf: quizURL)
| `- warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
347 | if let quizData = self?.quizData {
348 | if let key = key {
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:362:13: warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
12 | typealias QuestionKey = UUID
13 |
14 | public class SwiftQuiz {
| `- note: class 'SwiftQuiz' does not conform to the 'Sendable' protocol
15 |
16 | public typealias PackageQuizResult = Result<Void, Error>
:
360 | private func invokeCallback(with event: QuizEvent) {
361 | let nextOperation = BlockOperation { [weak self] in
362 | self?.eventCallbacks.forEach { callback in
| `- warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
363 | callback(event)
364 | }
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:363:26: warning: capture of 'event' with non-sendable type 'QuizEvent' in a '@Sendable' closure
361 | let nextOperation = BlockOperation { [weak self] in
362 | self?.eventCallbacks.forEach { callback in
363 | callback(event)
| `- warning: capture of 'event' with non-sendable type 'QuizEvent' in a '@Sendable' closure
364 | }
365 | }
/Users/admin/builder/spi-builder-workspace/code/model/QuizEvent.swift:11:13: note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
9 | import Foundation
10 |
11 | public enum QuizEvent: Equatable, CustomStringConvertible {
| `- note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
12 |
13 | case keyRequired
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:363:26: warning: capture of 'event' with non-sendable type 'QuizEvent' in an isolated closure; this is an error in the Swift 6 language mode
361 | let nextOperation = BlockOperation { [weak self] in
362 | self?.eventCallbacks.forEach { callback in
363 | callback(event)
| `- warning: capture of 'event' with non-sendable type 'QuizEvent' in an isolated closure; this is an error in the Swift 6 language mode
364 | }
365 | }
/Users/admin/builder/spi-builder-workspace/code/model/QuizEvent.swift:11:13: note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
9 | import Foundation
10 |
11 | public enum QuizEvent: Equatable, CustomStringConvertible {
| `- note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
12 |
13 | case keyRequired
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:375:13: warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
12 | typealias QuestionKey = UUID
13 |
14 | public class SwiftQuiz {
| `- note: class 'SwiftQuiz' does not conform to the 'Sendable' protocol
15 |
16 | public typealias PackageQuizResult = Result<Void, Error>
:
373 | private func invokeCallback(with error: QuizError) {
374 | externalQueue.async { [weak self] in
375 | self?.errorCallbacks.forEach { callback in
| `- warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
376 | callback(error)
377 | }
[51/63] Compiling SwiftQuiz QuizSubscription.swift
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:346:17: warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
12 | typealias QuestionKey = UUID
13 |
14 | public class SwiftQuiz {
| `- note: class 'SwiftQuiz' does not conform to the 'Sendable' protocol
15 |
16 | public typealias PackageQuizResult = Result<Void, Error>
:
344 | internalQueue.async { [weak self] in
345 | do {
346 | self?.quizData = try Data(contentsOf: quizURL)
| `- warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
347 | if let quizData = self?.quizData {
348 | if let key = key {
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:362:13: warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
12 | typealias QuestionKey = UUID
13 |
14 | public class SwiftQuiz {
| `- note: class 'SwiftQuiz' does not conform to the 'Sendable' protocol
15 |
16 | public typealias PackageQuizResult = Result<Void, Error>
:
360 | private func invokeCallback(with event: QuizEvent) {
361 | let nextOperation = BlockOperation { [weak self] in
362 | self?.eventCallbacks.forEach { callback in
| `- warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
363 | callback(event)
364 | }
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:363:26: warning: capture of 'event' with non-sendable type 'QuizEvent' in a '@Sendable' closure
361 | let nextOperation = BlockOperation { [weak self] in
362 | self?.eventCallbacks.forEach { callback in
363 | callback(event)
| `- warning: capture of 'event' with non-sendable type 'QuizEvent' in a '@Sendable' closure
364 | }
365 | }
/Users/admin/builder/spi-builder-workspace/code/model/QuizEvent.swift:11:13: note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
9 | import Foundation
10 |
11 | public enum QuizEvent: Equatable, CustomStringConvertible {
| `- note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
12 |
13 | case keyRequired
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:363:26: warning: capture of 'event' with non-sendable type 'QuizEvent' in an isolated closure; this is an error in the Swift 6 language mode
361 | let nextOperation = BlockOperation { [weak self] in
362 | self?.eventCallbacks.forEach { callback in
363 | callback(event)
| `- warning: capture of 'event' with non-sendable type 'QuizEvent' in an isolated closure; this is an error in the Swift 6 language mode
364 | }
365 | }
/Users/admin/builder/spi-builder-workspace/code/model/QuizEvent.swift:11:13: note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
9 | import Foundation
10 |
11 | public enum QuizEvent: Equatable, CustomStringConvertible {
| `- note: consider making enum 'QuizEvent' conform to the 'Sendable' protocol
12 |
13 | case keyRequired
/Users/admin/builder/spi-builder-workspace/code/SwiftQuiz.swift:375:13: warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
12 | typealias QuestionKey = UUID
13 |
14 | public class SwiftQuiz {
| `- note: class 'SwiftQuiz' does not conform to the 'Sendable' protocol
15 |
16 | public typealias PackageQuizResult = Result<Void, Error>
:
373 | private func invokeCallback(with error: QuizError) {
374 | externalQueue.async { [weak self] in
375 | self?.errorCallbacks.forEach { callback in
| `- warning: capture of 'self' with non-sendable type 'SwiftQuiz?' in a '@Sendable' closure
376 | callback(error)
377 | }
[52/63] Compiling SwiftQuiz ArrayAdditions.swift
[53/63] Compiling SwiftQuiz StringAdditions.swift
[54/63] Compiling SwiftQuiz CodableError.swift
[55/63] Compiling SwiftQuiz MultipleAnswer.swift
[56/63] Compiling SwiftQuiz QuizType.swift
[57/63] Compiling SwiftQuiz Round.swift
[58/63] Compiling SwiftQuiz ShortAnswer.swift
[59/63] Compiling SwiftQuiz QuizServices.swift
[60/63] Compiling SwiftQuiz MarkingService.swift
[61/63] Compiling SwiftQuiz DefaultMarkingService.swift
[62/63] Compiling SwiftQuiz MarkingFrequency.swift
[63/63] Compiling SwiftQuiz MarkingSubmission.swift
Build complete! (9.19s)
Build complete.
{
"dependencies" : [
{
"identity" : "hash",
"requirement" : {
"range" : [
{
"lower_bound" : "1.4.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/rwbutler/Hash"
},
{
"identity" : "lettercase",
"requirement" : {
"range" : [
{
"lower_bound" : "1.3.1",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/rwbutler/LetterCase"
},
{
"identity" : "fuse-swift",
"requirement" : {
"range" : [
{
"lower_bound" : "1.4.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/krisk/fuse-swift"
}
],
"manifest_display_name" : "swift-quiz",
"name" : "swift-quiz",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "8.0"
},
{
"name" : "macos",
"version" : "10.13"
}
],
"products" : [
{
"name" : "SwiftQuiz",
"targets" : [
"SwiftQuiz"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "SwiftQuiz",
"module_type" : "SwiftTarget",
"name" : "SwiftQuiz",
"path" : "code",
"product_dependencies" : [
"Hash",
"LetterCase",
"Fuse"
],
"product_memberships" : [
"SwiftQuiz"
],
"sources" : [
"SwiftQuiz.swift",
"combine/Publishers.swift",
"combine/QuizPublisher.swift",
"combine/QuizSubscription.swift",
"extensions/ArrayAdditions.swift",
"extensions/StringAdditions.swift",
"model/CodableError.swift",
"model/MultipleAnswer.swift",
"model/MultipleChoice.swift",
"model/PackageQuizResult.swift",
"model/PackagingError.swift",
"model/Question.swift",
"model/Quiz.swift",
"model/QuizConfiguration.swift",
"model/QuizError.swift",
"model/QuizEvent.swift",
"model/QuizType.swift",
"model/Round.swift",
"model/ShortAnswer.swift",
"services/QuizServices.swift",
"services/access-control/definition/AccessControlService.swift",
"services/access-control/implementation/DefaultAccessControlService.swift",
"services/access-control/model/Flagpole.swift",
"services/images/definition/ImagesService.swift",
"services/marking/definition/MarkingService.swift",
"services/marking/implementation/DefaultMarkingService.swift",
"services/marking/model/MarkingFrequency.swift",
"services/marking/model/MarkingSubmission.swift",
"services/messaging/definition/MessagingService.swift",
"services/messaging/implementation/SlackMessagingService.swift",
"services/parsing/definition/ParsingService.swift",
"services/parsing/implementation/CodableParsingService.swift",
"services/parsing/model/QuestionModel.swift",
"services/parsing/model/QuizModel.swift",
"services/parsing/model/RoundModel.swift",
"shell/Command.swift",
"shell/QuizFactory.swift"
],
"type" : "library"
}
],
"tools_version" : "5.1"
}
Done.