The Swift Package Index logo.Swift Package Index

Build Information

Failed to build Ligature, reference main (3bdbcd), with Swift 6.4 for Wasm on 25 Sep 2026 00:39:00 UTC.

Build Command

bash -c docker run --pull=always --rm -v "checkouts-53886770-1":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:wasm-6.4-latest swift build --swift-sdk swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_wasm 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/ChimeHQ/Ligature.git
Reference: main
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/ChimeHQ/Ligature
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 3bdbcd3 Remove chat, funding
Cloned https://github.com/ChimeHQ/Ligature.git
Revision (git rev-parse @):
3bdbcd3c0188c813664e4cccadb19601cea8ef5f
SUCCESS checkout https://github.com/ChimeHQ/Ligature.git at main
========================================
Build
========================================
Selected platform:         wasm
Swift version:             6.4
Building package at path:  $PWD
https://github.com/ChimeHQ/Ligature.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-53886770-1":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:wasm-6.4-latest swift build --swift-sdk swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_wasm 2>&1
wasm-6.4-latest: Pulling from saguaro1/spi-images
Digest: sha256:4328fdb43c680d205c1d6761b1e3267aa38277eefdda9ddfb17b6a0f1a77857a
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:wasm-6.4-latest
Fetching https://github.com/ChimeHQ/Glyph
Fetching https://github.com/ChimeHQ/Rearrange
[7/609] Fetching rearrange
[75/903] Fetching rearrange, glyph
Fetched https://github.com/ChimeHQ/Rearrange (0.54s)
Fetched https://github.com/ChimeHQ/Glyph (0.54s)
Computing version for https://github.com/ChimeHQ/Rearrange
Computed https://github.com/ChimeHQ/Rearrange at 2.1.1 (0.95s)
Computing version for https://github.com/ChimeHQ/Glyph
Computed https://github.com/ChimeHQ/Glyph at 0.1.1 (0.33s)
Creating working copy for https://github.com/ChimeHQ/Glyph
Working copy of https://github.com/ChimeHQ/Glyph resolved at 0.1.1
Creating working copy for https://github.com/ChimeHQ/Rearrange
Working copy of https://github.com/ChimeHQ/Rearrange resolved at 2.1.1
Building for debugging...
[Computing dependencies]
[Pre-planning 1 / 126]
[Planning deferred tasks]
[27 / 49]
[38 / 67] Rearrange
[39 / 67] Glyph
[49 / 67] Glyph
[50 / 67] Rearrange
[52 / 67] Glyph
[55 / 67] Rearrange
[56 / 69] Ligature
[58 / 77] Ligature
error: SwiftCompile normal wasm32 failed with a nonzero exit code. Command line:     cd /host

/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:8:27: error: cannot find type 'TextGranularity' in scope
 6 |
 7 | 	public enum Request: Equatable {
 8 | 		case position(Position, TextGranularity, TextDirection)
   |                           `- error: cannot find type 'TextGranularity' in scope
 9 | 	}
10 |
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:8:44: error: cannot find type 'TextDirection' in scope
 6 |
 7 | 	public enum Request: Equatable {
 8 | 		case position(Position, TextGranularity, TextDirection)
   |                                            `- error: cannot find type 'TextDirection' in scope
 9 | 	}
