Build Information
Failed to build Nifty Dice Roller, reference v0.1.1 (2d6c57
), with Swift 6.0 for Linux on 1 Nov 2024 12:49:56 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4606859-0":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete 2>&1
Build Log
========================================
RunAll
========================================
Builder version: 4.56.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/NiftyTreeStudios/Nifty-Dice-Roller-cmd.git
Reference: v0.1.1
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
From https://github.com/NiftyTreeStudios/Nifty-Dice-Roller-cmd
* tag v0.1.1 -> FETCH_HEAD
HEAD is now at 2d6c577 Modifier to be optional
Cloned https://github.com/NiftyTreeStudios/Nifty-Dice-Roller-cmd.git
Revision (git rev-parse @):
2d6c577b4c521dd48f6361fd56c7d0faa36bbce8
SUCCESS checkout https://github.com/NiftyTreeStudios/Nifty-Dice-Roller-cmd.git at v0.1.1
========================================
Build
========================================
Selected platform: linux
Swift version: 6.0
Building package at path: $PWD
https://github.com/NiftyTreeStudios/Nifty-Dice-Roller-cmd.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-0":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete 2>&1
basic-6.0-latest: Pulling from finestructure/spi-images
Digest: sha256:47d26c99ca4f1ac0a332c85fd5b13ff4390e72115219984a57a68fe9d1063a05
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.0-latest
Fetching https://github.com/apple/swift-argument-parser
[1/12353] Fetching swift-argument-parser
Fetched https://github.com/apple/swift-argument-parser from cache (0.71s)
Computing version for https://github.com/apple/swift-argument-parser
Computed https://github.com/apple/swift-argument-parser at 0.3.2 (0.51s)
Creating working copy for https://github.com/apple/swift-argument-parser
Working copy of https://github.com/apple/swift-argument-parser resolved at 0.3.2
Building for debugging...
[0/7] Write sources
[2/7] Write swift-version-24593BA9C3E375BF.txt
[4/39] Compiling ArgumentParser Option.swift
[5/39] Compiling ArgumentParser OptionGroup.swift
[6/39] Compiling ArgumentParser CommandConfiguration.swift
[7/39] Compiling ArgumentParser EnumerableFlag.swift
[8/39] Compiling ArgumentParser ExpressibleByArgument.swift
[9/43] Emitting module ArgumentParser
[10/43] Compiling ArgumentParser BashCompletionsGenerator.swift
[11/43] Compiling ArgumentParser CompletionsGenerator.swift
[12/43] Compiling ArgumentParser FishCompletionsGenerator.swift
[13/43] Compiling ArgumentParser ZshCompletionsGenerator.swift
[14/43] Compiling ArgumentParser Argument.swift
[15/43] Compiling ArgumentParser Name.swift
[16/43] Compiling ArgumentParser Parsed.swift
[17/43] Compiling ArgumentParser ParsedValues.swift
[18/43] Compiling ArgumentParser ParserError.swift
[19/43] Compiling ArgumentParser ArgumentDefinition.swift
[20/43] Compiling ArgumentParser ArgumentSet.swift
[21/43] Compiling ArgumentParser CommandParser.swift
[22/43] Compiling ArgumentParser InputOrigin.swift
[23/43] Compiling ArgumentParser ParsableArguments.swift
[24/43] Compiling ArgumentParser ParsableArgumentsValidation.swift
[25/43] Compiling ArgumentParser ParsableCommand.swift
[26/43] Compiling ArgumentParser ArgumentDecoder.swift
[27/43] Compiling ArgumentParser ArgumentHelp.swift
[28/43] Compiling ArgumentParser CompletionKind.swift
[29/43] Compiling ArgumentParser Errors.swift
[30/43] Compiling ArgumentParser Flag.swift
[31/43] Compiling ArgumentParser NameSpecification.swift
[32/43] Compiling ArgumentParser SplitArguments.swift
[33/43] Compiling ArgumentParser HelpCommand.swift
[34/43] Compiling ArgumentParser HelpGenerator.swift
[35/43] Compiling ArgumentParser MessageInfo.swift
[36/43] Compiling ArgumentParser UsageGenerator.swift
[37/43] Compiling ArgumentParser SequenceExtensions.swift
[38/43] Compiling ArgumentParser StringExtensions.swift
[39/43] Compiling ArgumentParser Tree.swift
[40/44] Wrapping AST for ArgumentParser for debugging
[42/46] Emitting module diceroller
/host/spi-builder-workspace/Sources/diceroller/main.swift:42:16: warning: static property 'configuration' is not concurrency-safe because non-'Sendable' type 'CommandConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | struct NDR: ParsableCommand {
42 | static let configuration = CommandConfiguration(
| `- warning: static property 'configuration' is not concurrency-safe because non-'Sendable' type 'CommandConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
43 | abstract: "A Swift command-line tool to roll die",
44 | subcommands: [Roll.self])
/host/spi-builder-workspace/.build/checkouts/swift-argument-parser/Sources/ArgumentParser/Parsable Types/CommandConfiguration.swift:13:15: note: struct 'CommandConfiguration' does not conform to the 'Sendable' protocol
11 |
12 | /// The configuration for a command.
13 | public struct CommandConfiguration {
| `- note: struct 'CommandConfiguration' does not conform to the 'Sendable' protocol
14 | /// The name of the command to use on the command line.
15 | ///
/host/spi-builder-workspace/Sources/diceroller/main.swift:1:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ArgumentParser'
1 | import ArgumentParser
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ArgumentParser'
2 | import Foundation
3 |
:
40 |
41 | struct NDR: ParsableCommand {
42 | static let configuration = CommandConfiguration(
| |- note: annotate 'configuration' 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
43 | abstract: "A Swift command-line tool to roll die",
44 | subcommands: [Roll.self])
/host/spi-builder-workspace/Sources/diceroller/main.swift:51:23: warning: static property 'configuration' is not concurrency-safe because non-'Sendable' type 'CommandConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
49 | struct Roll: ParsableCommand {
50 |
51 | public static let configuration = CommandConfiguration(abstract: "A Swift command-line tool to roll die")
| |- warning: static property 'configuration' is not concurrency-safe because non-'Sendable' type 'CommandConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'configuration' 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
52 |
53 | @Argument(help: "What to roll: the amount of die, type of die (and modifier) -> 2d20+6")
/host/spi-builder-workspace/.build/checkouts/swift-argument-parser/Sources/ArgumentParser/Parsable Types/CommandConfiguration.swift:13:15: note: struct 'CommandConfiguration' does not conform to the 'Sendable' protocol
11 |
12 | /// The configuration for a command.
13 | public struct CommandConfiguration {
| `- note: struct 'CommandConfiguration' does not conform to the 'Sendable' protocol
14 | /// The name of the command to use on the command line.
15 | ///
[43/46] Compiling diceroller main.swift
/host/spi-builder-workspace/Sources/diceroller/main.swift:42:16: warning: static property 'configuration' is not concurrency-safe because non-'Sendable' type 'CommandConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | struct NDR: ParsableCommand {
42 | static let configuration = CommandConfiguration(
| `- warning: static property 'configuration' is not concurrency-safe because non-'Sendable' type 'CommandConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
43 | abstract: "A Swift command-line tool to roll die",
44 | subcommands: [Roll.self])
/host/spi-builder-workspace/.build/checkouts/swift-argument-parser/Sources/ArgumentParser/Parsable Types/CommandConfiguration.swift:13:15: note: struct 'CommandConfiguration' does not conform to the 'Sendable' protocol
11 |
12 | /// The configuration for a command.
13 | public struct CommandConfiguration {
| `- note: struct 'CommandConfiguration' does not conform to the 'Sendable' protocol
14 | /// The name of the command to use on the command line.
15 | ///
/host/spi-builder-workspace/Sources/diceroller/main.swift:1:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ArgumentParser'
1 | import ArgumentParser
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ArgumentParser'
2 | import Foundation
3 |
:
40 |
41 | struct NDR: ParsableCommand {
42 | static let configuration = CommandConfiguration(
| |- note: annotate 'configuration' 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
43 | abstract: "A Swift command-line tool to roll die",
44 | subcommands: [Roll.self])
/host/spi-builder-workspace/Sources/diceroller/main.swift:51:23: warning: static property 'configuration' is not concurrency-safe because non-'Sendable' type 'CommandConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
49 | struct Roll: ParsableCommand {
50 |
51 | public static let configuration = CommandConfiguration(abstract: "A Swift command-line tool to roll die")
| |- warning: static property 'configuration' is not concurrency-safe because non-'Sendable' type 'CommandConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'configuration' 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
52 |
53 | @Argument(help: "What to roll: the amount of die, type of die (and modifier) -> 2d20+6")
/host/spi-builder-workspace/.build/checkouts/swift-argument-parser/Sources/ArgumentParser/Parsable Types/CommandConfiguration.swift:13:15: note: struct 'CommandConfiguration' does not conform to the 'Sendable' protocol
11 |
12 | /// The configuration for a command.
13 | public struct CommandConfiguration {
| `- note: struct 'CommandConfiguration' does not conform to the 'Sendable' protocol
14 | /// The name of the command to use on the command line.
15 | ///
/host/spi-builder-workspace/Sources/diceroller/main.swift:35:9: error: main actor-isolated var 'rolledDie' can not be mutated from a nonisolated context
6 | var modifier: Int = 0
7 | var total: Int = 0
8 | var rolledDie: [String] = []
| `- note: mutation of this var is only permitted within the actor
9 |
10 | func separateArguments(roll: String) -> (Int, Int, Int) {
:
28 | }
29 |
30 | func calculateRoll(dieAmount: Int, dieType: Int, modifier: Int) -> Int {
| `- note: add '@MainActor' to make global function 'calculateRoll(dieAmount:dieType:modifier:)' part of global actor 'MainActor'
31 | var calculatedTotal: Int = 0
32 | for _ in 1...dieAmount {
33 | let roll = Int.random(in: 1...dieType)
34 | calculatedTotal += roll
35 | rolledDie.append("d\(dieType): \(roll)")
| `- error: main actor-isolated var 'rolledDie' can not be mutated from a nonisolated context
36 | }
37 | calculatedTotal += modifier
/host/spi-builder-workspace/Sources/diceroller/main.swift:66:14: error: main actor-isolated var 'dieAmount' can not be referenced from a nonisolated context
2 | import Foundation
3 |
4 | var dieAmount: Int = 1
| `- note: var declared here
5 | var dieType: Int = 1
6 | var modifier: Int = 0
:
57 | private var detailed: Bool = false
58 |
59 | func run() throws {
| `- note: add '@MainActor' to make instance method 'run()' part of global actor 'MainActor'
60 | let range = NSRange(location: 0, length: rollArguments.utf16.count)
61 | let regex = try! NSRegularExpression(pattern: "^[0-9]+d[0-9]+[-+]*[0-9]*")
:
64 | return
65 | } else {
66 | (dieAmount, dieType, modifier) = (separateArguments(roll: rollArguments))
| `- error: main actor-isolated var 'dieAmount' can not be referenced from a nonisolated context
67 | total = calculateRoll(dieAmount: dieAmount, dieType: dieType, modifier: modifier)
68 | print("Rolling...")
/host/spi-builder-workspace/Sources/diceroller/main.swift:66:25: error: main actor-isolated var 'dieType' can not be referenced from a nonisolated context
3 |
4 | var dieAmount: Int = 1
5 | var dieType: Int = 1
| `- note: var declared here
6 | var modifier: Int = 0
7 | var total: Int = 0
:
57 | private var detailed: Bool = false
58 |
59 | func run() throws {
| `- note: add '@MainActor' to make instance method 'run()' part of global actor 'MainActor'
60 | let range = NSRange(location: 0, length: rollArguments.utf16.count)
61 | let regex = try! NSRegularExpression(pattern: "^[0-9]+d[0-9]+[-+]*[0-9]*")
:
64 | return
65 | } else {
66 | (dieAmount, dieType, modifier) = (separateArguments(roll: rollArguments))
| `- error: main actor-isolated var 'dieType' can not be referenced from a nonisolated context
67 | total = calculateRoll(dieAmount: dieAmount, dieType: dieType, modifier: modifier)
68 | print("Rolling...")
/host/spi-builder-workspace/Sources/diceroller/main.swift:66:34: error: main actor-isolated var 'modifier' can not be referenced from a nonisolated context
4 | var dieAmount: Int = 1
5 | var dieType: Int = 1
6 | var modifier: Int = 0
| `- note: var declared here
7 | var total: Int = 0
8 | var rolledDie: [String] = []
:
57 | private var detailed: Bool = false
58 |
59 | func run() throws {
| `- note: add '@MainActor' to make instance method 'run()' part of global actor 'MainActor'
60 | let range = NSRange(location: 0, length: rollArguments.utf16.count)
61 | let regex = try! NSRegularExpression(pattern: "^[0-9]+d[0-9]+[-+]*[0-9]*")
:
64 | return
65 | } else {
66 | (dieAmount, dieType, modifier) = (separateArguments(roll: rollArguments))
| `- error: main actor-isolated var 'modifier' can not be referenced from a nonisolated context
67 | total = calculateRoll(dieAmount: dieAmount, dieType: dieType, modifier: modifier)
68 | print("Rolling...")
/host/spi-builder-workspace/Sources/diceroller/main.swift:67:13: error: main actor-isolated var 'total' can not be mutated from a nonisolated context
5 | var dieType: Int = 1
6 | var modifier: Int = 0
7 | var total: Int = 0
| `- note: mutation of this var is only permitted within the actor
8 | var rolledDie: [String] = []
9 |
:
57 | private var detailed: Bool = false
58 |
59 | func run() throws {
| `- note: add '@MainActor' to make instance method 'run()' part of global actor 'MainActor'
60 | let range = NSRange(location: 0, length: rollArguments.utf16.count)
61 | let regex = try! NSRegularExpression(pattern: "^[0-9]+d[0-9]+[-+]*[0-9]*")
:
65 | } else {
66 | (dieAmount, dieType, modifier) = (separateArguments(roll: rollArguments))
67 | total = calculateRoll(dieAmount: dieAmount, dieType: dieType, modifier: modifier)
| `- error: main actor-isolated var 'total' can not be mutated from a nonisolated context
68 | print("Rolling...")
69 | if detailed {
/host/spi-builder-workspace/Sources/diceroller/main.swift:67:46: error: main actor-isolated var 'dieAmount' can not be referenced from a nonisolated context
2 | import Foundation
3 |
4 | var dieAmount: Int = 1
| `- note: var declared here
5 | var dieType: Int = 1
6 | var modifier: Int = 0
:
57 | private var detailed: Bool = false
58 |
59 | func run() throws {
| `- note: add '@MainActor' to make instance method 'run()' part of global actor 'MainActor'
60 | let range = NSRange(location: 0, length: rollArguments.utf16.count)
61 | let regex = try! NSRegularExpression(pattern: "^[0-9]+d[0-9]+[-+]*[0-9]*")
:
65 | } else {
66 | (dieAmount, dieType, modifier) = (separateArguments(roll: rollArguments))
67 | total = calculateRoll(dieAmount: dieAmount, dieType: dieType, modifier: modifier)
| `- error: main actor-isolated var 'dieAmount' can not be referenced from a nonisolated context
68 | print("Rolling...")
69 | if detailed {
/host/spi-builder-workspace/Sources/diceroller/main.swift:67:66: error: main actor-isolated var 'dieType' can not be referenced from a nonisolated context
3 |
4 | var dieAmount: Int = 1
5 | var dieType: Int = 1
| `- note: var declared here
6 | var modifier: Int = 0
7 | var total: Int = 0
:
57 | private var detailed: Bool = false
58 |
59 | func run() throws {
| `- note: add '@MainActor' to make instance method 'run()' part of global actor 'MainActor'
60 | let range = NSRange(location: 0, length: rollArguments.utf16.count)
61 | let regex = try! NSRegularExpression(pattern: "^[0-9]+d[0-9]+[-+]*[0-9]*")
:
65 | } else {
66 | (dieAmount, dieType, modifier) = (separateArguments(roll: rollArguments))
67 | total = calculateRoll(dieAmount: dieAmount, dieType: dieType, modifier: modifier)
| `- error: main actor-isolated var 'dieType' can not be referenced from a nonisolated context
68 | print("Rolling...")
69 | if detailed {
/host/spi-builder-workspace/Sources/diceroller/main.swift:67:85: error: main actor-isolated var 'modifier' can not be referenced from a nonisolated context
4 | var dieAmount: Int = 1
5 | var dieType: Int = 1
6 | var modifier: Int = 0
| `- note: var declared here
7 | var total: Int = 0
8 | var rolledDie: [String] = []
:
57 | private var detailed: Bool = false
58 |
59 | func run() throws {
| `- note: add '@MainActor' to make instance method 'run()' part of global actor 'MainActor'
60 | let range = NSRange(location: 0, length: rollArguments.utf16.count)
61 | let regex = try! NSRegularExpression(pattern: "^[0-9]+d[0-9]+[-+]*[0-9]*")
:
65 | } else {
66 | (dieAmount, dieType, modifier) = (separateArguments(roll: rollArguments))
67 | total = calculateRoll(dieAmount: dieAmount, dieType: dieType, modifier: modifier)
| `- error: main actor-isolated var 'modifier' can not be referenced from a nonisolated context
68 | print("Rolling...")
69 | if detailed {
/host/spi-builder-workspace/Sources/diceroller/main.swift:70:34: error: main actor-isolated var 'dieType' can not be referenced from a nonisolated context
3 |
4 | var dieAmount: Int = 1
5 | var dieType: Int = 1
| `- note: var declared here
6 | var modifier: Int = 0
7 | var total: Int = 0
:
57 | private var detailed: Bool = false
58 |
59 | func run() throws {
| `- note: add '@MainActor' to make instance method 'run()' part of global actor 'MainActor'
60 | let range = NSRange(location: 0, length: rollArguments.utf16.count)
61 | let regex = try! NSRegularExpression(pattern: "^[0-9]+d[0-9]+[-+]*[0-9]*")
:
68 | print("Rolling...")
69 | if detailed {
70 | print("Rolled d\(dieType) \(dieAmount) times with modifier of \(modifier)")
| `- error: main actor-isolated var 'dieType' can not be referenced from a nonisolated context
71 | print("Individual rolls \(rolledDie)")
72 | }
/host/spi-builder-workspace/Sources/diceroller/main.swift:70:45: error: main actor-isolated var 'dieAmount' can not be referenced from a nonisolated context
2 | import Foundation
3 |
4 | var dieAmount: Int = 1
| `- note: var declared here
5 | var dieType: Int = 1
6 | var modifier: Int = 0
:
57 | private var detailed: Bool = false
58 |
59 | func run() throws {
| `- note: add '@MainActor' to make instance method 'run()' part of global actor 'MainActor'
60 | let range = NSRange(location: 0, length: rollArguments.utf16.count)
61 | let regex = try! NSRegularExpression(pattern: "^[0-9]+d[0-9]+[-+]*[0-9]*")
:
68 | print("Rolling...")
69 | if detailed {
70 | print("Rolled d\(dieType) \(dieAmount) times with modifier of \(modifier)")
| `- error: main actor-isolated var 'dieAmount' can not be referenced from a nonisolated context
71 | print("Individual rolls \(rolledDie)")
72 | }
/host/spi-builder-workspace/Sources/diceroller/main.swift:70:81: error: main actor-isolated var 'modifier' can not be referenced from a nonisolated context
4 | var dieAmount: Int = 1
5 | var dieType: Int = 1
6 | var modifier: Int = 0
| `- note: var declared here
7 | var total: Int = 0
8 | var rolledDie: [String] = []
:
57 | private var detailed: Bool = false
58 |
59 | func run() throws {
| `- note: add '@MainActor' to make instance method 'run()' part of global actor 'MainActor'
60 | let range = NSRange(location: 0, length: rollArguments.utf16.count)
61 | let regex = try! NSRegularExpression(pattern: "^[0-9]+d[0-9]+[-+]*[0-9]*")
:
68 | print("Rolling...")
69 | if detailed {
70 | print("Rolled d\(dieType) \(dieAmount) times with modifier of \(modifier)")
| `- error: main actor-isolated var 'modifier' can not be referenced from a nonisolated context
71 | print("Individual rolls \(rolledDie)")
72 | }
/host/spi-builder-workspace/Sources/diceroller/main.swift:71:43: error: main actor-isolated var 'rolledDie' can not be referenced from a nonisolated context
6 | var modifier: Int = 0
7 | var total: Int = 0
8 | var rolledDie: [String] = []
| `- note: var declared here
9 |
10 | func separateArguments(roll: String) -> (Int, Int, Int) {
:
57 | private var detailed: Bool = false
58 |
59 | func run() throws {
| `- note: add '@MainActor' to make instance method 'run()' part of global actor 'MainActor'
60 | let range = NSRange(location: 0, length: rollArguments.utf16.count)
61 | let regex = try! NSRegularExpression(pattern: "^[0-9]+d[0-9]+[-+]*[0-9]*")
:
69 | if detailed {
70 | print("Rolled d\(dieType) \(dieAmount) times with modifier of \(modifier)")
71 | print("Individual rolls \(rolledDie)")
| `- error: main actor-isolated var 'rolledDie' can not be referenced from a nonisolated context
72 | }
73 | print("Amount rolled: \(total)")
/host/spi-builder-workspace/Sources/diceroller/main.swift:73:37: error: main actor-isolated var 'total' can not be referenced from a nonisolated context
5 | var dieType: Int = 1
6 | var modifier: Int = 0
7 | var total: Int = 0
| `- note: var declared here
8 | var rolledDie: [String] = []
9 |
:
57 | private var detailed: Bool = false
58 |
59 | func run() throws {
| `- note: add '@MainActor' to make instance method 'run()' part of global actor 'MainActor'
60 | let range = NSRange(location: 0, length: rollArguments.utf16.count)
61 | let regex = try! NSRegularExpression(pattern: "^[0-9]+d[0-9]+[-+]*[0-9]*")
:
71 | print("Individual rolls \(rolledDie)")
72 | }
73 | print("Amount rolled: \(total)")
| `- error: main actor-isolated var 'total' can not be referenced from a nonisolated context
74 | }
75 | }
BUILD FAILURE 6.0 linux