Build Information
Successful build of DeclarativeTextKit, reference 0.9.0 (85aab2), with Swift 6.3 for macOS (SPM) on 26 Sep 2026 09:30:57 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-26.5.0.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/CleanCocoa/DeclarativeTextKit.git
Reference: 0.9.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/CleanCocoa/DeclarativeTextKit
* tag 0.9.0 -> FETCH_HEAD
HEAD is now at 85aab26 Register dtk-porter agent-mail identity
Cloned https://github.com/CleanCocoa/DeclarativeTextKit.git
Revision (git rev-parse @):
85aab2602b4326a842382ea6e424f0de42bdc2ee
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/CleanCocoa/DeclarativeTextKit.git at 0.9.0
Fetching https://github.com/CleanCocoa/TextBuffer
[1/2701] Fetching textbuffer
Fetched https://github.com/CleanCocoa/TextBuffer from cache (1.29s)
Computing version for https://github.com/CleanCocoa/TextBuffer
Computed https://github.com/CleanCocoa/TextBuffer at 0.12.0 (1.87s)
Creating working copy for https://github.com/CleanCocoa/TextBuffer
Working copy of https://github.com/CleanCocoa/TextBuffer resolved at 0.12.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",
"traits": [
"default"
],
"dependencies": [
{
"identity": "declarativetextkit",
"name": "DeclarativeTextKit",
"url": "https://github.com/CleanCocoa/DeclarativeTextKit.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/DeclarativeTextKit",
"traits": [
"default"
],
"dependencies": [
{
"identity": "textbuffer",
"name": "TextBuffer",
"url": "https://github.com/CleanCocoa/TextBuffer",
"version": "0.12.0",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/TextBuffer",
"traits": [
"default"
],
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/CleanCocoa/DeclarativeTextKit.git
[1/2217] Fetching declarativetextkit
Fetched https://github.com/CleanCocoa/DeclarativeTextKit.git from cache (1.09s)
Fetching https://github.com/CleanCocoa/TextBuffer from cache
Fetched https://github.com/CleanCocoa/TextBuffer from cache (0.53s)
Computing version for https://github.com/CleanCocoa/TextBuffer
Computed https://github.com/CleanCocoa/TextBuffer at 0.12.0 (0.59s)
Creating working copy for https://github.com/CleanCocoa/DeclarativeTextKit.git
Working copy of https://github.com/CleanCocoa/DeclarativeTextKit.git resolved at 0.9.0 (85aab26)
Creating working copy for https://github.com/CleanCocoa/TextBuffer
Working copy of https://github.com/CleanCocoa/TextBuffer resolved at 0.12.0
warning: '.resolve-product-dependencies': dependency 'declarativetextkit' is not used by any target
Found 1 product dependencies
- TextBuffer
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.3
Building package at path: $PWD
https://github.com/CleanCocoa/DeclarativeTextKit.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.5.0.app xcrun swift build --arch arm64
Building for debugging...
[0/4] Write sources
[3/4] Write swift-version-69A768CDF2A0BEE1.txt
[5/15] Compiling TextRope TextRope+COW.swift
[6/15] Compiling TextRope TextRope+Replace.swift
[7/15] Compiling TextRope Summary.swift
[8/15] Compiling TextRope TextRope+Insert.swift
[9/15] Compiling TextRope TextRope+Construction.swift
[10/15] Compiling TextRope TextRope+Navigation.swift
[11/15] Compiling TextRope TextRope+Delete.swift
[12/16] Compiling TextRope Node.swift
[13/16] Compiling TextRope Node+Merge.swift
[14/16] Compiling TextRope Node+Split.swift
[15/16] Emitting module TextRope
[16/16] Compiling TextRope TextRope.swift
[17/53] Compiling TextBuffer NSRange+Resized.swift
[18/53] Compiling TextBuffer NSRange+Shifted.swift
[19/53] Compiling TextBuffer NSRange+Subtracting.swift
[20/53] Compiling TextBuffer NSRange+containsRange.swift
[21/57] Emitting module TextBuffer
[22/57] Compiling TextBuffer Undoable+NSTextViewBuffer.swift
[23/57] Compiling TextBuffer Undoable.swift
[24/57] Compiling TextBuffer Exports.swift
[25/57] Compiling TextBuffer NSRange+Order.swift
[26/57] Compiling TextBuffer NSRange+expandedToOther.swift
[27/57] Compiling TextBuffer NSRange+notFound.swift
[28/57] Compiling TextBuffer NSRange+prefix.swift
[29/57] Compiling TextBuffer NSRange+suffix.swift
[30/57] Compiling TextBuffer NSString+locationUpToCharacter.swift
[31/57] Compiling TextBuffer BufferOperation.swift
[32/57] Compiling TextBuffer OperationLog.swift
[33/57] Compiling TextBuffer UndoGroup.swift
[34/57] Compiling TextBuffer Buffer.swift
[35/57] Compiling TextBuffer BufferAccessFailure.swift
[36/57] Compiling TextBuffer BufferContent.swift
[37/57] Compiling TextBuffer BufferRange.swift
[38/57] Compiling TextBuffer Bool+inverted.swift
[39/57] Compiling TextBuffer AsyncBuffer.swift
[40/57] Compiling TextBuffer Buffer+contains.swift
[41/57] Compiling TextBuffer Buffer+wordRange.swift
[42/57] Compiling TextBuffer TextRope+ComposedSequences.swift
[43/57] Compiling TextBuffer TextRope+LineRange.swift
[44/57] Compiling TextBuffer TextRope+NSRange.swift
[45/57] Compiling TextBuffer TextRope+WordRange.swift
[46/57] Compiling TextBuffer PuppetUndoManager.swift
[47/57] Compiling TextBuffer RopeBuffer.swift
[48/57] Compiling TextBuffer SendableRopeBuffer+Conversion.swift
[49/57] Compiling TextBuffer SendableRopeBuffer.swift
[50/57] Compiling TextBuffer TextAnalysisCapable.swift
[51/57] Compiling TextBuffer TextBuffer.swift
[52/57] Compiling TextBuffer TransferableUndoable.swift
[53/57] Compiling TextBuffer UTF16.swift
[54/57] Compiling TextBuffer MutableStringBuffer.swift
[55/57] Compiling TextBuffer NSMutableString+BufferCompatibility.swift
[56/57] Compiling TextBuffer NSTextViewBuffer.swift
[57/57] Compiling TextBuffer NSTextViewOperationLogBridge.swift
[58/89] Compiling DeclarativeTextKit Buffer+ModifiableBuffer.swift
[59/89] Compiling DeclarativeTextKit ModifiableBuffer+evaluate.swift
[60/89] Compiling DeclarativeTextKit ModifiableBuffer.swift
[61/89] Compiling DeclarativeTextKit BufferRangeExpression.swift
[62/89] Compiling DeclarativeTextKit LineRange.swift
[63/89] Compiling DeclarativeTextKit NSRange+BufferRangeExpression.swift
[64/89] Compiling DeclarativeTextKit Select.swift
[65/89] Compiling DeclarativeTextKit SelectedRange+BufferRangeExpression.swift
[66/89] Compiling DeclarativeTextKit WordRange.swift
[67/89] Compiling DeclarativeTextKit Identity.swift
[68/89] Compiling DeclarativeTextKit Insert+Modification.swift
[69/89] Compiling DeclarativeTextKit Insert.swift
[70/89] Compiling DeclarativeTextKit Insertable.swift
[71/92] Emitting module DeclarativeTextKit
[72/92] Compiling DeclarativeTextKit Line.swift
[73/92] Compiling DeclarativeTextKit String+Insertable.swift
[74/92] Compiling DeclarativeTextKit Word.swift
[75/92] Compiling DeclarativeTextKit Modification.swift
[76/92] Compiling DeclarativeTextKit Debug.swift
[77/92] Compiling DeclarativeTextKit Expression.swift
[78/92] Compiling DeclarativeTextKit If.swift
[79/92] Compiling DeclarativeTextKit IfLet.swift
[80/92] Compiling DeclarativeTextKit ModificationBuilder.swift
[81/92] Compiling DeclarativeTextKit ModificationSequence.swift
[82/92] Compiling DeclarativeTextKit Modifying.swift
[83/92] Compiling DeclarativeTextKit ScopedBufferSlice.swift
[84/92] Compiling DeclarativeTextKit AffectedRange.swift
[85/92] Compiling DeclarativeTextKit Buffer+SelectRangeExpression.swift
[86/92] Compiling DeclarativeTextKit ChangeInLength+Consume.swift
[87/92] Compiling DeclarativeTextKit ChangeInLength.swift
[88/92] Compiling DeclarativeTextKit Delete+Modification.swift
[89/92] Compiling DeclarativeTextKit Delete.swift
[90/92] Compiling DeclarativeTextKit Undoable+ModifiableBuffer.swift
[91/92] Compiling DeclarativeTextKit NSStringBuffer.swift
[92/92] Compiling DeclarativeTextKit SortedArray.swift
Build complete! (11.29s)
Build complete.
{
"dependencies" : [
{
"identity" : "textbuffer",
"requirement" : {
"range" : [
{
"lower_bound" : "0.12.0",
"upper_bound" : "1.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/CleanCocoa/TextBuffer"
}
],
"manifest_display_name" : "DeclarativeTextKit",
"name" : "DeclarativeTextKit",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "13.0"
}
],
"products" : [
{
"name" : "DeclarativeTextKit",
"targets" : [
"DeclarativeTextKit"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "DeclarativeTextKitTests",
"module_type" : "SwiftTarget",
"name" : "DeclarativeTextKitTests",
"path" : "Tests/DeclarativeTextKitTests",
"product_dependencies" : [
"TextBuffer",
"TextBufferTesting"
],
"sources" : [
"AffectedRangeTests.swift",
"AssertModification.swift",
"ConditionalTests.swift",
"DeleteTests.swift",
"Helpers.swift",
"InsertTests.swift",
"LoggingUndoManager.swift",
"ModifyingTests.swift",
"ScopedBufferSliceTests.swift",
"SelectTests.swift",
"UndoableBufferTests.swift",
"UseCaseTests.swift"
],
"target_dependencies" : [
"DeclarativeTextKit"
],
"type" : "test"
},
{
"c99name" : "DeclarativeTextKit",
"module_type" : "SwiftTarget",
"name" : "DeclarativeTextKit",
"path" : "Sources/DeclarativeTextKit",
"product_dependencies" : [
"TextBuffer"
],
"product_memberships" : [
"DeclarativeTextKit"
],
"sources" : [
"Expression/Debug.swift",
"Expression/Expression.swift",
"Expression/If.swift",
"Expression/IfLet.swift",
"Expression/Modification/ChangeInLength+Consume.swift",
"Expression/Modification/ChangeInLength.swift",
"Expression/Modification/Delete/Delete+Modification.swift",
"Expression/Modification/Delete/Delete.swift",
"Expression/Modification/Identity.swift",
"Expression/Modification/Insert/Insert+Modification.swift",
"Expression/Modification/Insert/Insert.swift",
"Expression/Modification/Insert/Insertable.swift",
"Expression/Modification/Insert/Line.swift",
"Expression/Modification/Insert/String+Insertable.swift",
"Expression/Modification/Insert/Word.swift",
"Expression/Modification/Modification.swift",
"Expression/Modification/ModificationBuilder.swift",
"Expression/Modification/ModificationSequence.swift",
"Expression/Modification/Modifying.swift",
"Expression/Modification/ScopedBufferSlice.swift",
"Expression/Select/AffectedRange.swift",
"Expression/Select/Buffer+SelectRangeExpression.swift",
"Expression/Select/BufferRangeExpression.swift",
"Expression/Select/LineRange.swift",
"Expression/Select/NSRange+BufferRangeExpression.swift",
"Expression/Select/Select.swift",
"Expression/Select/SelectedRange+BufferRangeExpression.swift",
"Expression/Select/WordRange.swift",
"ModifiableBuffer/Buffer+ModifiableBuffer.swift",
"ModifiableBuffer/ModifiableBuffer+evaluate.swift",
"ModifiableBuffer/ModifiableBuffer.swift",
"ModifiableBuffer/Undoable+ModifiableBuffer.swift",
"NSStringBuffer.swift",
"SortedArray.swift"
],
"type" : "library"
}
],
"tools_version" : "6.2"
}
✅ Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path: $PWD/.docs/cleancocoa/declarativetextkit/0.9.0
Repository: CleanCocoa/DeclarativeTextKit
Swift version used: 6.3
Target: DeclarativeTextKit
Extracting symbol information for 'DeclarativeTextKit'...
Finished extracting symbol information for 'DeclarativeTextKit'. (40.66s)
Building documentation for 'DeclarativeTextKit'...
warning: Can't resolve 'TextBuffer'
--> Documentation.md:51:11-51:29
49 | ### Buffers
50 |
51 + While a ``/TextBuffer/Buffer`` is an abstraction of textual content and a selection, a `ModifiableBuffer` offers declarative modifications. Its ``ModifiableBuffer/evaluate(_:)-44ndq`` is the simplest entry point to the DSL.
52 |
53 | - ``ModifiableBuffer``
warning: Can't resolve 'TextBuffer'
--> Runtime.md:19:6-19:43
17 | ```
18 |
19 + 1. ``/TextBuffer/Buffer/evaluate(_:)-7jmtt`` is called
20 | 2. the ``ModificationBuilder``-annotated block is executed:
21 | 1. ``Identity/init()`` is called to create the value,
warning: 'evaluate(in:)' doesn't exist at '/DeclarativeTextKit/Modification'
--> Runtime.md:31:64-31:77
29 | ## What is 'Runtime'?
30 |
31 + In the example above, step (3), the call to any ``Modification/evaluate(in:)`` starts the evaluation, including buffer mutations. That's the 'runtime'.
32 |
33 | During evaluation or 'runtime', ``AffectedRange`` values will self-update to represent changes to the selection in a buffer.
warning: 'evaluate(in:)' doesn't exist at '/DeclarativeTextKit/Modification'
--> Runtime.md:93:361-93:374
91 | That's why we don't support `if` in the Result Builder syntax: Because your expectations will not be met!
92 |
93 + Both conditions are checked at 'build time'. So if `fullRange.length == 0`, the Result Builder will insert the first block into the ``ModificationSequence``. But it won't insert the second block into the sequence, because as the second condition is evaluated, `fullRange.length` is still `0`. It will only change to `12` during 'runtime', when ``Modification/evaluate(in:)`` is executed -- which is *after* the ``ModificationSequence`` has been assembled by the Result Builder.
94 |
95 | So your actual result
warning: 'evaluate(in:)' doesn't exist at '/DeclarativeTextKit/Modification'
--> Runtime.md:103:83-103:96
101 | ## Solution: Evaluate Declarations Lazily
102 |
103 + Where possible, we can delay evaluation of Swift expressions until ``Modification/evaluate(in:)`` is run by wrapping values in closures, which are invisible thanks to `@autoclosure`.
104 |
105 | That's how a `Select(fullRange)` will always use the ``AffectedRange/value`` value that is available at 'runtime', not 'build time'.
warning: '2h76j' isn't a disambiguation for 'evaluate(in:)' at '/DeclarativeTextKit/Expression'
--> Runtime.md:109:202-109:208
107 | ### Lazy Conditions
108 |
109 + To achieve a similar 'runtime' evaluation with conditions, we introduced ``If`` and ``IfLet``. Both delay the evaluation of their respective conditions until the root block's ``Expression/evaluate(in:)-2h76j`` is run:
| ├─suggestion: Remove '-2h76j' for 'func evaluate(in buffer: any NSStringBuffer) -> Result<Self.Evaluation, Self.Failure>'
| ├─suggestion: Replace '2h76j' with '6aeax' for 'func evaluate(in buffer: any NSStringBuffer) -> Self.Evaluation'
| ╰─suggestion: Replace '2h76j' with '3drzg' for 'func evaluate(in buffer: any NSStringBuffer) throws -> Self.Evaluation'
110 |
111 | ```swift
warning: Can't resolve 'TextBuffer'
--> ../Expression/Modification/Insert/Insert.swift:5:43-5:61
3 | import TextBuffer
4 |
5 + /// Represents insertion of text into a ``/TextBuffer/Buffer``.
6 | ///
7 | /// ## Inserting in Multiple Locations at Once
Finished building documentation for 'DeclarativeTextKit' (0.80s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/cleancocoa/declarativetextkit/0.9.0
Fetching https://github.com/swiftlang/swift-docc-plugin
Updating https://github.com/CleanCocoa/TextBuffer
Updated https://github.com/CleanCocoa/TextBuffer (0.52s)
[1/2345] Fetching swift-docc-plugin
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (1.36s)
Computing version for https://github.com/CleanCocoa/TextBuffer
Computed https://github.com/CleanCocoa/TextBuffer at 0.12.0 (1.84s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.5.0 (2.23s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3831] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (1.37s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (2.08s)
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.5.0
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Building for debugging...
[0/8] Write sources
[1/8] Write snippet-extract-tool-entitlement.plist
[2/8] Write sources
[4/8] Write swift-version-69A768CDF2A0BEE1.txt
[6/54] Compiling Snippets SnippetLanguage.swift
[7/54] Compiling Snippets Snippet.swift
[8/54] Emitting module Snippets
[9/54] Compiling Snippets SnippetParser.swift
[10/54] Compiling SymbolKit GenericConstraint.swift
[11/54] Compiling SymbolKit GenericParameter.swift
[12/54] Compiling SymbolKit Generics.swift
[13/54] Compiling SymbolKit Namespace.swift
[14/54] Emitting module SymbolKit
[15/58] Compiling SymbolKit Identifier.swift
[16/58] Compiling SymbolKit KindIdentifier.swift
[17/58] Compiling SymbolKit Location.swift
[18/58] Compiling SymbolKit Mutability.swift
[19/58] Compiling SymbolKit Mixin+Equals.swift
[20/58] Compiling SymbolKit Mixin+Hash.swift
[21/58] Compiling SymbolKit Mixin.swift
[22/58] Compiling SymbolKit LineList.swift
[23/58] Compiling SymbolKit Position.swift
[24/58] Compiling SymbolKit DeclarationFragments.swift
[25/58] Compiling SymbolKit Fragment.swift
[26/58] Compiling SymbolKit FragmentKind.swift
[27/58] Compiling SymbolKit FunctionParameter.swift
[28/58] Compiling SymbolKit FunctionSignature.swift
[29/58] Compiling SymbolKit SemanticVersion.swift
[30/58] Compiling SymbolKit AccessControl.swift
[31/58] Compiling SymbolKit Availability.swift
[32/58] Compiling SymbolKit AvailabilityItem.swift
[33/58] Compiling SymbolKit Domain.swift
[34/58] Compiling SymbolKit SourceRange.swift
[35/58] Compiling SymbolKit Metadata.swift
[36/58] Compiling SymbolKit Module.swift
[37/58] Compiling SymbolKit OperatingSystem.swift
[38/58] Compiling SymbolKit Platform.swift
[39/58] Compiling SymbolKit Relationship.swift
[40/58] Compiling SymbolKit RelationshipKind.swift
[41/58] Compiling SymbolKit SourceOrigin.swift
[42/58] Compiling SymbolKit GenericConstraints.swift
[43/58] Compiling SymbolKit Swift.swift
[44/58] Compiling SymbolKit Symbol.swift
[45/58] Compiling SymbolKit SymbolKind.swift
[46/58] Compiling SymbolKit SymbolGraph.swift
[47/58] Compiling SymbolKit GraphCollector.swift
[48/58] Compiling SymbolKit Names.swift
[49/58] Compiling SymbolKit SPI.swift
[50/58] Compiling SymbolKit Snippet.swift
[51/58] Compiling SymbolKit Extension.swift
[52/58] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[53/58] Compiling SymbolKit UnifiedSymbol.swift
[54/58] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[55/58] Compiling SymbolKit UnifiedSymbolGraph.swift
[56/62] Compiling snippet_extract URL+Status.swift
[57/62] Compiling snippet_extract SymbolGraph+Snippet.swift
[58/62] Compiling snippet_extract SnippetBuildCommand.swift
[59/62] Emitting module snippet_extract
[59/62] Write Objects.LinkFileList
[60/62] Linking snippet-extract-tool
[61/62] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (4.62s)
Building for debugging...
[0/1] Write swift-version-69A768CDF2A0BEE1.txt
Build of target: 'DeclarativeTextKit' complete! (0.29s)
432
4 /Users/admin/builder/spi-builder-workspace/.docs/cleancocoa/declarativetextkit/0.9.0
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/cleancocoa/declarativetextkit/0.9.0
File count: 432
Doc size: 4.0MB
Preparing doc bundle ...
Using presigned URL upload - AWS credentials not required
Uploading -cleancocoa-declarativetextkit-0.9.0-adde6e31.zip to presigned URL
Starting upload of 812598 bytes...
Upload completed successfully
Done.