10 |
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:7:14: error: type 'MockTextTokenizer<R>.Request' does not conform to protocol 'Equatable'
 5 | 	public typealias TextRange = R
 6 |
 7 | 	public enum Request: Equatable {
   |              |- error: type 'MockTextTokenizer<R>.Request' does not conform to protocol 'Equatable'
   |              `- note: add stubs for conformance
 8 | 		case position(Position, TextGranularity, TextDirection)
   |                           |                `- note: associated value type '_' does not conform to protocol 'Equatable', preventing synthesized conformance of 'MockTextTokenizer<R>.Request' to 'Equatable'
   |                           `- note: associated value type '_' does not conform to protocol 'Equatable', preventing synthesized conformance of 'MockTextTokenizer<R>.Request' to 'Equatable'
 9 | 	}
10 |
Swift.==:1:24: note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to 'RawRepresentable'
1 | @inlinable public func == <T>(lhs: T, rhs: T) -> Bool where T : RawRepresentable, T.RawValue : Equatable
  |                        `- note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to 'RawRepresentable'
Swift.FloatingPoint.==:2:20: note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to 'FloatingPoint'
1 | protocol FloatingPoint {
2 | public static func == (lhs: Self, rhs: Self) -> Bool}
  |                    `- note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to 'FloatingPoint'
3 |
Swift.BinaryInteger.==:2:20: note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to 'BinaryInteger'
1 | protocol BinaryInteger {
2 | public static func == <Other>(lhs: Self, rhs: Other) -> Bool where Other : BinaryInteger}
  |                    `- note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to 'BinaryInteger'
3 |
Swift._Pointer.==:2:20: note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to '_Pointer'
1 | protocol _Pointer {
2 | public static func == (lhs: Self, rhs: Self) -> Bool}
  |                    `- note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to '_Pointer'
3 |
Swift._Pointer.==:2:31: note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to '_Pointer'
1 | protocol _Pointer {
2 | @inlinable public static func == <Other>(lhs: Self, rhs: Other) -> Bool where Other : _Pointer}
  |                               `- note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to '_Pointer'
3 |
Swift.Strideable.==:2:31: note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to 'Strideable'
1 | protocol Strideable {
2 | @inlinable public static func == (x: Self, y: Self) -> Bool}
  |                               `- note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to 'Strideable'
3 |
Swift.StringProtocol.==:2:31: note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to 'StringProtocol'
1 | protocol StringProtocol {
2 | @inlinable public static func == <RHS>(lhs: Self, rhs: RHS) -> Bool where RHS : StringProtocol}
  |                               `- note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to 'StringProtocol'
3 |
Swift.SIMD.==:2:20: note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to 'SIMD'
1 | protocol SIMD {
2 | public static func == (a: Self, b: Self) -> Bool}
  |                    `- note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to 'SIMD'
3 |
Foundation.__BridgedNSError.==:2:20: note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to '__BridgedNSError'
1 | protocol __BridgedNSError {
2 | public static func == (lhs: Self, rhs: Self) -> Bool}
  |                    `- note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to '__BridgedNSError'
3 |
Foundation._BridgedStoredNSError.==:2:20: note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to '_BridgedStoredNSError'
1 | protocol _BridgedStoredNSError {
2 | public static func == (lhs: Self, rhs: Self) -> Bool}
  |                    `- note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to '_BridgedStoredNSError'
3 |
FoundationEssentials.AttributedStringProtocol.==:2:20: note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to 'AttributedStringProtocol'
1 | protocol AttributedStringProtocol {
2 | public static func == <RHS>(lhs: Self, rhs: RHS) -> Bool where RHS : AttributedStringProtocol}
  |                    `- note: candidate would match if 'MockTextTokenizer<R>.Request' conformed to 'AttributedStringProtocol'
3 |
Swift.Equatable.==:2:13: note: protocol requires function '==' with type '(borrowing MockTextTokenizer<R>.Request, borrowing MockTextTokenizer<R>.Request) -> Bool'
1 | protocol Equatable {
2 | static func == (lhs: borrowing Self, rhs: borrowing Self) -> Bool}
  |             `- note: protocol requires function '==' with type '(borrowing MockTextTokenizer<R>.Request, borrowing MockTextTokenizer<R>.Request) -> Bool'
3 |
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:26:72: error: cannot find type 'TextGranularity' in scope
24 | 	}
25 |
26 | 	public func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position? {
   |                                                                        `- error: cannot find type 'TextGranularity' in scope
27 | 		requests.append(.position(position, granularity, direction))
28 |
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:26:112: error: cannot find type 'TextDirection' in scope
24 | 	}
25 |
26 | 	public func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position? {
   |                                                                                                                `- error: cannot find type 'TextDirection' in scope
27 | 		requests.append(.position(position, granularity, direction))
28 |
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:37:77: error: cannot find type 'TextGranularity' in scope
35 | 	}
36 |
37 | 	public func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> R? {
   |                                                                             `- error: cannot find type 'TextGranularity' in scope
38 | 		return nil
39 | 	}
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:37:117: error: cannot find type 'TextDirection' in scope
35 | 	}
36 |
37 | 	public func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> R? {
   |                                                                                                                     `- error: cannot find type 'TextDirection' in scope
38 | 		return nil
39 | 	}
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:41:71: error: cannot find type 'TextGranularity' in scope
39 | 	}
40 |
41 | 	public func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool {
   |                                                                       `- error: cannot find type 'TextGranularity' in scope
42 | 		return false
43 | 	}
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:41:111: error: cannot find type 'TextDirection' in scope
39 | 	}
40 |
41 | 	public func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool {
   |                                                                                                               `- error: cannot find type 'TextDirection' in scope
42 | 		return false
43 | 	}
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:45:75: error: cannot find type 'TextGranularity' in scope
43 | 	}
44 |
45 | 	public func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: TextDirection) -> Bool {
   |                                                                           `- error: cannot find type 'TextGranularity' in scope
46 | 		return false
47 | 	}
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:45:115: error: cannot find type 'TextDirection' in scope
43 | 	}
44 |
45 | 	public func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: TextDirection) -> Bool {
   |                                                                                                                   `- error: cannot find type 'TextDirection' in scope
46 | 		return false
47 | 	}
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:15:65: error: cannot find type 'TextGranularity' in scope
13 | 	typealias Position = TextRange.Bound
14 |
15 | 	func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position?
   |                                                                 `- error: cannot find type 'TextGranularity' in scope
16 | 	func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
17 |
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:15:105: error: cannot find type 'TextDirection' in scope
13 | 	typealias Position = TextRange.Bound
14 |
15 | 	func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position?
   |                                                                                                         `- error: cannot find type 'TextDirection' in scope
16 | 	func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
17 |
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:15:131: error: cannot find type 'CGFloat' in scope
13 | 	typealias Position = TextRange.Bound
14 |
15 | 	func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position?
   |                                                                                                                                   `- error: cannot find type 'CGFloat' in scope
16 | 	func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
17 |
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:16:70: error: cannot find type 'TextGranularity' in scope
14 |
15 | 	func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position?
16 | 	func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
   |                                                                      `- error: cannot find type 'TextGranularity' in scope
17 |
18 | 	func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:16:110: error: cannot find type 'TextDirection' in scope
14 |
15 | 	func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position?
16 | 	func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
   |                                                                                                              `- error: cannot find type 'TextDirection' in scope
17 |
18 | 	func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:18:64: error: cannot find type 'TextGranularity' in scope
16 | 	func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
17 |
18 | 	func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
   |                                                                `- error: cannot find type 'TextGranularity' in scope
19 | 	func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
20 | }
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:18:104: error: cannot find type 'TextDirection' in scope
16 | 	func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
17 |
18 | 	func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
   |                                                                                                        `- error: cannot find type 'TextDirection' in scope
19 | 	func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
20 | }
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:19:68: error: cannot find type 'TextGranularity' in scope
17 |
18 | 	func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
19 | 	func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
   |                                                                    `- error: cannot find type 'TextGranularity' in scope
20 | }
21 |
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:19:108: error: cannot find type 'TextDirection' in scope
17 |
18 | 	func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
19 | 	func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
   |                                                                                                            `- error: cannot find type 'TextDirection' in scope
