The Swift Package Index logo.Swift Package Index

Build Information

Successful build of DeclarativeTextKit, reference main (fdb206), with Swift 6.3 for macOS (SPM) on 26 Sep 2026 08:55:03 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-26.5.0.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/CleanCocoa/DeclarativeTextKit.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/CleanCocoa/DeclarativeTextKit
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at fdb2069 Fix CI: use Xcode 26.2 on macOS 15 for Swift tools 6.2
Cloned https://github.com/CleanCocoa/DeclarativeTextKit.git
Revision (git rev-parse @):
fdb2069a5df4b32791bf2305d42f118740f1d529
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/CleanCocoa/DeclarativeTextKit.git at main
Fetching https://github.com/CleanCocoa/TextBuffer
[1/2701] Fetching textbuffer
Fetched https://github.com/CleanCocoa/TextBuffer from cache (1.28s)
Computing version for https://github.com/CleanCocoa/TextBuffer
Computed https://github.com/CleanCocoa/TextBuffer at 0.12.0 (1.84s)
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.05s)
Fetching https://github.com/CleanCocoa/TextBuffer from cache
Fetched https://github.com/CleanCocoa/TextBuffer from cache (0.51s)
Computing version for https://github.com/CleanCocoa/TextBuffer
Computed https://github.com/CleanCocoa/TextBuffer at 0.12.0 (0.56s)
Creating working copy for https://github.com/CleanCocoa/TextBuffer
Working copy of https://github.com/CleanCocoa/TextBuffer resolved at 0.12.0
Creating working copy for https://github.com/CleanCocoa/DeclarativeTextKit.git
Working copy of https://github.com/CleanCocoa/DeclarativeTextKit.git resolved at main (fdb2069)
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+Replace.swift
[6/15] Compiling TextRope TextRope+Navigation.swift
[7/16] Compiling TextRope TextRope+Delete.swift
[8/16] Compiling TextRope TextRope+Construction.swift
[9/16] Compiling TextRope TextRope+COW.swift
[10/16] Compiling TextRope TextRope+Insert.swift
[11/16] Compiling TextRope Summary.swift
[12/16] Emitting module TextRope
[13/16] Compiling TextRope Node+Merge.swift
[14/16] Compiling TextRope Node+Split.swift
[15/16] Compiling TextRope Node.swift
[16/16] Compiling TextRope TextRope.swift
[17/53] Emitting module TextBuffer
[18/57] Compiling TextBuffer NSRange+expandedToOther.swift
[19/57] Compiling TextBuffer NSRange+notFound.swift
[20/57] Compiling TextBuffer NSRange+prefix.swift
[21/57] Compiling TextBuffer NSRange+suffix.swift
[22/57] Compiling TextBuffer Bool+inverted.swift
[23/57] Compiling TextBuffer AsyncBuffer.swift
[24/57] Compiling TextBuffer Buffer+contains.swift
[25/57] Compiling TextBuffer Buffer+wordRange.swift
[26/57] Compiling TextBuffer NSRange+Resized.swift
[27/57] Compiling TextBuffer NSRange+Shifted.swift
[28/57] Compiling TextBuffer NSRange+Subtracting.swift
[29/57] Compiling TextBuffer NSRange+containsRange.swift
[30/57] Compiling TextBuffer Undoable+NSTextViewBuffer.swift
[31/57] Compiling TextBuffer Undoable.swift
[32/57] Compiling TextBuffer Exports.swift
[33/57] Compiling TextBuffer NSRange+Order.swift
[34/57] Compiling TextBuffer TextRope+ComposedSequences.swift
[35/57] Compiling TextBuffer TextRope+LineRange.swift
[36/57] Compiling TextBuffer TextRope+NSRange.swift
[37/57] Compiling TextBuffer TextRope+WordRange.swift
[38/57] Compiling TextBuffer NSString+locationUpToCharacter.swift
[39/57] Compiling TextBuffer BufferOperation.swift
[40/57] Compiling TextBuffer OperationLog.swift
[41/57] Compiling TextBuffer UndoGroup.swift
[42/57] Compiling TextBuffer Buffer.swift
[43/57] Compiling TextBuffer BufferAccessFailure.swift
[44/57] Compiling TextBuffer BufferContent.swift
[45/57] Compiling TextBuffer BufferRange.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 Select.swift
[59/89] Compiling DeclarativeTextKit SelectedRange+BufferRangeExpression.swift
[60/89] Compiling DeclarativeTextKit WordRange.swift
[61/92] Compiling DeclarativeTextKit ModificationBuilder.swift
[62/92] Compiling DeclarativeTextKit ModificationSequence.swift
[63/92] Compiling DeclarativeTextKit Modifying.swift
[64/92] Compiling DeclarativeTextKit BufferRangeExpression.swift
[65/92] Compiling DeclarativeTextKit LineRange.swift
[66/92] Compiling DeclarativeTextKit NSRange+BufferRangeExpression.swift
[67/92] Compiling DeclarativeTextKit Buffer+ModifiableBuffer.swift
[68/92] Compiling DeclarativeTextKit ModifiableBuffer+evaluate.swift
[69/92] Compiling DeclarativeTextKit ModifiableBuffer.swift
[70/92] Compiling DeclarativeTextKit Debug.swift
[71/92] Compiling DeclarativeTextKit Expression.swift
[72/92] Compiling DeclarativeTextKit If.swift
[73/92] Compiling DeclarativeTextKit IfLet.swift
[74/92] Compiling DeclarativeTextKit Identity.swift
[75/92] Compiling DeclarativeTextKit Insert+Modification.swift
[76/92] Compiling DeclarativeTextKit Insert.swift
[77/92] Compiling DeclarativeTextKit Insertable.swift
[78/92] Emitting module DeclarativeTextKit
[79/92] Compiling DeclarativeTextKit ScopedBufferSlice.swift
[80/92] Compiling DeclarativeTextKit AffectedRange.swift
[81/92] Compiling DeclarativeTextKit Buffer+SelectRangeExpression.swift
[82/92] Compiling DeclarativeTextKit Line.swift
[83/92] Compiling DeclarativeTextKit String+Insertable.swift
[84/92] Compiling DeclarativeTextKit Word.swift
[85/92] Compiling DeclarativeTextKit Modification.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.64s)
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/main
Repository:               CleanCocoa/DeclarativeTextKit
Swift version used:       6.3
Target:                   DeclarativeTextKit
Extracting symbol information for 'DeclarativeTextKit'...
Finished extracting symbol information for 'DeclarativeTextKit'. (41.08s)
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.85s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/cleancocoa/declarativetextkit/main
Fetching https://github.com/swiftlang/swift-docc-plugin
Updating https://github.com/CleanCocoa/TextBuffer
Updated https://github.com/CleanCocoa/TextBuffer (0.51s)
[1/2345] Fetching swift-docc-plugin
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (1.34s)
Computing version for https://github.com/CleanCocoa/TextBuffer
Computed https://github.com/CleanCocoa/TextBuffer at 0.12.0 (1.90s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.5.0 (2.26s)
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.36s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (2.10s)
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
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
Building for debugging...
[0/8] Write sources
[0/8] Write snippet-extract-tool-entitlement.plist
[4/8] Write swift-version-69A768CDF2A0BEE1.txt
[6/54] Compiling SymbolKit DeclarationFragments.swift
[7/54] Compiling SymbolKit Fragment.swift
[8/54] Compiling SymbolKit FragmentKind.swift
[9/54] Compiling SymbolKit FunctionParameter.swift
[10/54] Compiling SymbolKit FunctionSignature.swift
[11/55] Compiling Snippets Snippet.swift
[12/56] Compiling Snippets SnippetLanguage.swift
[13/56] Emitting module Snippets
[14/57] Compiling Snippets SnippetParser.swift
[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 SourceRange.swift
[20/58] Compiling SymbolKit Metadata.swift
[21/58] Compiling SymbolKit Module.swift
[22/58] Compiling SymbolKit OperatingSystem.swift
[23/58] Compiling SymbolKit Platform.swift
[24/58] Compiling SymbolKit GenericConstraint.swift
[25/58] Compiling SymbolKit GenericParameter.swift
[26/58] Compiling SymbolKit Generics.swift
[27/58] Compiling SymbolKit Namespace.swift
[28/58] Emitting module SymbolKit
[29/58] Compiling SymbolKit Symbol.swift
[30/58] Compiling SymbolKit SymbolKind.swift
[31/58] Compiling SymbolKit SymbolGraph.swift
[32/58] Compiling SymbolKit GraphCollector.swift
[33/58] Compiling SymbolKit Relationship.swift
[34/58] Compiling SymbolKit RelationshipKind.swift
[35/58] Compiling SymbolKit SourceOrigin.swift
[36/58] Compiling SymbolKit GenericConstraints.swift
[37/58] Compiling SymbolKit Swift.swift
[38/58] Compiling SymbolKit SemanticVersion.swift
[39/58] Compiling SymbolKit AccessControl.swift
[40/58] Compiling SymbolKit Availability.swift
[41/58] Compiling SymbolKit AvailabilityItem.swift
[42/58] Compiling SymbolKit Domain.swift
[43/58] Compiling SymbolKit Names.swift
[44/58] Compiling SymbolKit SPI.swift
[45/58] Compiling SymbolKit Snippet.swift
[46/58] Compiling SymbolKit Extension.swift
[47/58] Compiling SymbolKit Mixin+Equals.swift
[48/58] Compiling SymbolKit Mixin+Hash.swift
[49/58] Compiling SymbolKit Mixin.swift
[50/58] Compiling SymbolKit LineList.swift
[51/58] Compiling SymbolKit Position.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] Emitting module snippet_extract
[59/62] Compiling snippet_extract SnippetBuildCommand.swift
[59/62] Write Objects.LinkFileList
[60/62] Linking snippet-extract-tool
[61/62] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (4.54s)
Building for debugging...
[0/1] Write swift-version-69A768CDF2A0BEE1.txt
Build of target: 'DeclarativeTextKit' complete! (0.26s)
     432
4	/Users/admin/builder/spi-builder-workspace/.docs/cleancocoa/declarativetextkit/main
✅  Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/cleancocoa/declarativetextkit/main
File count: 432
Doc size:   4.0MB
Preparing doc bundle ...
Using presigned URL upload - AWS credentials not required
Uploading -cleancocoa-declarativetextkit-main-58c4e44f.zip to presigned URL
Starting upload of 811874 bytes...
Upload completed successfully
Done.