Build Information
Successful build of SwiftMath, reference main (48ff18), with Swift 6.3 for macOS (SPM) on 16 Apr 2026 16:35:13 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-26.4.0.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 4.70.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/mgriebling/SwiftMath.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/mgriebling/SwiftMath
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 48ff188 Merge pull request #60 from nguillot/feat/tokenization-infrastructure
Cloned https://github.com/mgriebling/SwiftMath.git
Revision (git rev-parse @):
48ff188ba118c37d024551238041113560ab09b9
SUCCESS checkout https://github.com/mgriebling/SwiftMath.git at main
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
"identity": ".resolve-product-dependencies",
"name": "resolve-dependencies",
"url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"traits": [
"default"
],
"dependencies": [
{
"identity": "swiftmath",
"name": "SwiftMath",
"url": "https://github.com/mgriebling/SwiftMath.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/SwiftMath",
"traits": [
"default"
],
"dependencies": [
]
}
]
}
Fetching https://github.com/mgriebling/SwiftMath.git
[1/2258] Fetching swiftmath
Fetched https://github.com/mgriebling/SwiftMath.git from cache (1.42s)
Creating working copy for https://github.com/mgriebling/SwiftMath.git
Working copy of https://github.com/mgriebling/SwiftMath.git resolved at main (48ff188)
warning: '.resolve-product-dependencies': dependency 'swiftmath' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.3
Building package at path: $PWD
https://github.com/mgriebling/SwiftMath.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.4.0.app xcrun swift build --arch arm64
Building for debugging...
[0/4] Copying Info.plist
[1/4] Write sources
[2/4] Copying mathFonts.bundle
[3/4] Write swift-version--6988338F2F200930.txt
[5/32] Compiling SwiftMath MTTypesetter+Tokenization.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/MTTypesetter.swift:1507:13: warning: variable 'accentee' was never mutated; consider changing to 'let' constant
1505 | guard let accent = accent else { return nil }
1506 |
1507 | var accentee = MTTypesetter.createLineForMathList(accent.innerList, font:font, style:style, cramped:true)
| `- warning: variable 'accentee' was never mutated; consider changing to 'let' constant
1508 | if accent.nucleus.isEmpty {
1509 | // no accent!
[6/32] Compiling SwiftMath MTTypesetter.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/MTTypesetter.swift:1507:13: warning: variable 'accentee' was never mutated; consider changing to 'let' constant
1505 | guard let accent = accent else { return nil }
1506 |
1507 | var accentee = MTTypesetter.createLineForMathList(accent.innerList, font:font, style:style, cramped:true)
| `- warning: variable 'accentee' was never mutated; consider changing to 'let' constant
1508 | if accent.nucleus.isEmpty {
1509 | // no accent!
[7/32] Compiling SwiftMath MTUnicode.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/MTTypesetter.swift:1507:13: warning: variable 'accentee' was never mutated; consider changing to 'let' constant
1505 | guard let accent = accent else { return nil }
1506 |
1507 | var accentee = MTTypesetter.createLineForMathList(accent.innerList, font:font, style:style, cramped:true)
| `- warning: variable 'accentee' was never mutated; consider changing to 'let' constant
1508 | if accent.nucleus.isEmpty {
1509 | // no accent!
[8/34] Compiling SwiftMath MTLineFitter.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:87:53: warning: immutable value 't' was never used; consider replacing with '_' or removing it [#no-usage]
85 | // Check if element fits on current line
86 | if !lines.last!.isEmpty && currentWidth + element.width > maxWidth - margin {
87 | if debugPunctuation, case .text(let t) = element.content {
| `- warning: immutable value 't' was never used; consider replacing with '_' or removing it [#no-usage]
88 | print(" Doesn't fit (width=\(currentWidth) + \(element.width) > \(maxWidth)), current line has \(lines.last!.count) elements")
89 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:215:13: warning: initialization of immutable value 'debugFit' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
213 |
214 | let debugBreak = false // Enable to debug break point selection
215 | let debugFit = false
| `- warning: initialization of immutable value 'debugFit' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
216 |
217 | // Scan from right to left to prefer breaking later in the line
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:252:19: warning: will never be executed
249 | }
250 |
251 | if debugBreak {
| `- note: condition always evaluates to false
252 | print(" Best break: index=\(bestIndex ?? -1), penalty=\(lowestPenalty)")
| `- warning: will never be executed
253 | }
254 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:38:19: warning: will never be executed
35 | let debugPunctuation = false // Enable to debug line breaking issues
36 |
37 | if debugPunctuation {
| `- note: condition always evaluates to false
38 | print("\n=== MTLineFitter: fitting \(elements.count) elements, maxWidth=\(maxWidth) ===")
| `- warning: will never be executed
39 | for (idx, elem) in elements.enumerated() {
40 | if case .text(let t) = elem.content {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:53:62: warning: will never be executed
51 | let element = elements[i]
52 |
53 | if debugPunctuation, case .text(let t) = element.content {
| | `- warning: will never be executed
| `- note: condition always evaluates to false
54 | print("\n Processing element[\(i)]: '\(t)' breakBefore=\(element.isBreakBefore)")
55 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:87:66: warning: will never be executed
85 | // Check if element fits on current line
86 | if !lines.last!.isEmpty && currentWidth + element.width > maxWidth - margin {
87 | if debugPunctuation, case .text(let t) = element.content {
| | `- warning: will never be executed
| `- note: condition always evaluates to false
88 | print(" Doesn't fit (width=\(currentWidth) + \(element.width) > \(maxWidth)), current line has \(lines.last!.count) elements")
89 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:93:31: warning: will never be executed
90 | // Element doesn't fit - find best break point in current line
91 | if let breakIndex = findBestBreak(in: lines[lines.count - 1]) {
92 | if debugPunctuation {
| `- note: condition always evaluates to false
93 | print(" Found break at index \(breakIndex) out of \(lines.last!.count) elements")
| `- warning: will never be executed
94 | if breakIndex < lines.last!.count {
95 | if case .text(let t) = lines.last![breakIndex].content {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:113:74: warning: will never be executed
111 |
112 | // Now check if current element should go on new line or stay with old line
113 | if debugPunctuation, case .text(let t) = element.content {
| | `- warning: will never be executed
| `- note: condition always evaluates to false
114 | print(" Checking element '\(t)' (i=\(i)): breakBefore=\(element.isBreakBefore)")
115 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:122:78: warning: will never be executed
120 | // Example: "matrices" breaks before 'm', so 'm','a','t','r','i' move to new line.
121 | // When we process 'c', it can't start a line, so it must join the new line.
122 | if debugPunctuation, case .text(let t) = element.content {
| | `- warning: will never be executed
| `- note: condition always evaluates to false
123 | print(" -> Adding '\(t)' to new line (part of unbreakable sequence)")
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:130:78: warning: will never be executed
128 | continue
129 | } else {
130 | if debugPunctuation, case .text(let t) = element.content {
| | `- warning: will never be executed
| `- note: condition always evaluates to false
131 | print(" -> Adding '\(t)' to new line (can start line)")
132 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:169:19: warning: will never be executed
166 | let finalLines = lines.filter { !$0.isEmpty }
167 |
168 | if debugPunctuation {
| `- note: condition always evaluates to false
169 | print("\n=== Final lines: ===")
| `- warning: will never be executed
170 | for (lineIdx, line) in finalLines.enumerated() {
171 | print("Line \(lineIdx):")
[9/34] Compiling SwiftMath resource_bundle_accessor.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:87:53: warning: immutable value 't' was never used; consider replacing with '_' or removing it [#no-usage]
85 | // Check if element fits on current line
86 | if !lines.last!.isEmpty && currentWidth + element.width > maxWidth - margin {
87 | if debugPunctuation, case .text(let t) = element.content {
| `- warning: immutable value 't' was never used; consider replacing with '_' or removing it [#no-usage]
88 | print(" Doesn't fit (width=\(currentWidth) + \(element.width) > \(maxWidth)), current line has \(lines.last!.count) elements")
89 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:215:13: warning: initialization of immutable value 'debugFit' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
213 |
214 | let debugBreak = false // Enable to debug break point selection
215 | let debugFit = false
| `- warning: initialization of immutable value 'debugFit' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
216 |
217 | // Scan from right to left to prefer breaking later in the line
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:252:19: warning: will never be executed
249 | }
250 |
251 | if debugBreak {
| `- note: condition always evaluates to false
252 | print(" Best break: index=\(bestIndex ?? -1), penalty=\(lowestPenalty)")
| `- warning: will never be executed
253 | }
254 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:38:19: warning: will never be executed
35 | let debugPunctuation = false // Enable to debug line breaking issues
36 |
37 | if debugPunctuation {
| `- note: condition always evaluates to false
38 | print("\n=== MTLineFitter: fitting \(elements.count) elements, maxWidth=\(maxWidth) ===")
| `- warning: will never be executed
39 | for (idx, elem) in elements.enumerated() {
40 | if case .text(let t) = elem.content {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:53:62: warning: will never be executed
51 | let element = elements[i]
52 |
53 | if debugPunctuation, case .text(let t) = element.content {
| | `- warning: will never be executed
| `- note: condition always evaluates to false
54 | print("\n Processing element[\(i)]: '\(t)' breakBefore=\(element.isBreakBefore)")
55 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:87:66: warning: will never be executed
85 | // Check if element fits on current line
86 | if !lines.last!.isEmpty && currentWidth + element.width > maxWidth - margin {
87 | if debugPunctuation, case .text(let t) = element.content {
| | `- warning: will never be executed
| `- note: condition always evaluates to false
88 | print(" Doesn't fit (width=\(currentWidth) + \(element.width) > \(maxWidth)), current line has \(lines.last!.count) elements")
89 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:93:31: warning: will never be executed
90 | // Element doesn't fit - find best break point in current line
91 | if let breakIndex = findBestBreak(in: lines[lines.count - 1]) {
92 | if debugPunctuation {
| `- note: condition always evaluates to false
93 | print(" Found break at index \(breakIndex) out of \(lines.last!.count) elements")
| `- warning: will never be executed
94 | if breakIndex < lines.last!.count {
95 | if case .text(let t) = lines.last![breakIndex].content {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:113:74: warning: will never be executed
111 |
112 | // Now check if current element should go on new line or stay with old line
113 | if debugPunctuation, case .text(let t) = element.content {
| | `- warning: will never be executed
| `- note: condition always evaluates to false
114 | print(" Checking element '\(t)' (i=\(i)): breakBefore=\(element.isBreakBefore)")
115 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:122:78: warning: will never be executed
120 | // Example: "matrices" breaks before 'm', so 'm','a','t','r','i' move to new line.
121 | // When we process 'c', it can't start a line, so it must join the new line.
122 | if debugPunctuation, case .text(let t) = element.content {
| | `- warning: will never be executed
| `- note: condition always evaluates to false
123 | print(" -> Adding '\(t)' to new line (part of unbreakable sequence)")
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:130:78: warning: will never be executed
128 | continue
129 | } else {
130 | if debugPunctuation, case .text(let t) = element.content {
| | `- warning: will never be executed
| `- note: condition always evaluates to false
131 | print(" -> Adding '\(t)' to new line (can start line)")
132 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTLineFitter.swift:169:19: warning: will never be executed
166 | let finalLines = lines.filter { !$0.isEmpty }
167 |
168 | if debugPunctuation {
| `- note: condition always evaluates to false
169 | print("\n=== Final lines: ===")
| `- warning: will never be executed
170 | for (lineIdx, line) in finalLines.enumerated() {
171 | print("Line \(lineIdx):")
[10/34] Compiling SwiftMath MTConfig.swift
[11/34] Compiling SwiftMath MTFont.swift
[12/34] Compiling SwiftMath MTFontManager.swift
[13/34] Emitting module SwiftMath
[14/34] Compiling SwiftMath MTFontMathTableV2.swift
[15/34] Compiling SwiftMath MTFontV2.swift
[16/34] Compiling SwiftMath MathFont.swift
[17/34] Compiling SwiftMath RWLock.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTAtomTokenizer.swift:272:19: warning: will never be executed
269 |
270 | let debugTokenization = false // Enable to debug text tokenization
271 | if debugTokenization {
| `- note: condition always evaluates to false
272 | print("\n=== Tokenizing multi-char text: '\(text)' ===")
| `- warning: will never be executed
273 | }
274 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTAtomTokenizer.swift:320:23: warning: will never be executed
317 | )
318 |
319 | if debugTokenization {
| `- note: condition always evaluates to false
320 | print(" [\(charIndex)] '\(charString)' breakBefore=\(isBreakBefore) breakAfter=\(isBreakAfter) penaltyBefore=\(penaltyBefore) penaltyAfter=\(penaltyAfter) width=\(width)")
| `- warning: will never be executed
321 | }
322 |
[18/34] Compiling SwiftMath MTAtomTokenizer.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTAtomTokenizer.swift:272:19: warning: will never be executed
269 |
270 | let debugTokenization = false // Enable to debug text tokenization
271 | if debugTokenization {
| `- note: condition always evaluates to false
272 | print("\n=== Tokenizing multi-char text: '\(text)' ===")
| `- warning: will never be executed
273 | }
274 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTAtomTokenizer.swift:320:23: warning: will never be executed
317 | )
318 |
319 | if debugTokenization {
| `- note: condition always evaluates to false
320 | print(" [\(charIndex)] '\(charString)' breakBefore=\(isBreakBefore) breakAfter=\(isBreakAfter) penaltyBefore=\(penaltyBefore) penaltyAfter=\(penaltyAfter) width=\(width)")
| `- warning: will never be executed
321 | }
322 |
[19/34] Compiling SwiftMath MTBreakableElement.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTAtomTokenizer.swift:272:19: warning: will never be executed
269 |
270 | let debugTokenization = false // Enable to debug text tokenization
271 | if debugTokenization {
| `- note: condition always evaluates to false
272 | print("\n=== Tokenizing multi-char text: '\(text)' ===")
| `- warning: will never be executed
273 | }
274 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTAtomTokenizer.swift:320:23: warning: will never be executed
317 | )
318 |
319 | if debugTokenization {
| `- note: condition always evaluates to false
320 | print(" [\(charIndex)] '\(charString)' breakBefore=\(isBreakBefore) breakAfter=\(isBreakAfter) penaltyBefore=\(penaltyBefore) penaltyAfter=\(penaltyAfter) width=\(width)")
| `- warning: will never be executed
321 | }
322 |
[20/34] Compiling SwiftMath MTFontMathTable.swift
[21/34] Compiling SwiftMath MTLabel.swift
[22/34] Compiling SwiftMath MTMathAtomFactory.swift
[23/34] Compiling SwiftMath MathImage.swift
[24/34] Compiling SwiftMath MTBezierPath.swift
[25/34] Compiling SwiftMath MTColor.swift
[26/34] Compiling SwiftMath MTDisplayGenerator.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:122:25: warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
120 | case .display(let preRenderedDisplay):
121 | // Use pre-rendered display (fraction, radical, etc.)
122 | var mutableDisplay = preRenderedDisplay
| `- warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
123 | mutableDisplay.position = elementPosition
124 | displays.append(mutableDisplay)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:180:25: warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
178 | displays.append(display)
179 | case .display(let preRenderedDisplay):
180 | var mutableDisplay = preRenderedDisplay
| `- warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
181 | mutableDisplay.position = basePosition
182 | displays.append(mutableDisplay)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:308:21: warning: variable 'mutableScript' was never mutated; consider changing to 'let' constant
306 |
307 | // Reset the scriptDisplay's position to (0, 0) since it will be positioned by the wrapper
308 | var mutableScript = scriptDisplay
| `- warning: variable 'mutableScript' was never mutated; consider changing to 'let' constant
309 | mutableScript.position = CGPoint.zero
310 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:348:17: warning: variable 'baseDisplay' was never mutated; consider changing to 'let' constant
346 | // Update the first base display's dimensions to reflect the full extent
347 | // Width should be base + script, without the spaceAfterScript (that's for cursor advancement)
348 | var baseDisplay = displays[baseDisplayStartIndex]
| `- warning: variable 'baseDisplay' was never mutated; consider changing to 'let' constant
349 | baseDisplay.ascent = maxAscent
350 | baseDisplay.descent = maxDescent
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayPreRenderer.swift:53:42: warning: conditional cast from 'MTMathListDisplay' to 'MTMathListDisplay' always succeeds
51 | // If the result is a MTMathListDisplay with a single subdisplay, unwrap it
52 | // This matches the behavior of the legacy typesetter
53 | if let mathListDisplay = display as? MTMathListDisplay,
| `- warning: conditional cast from 'MTMathListDisplay' to 'MTMathListDisplay' always succeeds
54 | mathListDisplay.subDisplays.count == 1 {
55 | return mathListDisplay.subDisplays[0]
[27/34] Compiling SwiftMath MTDisplayPreRenderer.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:122:25: warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
120 | case .display(let preRenderedDisplay):
121 | // Use pre-rendered display (fraction, radical, etc.)
122 | var mutableDisplay = preRenderedDisplay
| `- warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
123 | mutableDisplay.position = elementPosition
124 | displays.append(mutableDisplay)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:180:25: warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
178 | displays.append(display)
179 | case .display(let preRenderedDisplay):
180 | var mutableDisplay = preRenderedDisplay
| `- warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
181 | mutableDisplay.position = basePosition
182 | displays.append(mutableDisplay)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:308:21: warning: variable 'mutableScript' was never mutated; consider changing to 'let' constant
306 |
307 | // Reset the scriptDisplay's position to (0, 0) since it will be positioned by the wrapper
308 | var mutableScript = scriptDisplay
| `- warning: variable 'mutableScript' was never mutated; consider changing to 'let' constant
309 | mutableScript.position = CGPoint.zero
310 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:348:17: warning: variable 'baseDisplay' was never mutated; consider changing to 'let' constant
346 | // Update the first base display's dimensions to reflect the full extent
347 | // Width should be base + script, without the spaceAfterScript (that's for cursor advancement)
348 | var baseDisplay = displays[baseDisplayStartIndex]
| `- warning: variable 'baseDisplay' was never mutated; consider changing to 'let' constant
349 | baseDisplay.ascent = maxAscent
350 | baseDisplay.descent = maxDescent
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayPreRenderer.swift:53:42: warning: conditional cast from 'MTMathListDisplay' to 'MTMathListDisplay' always succeeds
51 | // If the result is a MTMathListDisplay with a single subdisplay, unwrap it
52 | // This matches the behavior of the legacy typesetter
53 | if let mathListDisplay = display as? MTMathListDisplay,
| `- warning: conditional cast from 'MTMathListDisplay' to 'MTMathListDisplay' always succeeds
54 | mathListDisplay.subDisplays.count == 1 {
55 | return mathListDisplay.subDisplays[0]
[28/34] Compiling SwiftMath MTElementWidthCalculator.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:122:25: warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
120 | case .display(let preRenderedDisplay):
121 | // Use pre-rendered display (fraction, radical, etc.)
122 | var mutableDisplay = preRenderedDisplay
| `- warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
123 | mutableDisplay.position = elementPosition
124 | displays.append(mutableDisplay)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:180:25: warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
178 | displays.append(display)
179 | case .display(let preRenderedDisplay):
180 | var mutableDisplay = preRenderedDisplay
| `- warning: variable 'mutableDisplay' was never mutated; consider changing to 'let' constant
181 | mutableDisplay.position = basePosition
182 | displays.append(mutableDisplay)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:308:21: warning: variable 'mutableScript' was never mutated; consider changing to 'let' constant
306 |
307 | // Reset the scriptDisplay's position to (0, 0) since it will be positioned by the wrapper
308 | var mutableScript = scriptDisplay
| `- warning: variable 'mutableScript' was never mutated; consider changing to 'let' constant
309 | mutableScript.position = CGPoint.zero
310 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayGenerator.swift:348:17: warning: variable 'baseDisplay' was never mutated; consider changing to 'let' constant
346 | // Update the first base display's dimensions to reflect the full extent
347 | // Width should be base + script, without the spaceAfterScript (that's for cursor advancement)
348 | var baseDisplay = displays[baseDisplayStartIndex]
| `- warning: variable 'baseDisplay' was never mutated; consider changing to 'let' constant
349 | baseDisplay.ascent = maxAscent
350 | baseDisplay.descent = maxDescent
/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/MathRender/Tokenization/MTDisplayPreRenderer.swift:53:42: warning: conditional cast from 'MTMathListDisplay' to 'MTMathListDisplay' always succeeds
51 | // If the result is a MTMathListDisplay with a single subdisplay, unwrap it
52 | // This matches the behavior of the legacy typesetter
53 | if let mathListDisplay = display as? MTMathListDisplay,
| `- warning: conditional cast from 'MTMathListDisplay' to 'MTMathListDisplay' always succeeds
54 | mathListDisplay.subDisplays.count == 1 {
55 | return mathListDisplay.subDisplays[0]
[29/34] Compiling SwiftMath MTMathImage.swift
[30/34] Compiling SwiftMath MTMathList.swift
[31/34] Compiling SwiftMath MTMathListBuilder.swift
[32/34] Compiling SwiftMath MTMathListDisplay.swift
[33/34] Compiling SwiftMath MTMathListIndex.swift
[34/34] Compiling SwiftMath MTMathUILabel.swift
Build complete! (8.76s)
Build complete.
{
"default_localization" : "en",
"dependencies" : [
],
"manifest_display_name" : "SwiftMath",
"name" : "SwiftMath",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "11.0"
},
{
"name" : "macos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "SwiftMath",
"targets" : [
"SwiftMath"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "SwiftMathTests",
"module_type" : "SwiftTarget",
"name" : "SwiftMathTests",
"path" : "Tests/SwiftMathTests",
"sources" : [
"AccentSpacingComparisonTest.swift",
"ArrowStretchingTest.swift",
"ConcurrencyThreadsafeTests.swift",
"DebugOverlapTest.swift",
"DotlessIJAccentTests.swift",
"GlyphBoundsTest.swift",
"LimitOperatorRegressionTests.swift",
"MTFontMathTableV2Tests.swift",
"MTFontV2Tests.swift",
"MTMathListBuilderTests.swift",
"MTMathListTests.swift",
"MTMathUILabelLineWrappingTests.swift",
"MTTypesetterTests.swift",
"MathDelimiterTests.swift",
"MathFontTests.swift",
"MathImageTests.swift",
"MatricesLineBreakingTest.swift",
"RelationOperatorSpacingTests.swift",
"Tokenization/MTAtomTokenizerTests.swift",
"Tokenization/MTBreakableElementTests.swift",
"Tokenization/MTDisplayGeneratorTests.swift",
"Tokenization/MTDisplayPreRendererTests.swift",
"Tokenization/MTElementWidthCalculatorTests.swift",
"Tokenization/MTLineFitterTests.swift",
"Tokenization/MTTokenizationImprovementTests.swift",
"Tokenization/MTTokenizationRealWorldTests.swift",
"Tokenization/MTTypesetter+TokenizationTests.swift",
"WidehatGlyphTest.swift",
"WidehatTests.swift"
],
"target_dependencies" : [
"SwiftMath"
],
"type" : "test"
},
{
"c99name" : "SwiftMath",
"module_type" : "SwiftTarget",
"name" : "SwiftMath",
"path" : "Sources/SwiftMath",
"product_memberships" : [
"SwiftMath"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/SwiftMath/mathFonts.bundle",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"MathBundle/MTFontMathTableV2.swift",
"MathBundle/MTFontV2.swift",
"MathBundle/MathFont.swift",
"MathBundle/MathImage.swift",
"MathRender/MTBezierPath.swift",
"MathRender/MTColor.swift",
"MathRender/MTConfig.swift",
"MathRender/MTFont.swift",
"MathRender/MTFontManager.swift",
"MathRender/MTFontMathTable.swift",
"MathRender/MTLabel.swift",
"MathRender/MTMathAtomFactory.swift",
"MathRender/MTMathImage.swift",
"MathRender/MTMathList.swift",
"MathRender/MTMathListBuilder.swift",
"MathRender/MTMathListDisplay.swift",
"MathRender/MTMathListIndex.swift",
"MathRender/MTMathUILabel.swift",
"MathRender/MTTypesetter+Tokenization.swift",
"MathRender/MTTypesetter.swift",
"MathRender/MTUnicode.swift",
"MathRender/RWLock.swift",
"MathRender/Tokenization/MTAtomTokenizer.swift",
"MathRender/Tokenization/MTBreakableElement.swift",
"MathRender/Tokenization/MTDisplayGenerator.swift",
"MathRender/Tokenization/MTDisplayPreRenderer.swift",
"MathRender/Tokenization/MTElementWidthCalculator.swift",
"MathRender/Tokenization/MTLineFitter.swift"
],
"type" : "library"
}
],
"tools_version" : "5.7"
}
Done.