20 | }
21 |
/host/spi-builder-workspace/Sources/Ligature/NSTextSelection+Extensions.swift:9:11: error: cannot find type 'NSTextSelection' in scope
 7 | @available(iOS 15.0, macOS 12.0, tvOS 15.0, *)
 8 | @available(watchOS, unavailable)
 9 | extension NSTextSelection.Granularity {
   |           `- error: cannot find type 'NSTextSelection' in scope
10 | 	public init(_ granularity: TextGranularity) {
11 | 		switch granularity {
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:14:72: error: cannot find type 'TextGranularity' in scope
12 |
13 | extension SourceTokenizer: TextTokenizer {
14 | 	public func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position? {
   |                                                                        `- error: cannot find type 'TextGranularity' in scope
15 | 		return fallbackTokenzier.position(from: position, toBoundary: granularity, inDirection: direction, alignment: alignment)
16 | 	}
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:14:112: error: cannot find type 'TextDirection' in scope
12 |
13 | extension SourceTokenizer: TextTokenizer {
14 | 	public func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position? {
   |                                                                                                                `- error: cannot find type 'TextDirection' in scope
15 | 		return fallbackTokenzier.position(from: position, toBoundary: granularity, inDirection: direction, alignment: alignment)
16 | 	}
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:18:77: error: cannot find type 'TextGranularity' in scope
16 | 	}
17 |
18 | 	public func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> FallbackTokenzier.TextRange? {
   |                                                                             `- error: cannot find type 'TextGranularity' in scope
19 | 		return fallbackTokenzier.rangeEnclosingPosition(position, with: granularity, inDirection: direction)
20 | 	}
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:18:117: error: cannot find type 'TextDirection' in scope
16 | 	}
17 |
18 | 	public func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> FallbackTokenzier.TextRange? {
   |                                                                                                                     `- error: cannot find type 'TextDirection' in scope
19 | 		return fallbackTokenzier.rangeEnclosingPosition(position, with: granularity, inDirection: direction)
20 | 	}
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:22:71: error: cannot find type 'TextGranularity' in scope
20 | 	}
21 |
22 | 	public func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool {
   |                                                                       `- error: cannot find type 'TextGranularity' in scope
23 | 		return fallbackTokenzier.isPosition(position, atBoundary: granularity, inDirection: direction)
24 | 	}
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:22:111: error: cannot find type 'TextDirection' in scope
20 | 	}
21 |
22 | 	public func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool {
   |                                                                                                               `- error: cannot find type 'TextDirection' in scope
23 | 		return fallbackTokenzier.isPosition(position, atBoundary: granularity, inDirection: direction)
24 | 	}
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:26:75: error: cannot find type 'TextGranularity' in scope
24 | 	}
25 |
26 | 	public func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: TextDirection) -> Bool {
   |                                                                           `- error: cannot find type 'TextGranularity' in scope
27 | 		return fallbackTokenzier.isPosition(position, withinTextUnit: granularity, inDirection: direction)
28 | 	}
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:26:115: error: cannot find type 'TextDirection' in scope
24 | 	}
25 |
26 | 	public func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: TextDirection) -> Bool {
   |                                                                                                                   `- error: cannot find type 'TextDirection' in scope
27 | 		return fallbackTokenzier.isPosition(position, withinTextUnit: granularity, inDirection: direction)
28 | 	}
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:13:1: error: type 'SourceTokenizer<FallbackTokenzier>' does not conform to protocol 'TextTokenizer'
11 | }
12 |
13 | extension SourceTokenizer: TextTokenizer {
   | |- error: type 'SourceTokenizer<FallbackTokenzier>' does not conform to protocol 'TextTokenizer'
   | `- note: add stubs for conformance
14 | 	public func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position? {
15 | 		return fallbackTokenzier.position(from: position, toBoundary: granularity, inDirection: direction, alignment: alignment)
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:11:17: note: protocol requires nested type 'TextRange'
 9 | @MainActor
10 | public protocol TextTokenizer<TextRange> {
11 | 	associatedtype TextRange: Bounded
   |                 `- note: protocol requires nested type 'TextRange'
12 |
13 | 	typealias Position = TextRange.Bound
/host/spi-builder-workspace/Sources/Ligature/TextDirection+Extensions.swift:1:11: error: cannot find type 'TextLayoutDirection' in scope
 1 | extension TextLayoutDirection {
   |           `- error: cannot find type 'TextLayoutDirection' in scope
 2 | 	public func textStorageDirection(with layout: UserInterfaceLayoutDirection) -> TextStorageDirection? {
 3 | 		switch (self, layout) {
/host/spi-builder-workspace/Sources/Ligature/TextDirection+Extensions.swift:16:11: error: cannot find type 'TextDirection' in scope
14 | }
15 |
16 | extension TextDirection {
   |           `- error: cannot find type 'TextDirection' in scope
17 | 	public func textStorageDirection(with layout: UserInterfaceLayoutDirection) -> TextStorageDirection? {
18 | 		switch rawValue {
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:23:72: error: cannot find type 'TextGranularity' in scope
21 |
22 | extension TextTokenizer {
23 | 	public func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Position? {
   |                                                                        `- error: cannot find type 'TextGranularity' in scope
24 | 		self.position(from: position, toBoundary: granularity, inDirection: direction, alignment: nil)
25 | 	}
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:23:112: error: cannot find type 'TextDirection' in scope
21 |
22 | extension TextTokenizer {
23 | 	public func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Position? {
   |                                                                                                                `- error: cannot find type 'TextDirection' in scope
24 | 		self.position(from: position, toBoundary: granularity, inDirection: direction, alignment: nil)
25 | 	}
Failed frontend command:
/usr/bin/swift-frontend -frontend -emit-module -experimental-skip-non-inlinable-function-bodies-without-types /host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift /host/spi-builder-workspace/Sources/Ligature/NSTextSelection+Extensions.swift /host/spi-builder-workspace/Sources/Ligature/Platform.swift /host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift /host/spi-builder-workspace/Sources/Ligature/TextDirection+Extensions.swift /host/spi-builder-workspace/Sources/Ligature/TextInputStringTokenizer.swift /host/spi-builder-workspace/Sources/Ligature/TextRange+Bounded.swift /host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift /host/spi-builder-workspace/Sources/Ligature/TextView+TextRangeCalculating.swift /host/spi-builder-workspace/Sources/Ligature/UTF16CodePointTextViewTextTokenizer.swift -target wasm32-unknown-wasip1 -disable-objc-interop -sdk /root/.swiftpm/swift-sdks/swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_wasm.artifactbundle/swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_wasm/wasm32-unknown-wasip1/WASI.sdk -sysroot /root/.swiftpm/swift-sdks/swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_wasm.artifactbundle/swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_wasm/wasm32-unknown-wasip1/WASI.sdk -I /host/spi-builder-workspace/.build/out/Products/Debug-webassembly-wasm32 -module-cache-path /host/spi-builder-workspace/.build/out/ModuleCache.noindex -color-diagnostics -Xcc -fcolor-diagnostics -enable-testing -g -debug-info-format\=dwarf -dwarf-version\=4 -swift-version 6 -Onone -D SWIFT_PACKAGE -D DEBUG -D SWIFT_MODULE_RESOURCE_BUNDLE_UNAVAILABLE -D Xcode -serialize-debugging-options -enable-experimental-feature DebugDescriptionMacro -empty-abi-descriptor -external-plugin-path /usr/lib/swift/host/plugins/testing\#/usr/bin/swift-plugin-server -validate-clang-modules-once -clang-build-session-file /host/spi-builder-workspace/.build/out/ModuleCache.noindex/Session.modulevalidation -Xcc -working-directory -Xcc /host -resource-dir /root/.swiftpm/swift-sdks/swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_wasm.artifactbundle/swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_wasm/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static -use-static-resource-dir -enable-anonymous-context-mangled-names -file-compilation-dir /host -Xcc -resource-dir -Xcc /root/.swiftpm/swift-sdks/swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_wasm.artifactbundle/swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_wasm/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -Xcc -I/host/spi-builder-workspace/.build/out/Products/Debug-webassembly-wasm32/include -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-webassembly-wasm32/Ligature-t.build/DerivedSources-normal/wasm32 -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-webassembly-wasm32/Ligature-t.build/DerivedSources/wasm32 -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-webassembly-wasm32/Ligature-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -no-auto-bridging-header-chaining -module-name Ligature -package-name spi_builder_workspace -const-gather-protocols-file /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-webassembly-wasm32/Ligature-t.build/Objects-normal/wasm32/Ligature_const_extract_protocols.json -in-process-plugin-server-path /usr/lib/swift/host/libSwiftInProcPluginServer.so -plugin-path /usr/lib/swift/host/plugins -plugin-path /usr/local/lib/swift/host/plugins -emit-module-doc-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-webassembly-wasm32/Ligature-t.build/Objects-normal/wasm32/Modules/Ligature.swiftdoc -emit-module-source-info-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-webassembly-wasm32/Ligature-t.build/Objects-normal/wasm32/Modules/Ligature.swiftsourceinfo -emit-objc-header-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-webassembly-wasm32/Ligature-t.build/Objects-normal/wasm32/Ligature-Swift.h -serialize-diagnostics-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-webassembly-wasm32/Ligature-t.build/Objects-normal/wasm32/Ligature-primary-emit-module.dia -emit-dependencies-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-webassembly-wasm32/Ligature-t.build/Objects-normal/wasm32/Ligature-primary-emit-module.d -parse-as-library -o /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-webassembly-wasm32/Ligature-t.build/Objects-normal/wasm32/Modules/Ligature.swiftmodule
[59 / 78] Ligature
error: Build failed
BUILD FAILURE 6.4 wasm