Build Information
Successful build of swift-tools-support-async, reference main (8fcd85
), with Swift 6.0 for Linux on 24 Jan 2025 13:00:15 UTC.
Swift 6 data race errors: 18
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4606859-2":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures 2>&1
Build Log
359 | }
360 | return LLBCASFileTree.create(files: files, in: db, posixDetails: reversedTrees.first!.posixDetails, ctx)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:360:78: warning: capture of 'reversedTrees' with non-sendable type '[LLBCASFileTree]' in a `@Sendable` closure
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
358 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
359 | }
360 | return LLBCASFileTree.create(files: files, in: db, posixDetails: reversedTrees.first!.posixDetails, ctx)
| `- warning: capture of 'reversedTrees' with non-sendable type '[LLBCASFileTree]' in a `@Sendable` closure
361 | }
362 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:358:17: warning: mutation of captured var 'files' in concurrently-executing code
356 | return LLBFuture.whenAllSucceed(futures, on: db.group.next()).flatMap { mergedEntries in
357 | for (idx, name, result, posixDetails) in mergedEntries {
358 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
| `- warning: mutation of captured var 'files' in concurrently-executing code
359 | }
360 | return LLBCASFileTree.create(files: files, in: db, posixDetails: reversedTrees.first!.posixDetails, ctx)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:360:49: warning: reference to captured var 'files' in concurrently-executing code
358 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
359 | }
360 | return LLBCASFileTree.create(files: files, in: db, posixDetails: reversedTrees.first!.posixDetails, ctx)
| `- warning: reference to captured var 'files' in concurrently-executing code
361 | }
362 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:371:64: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
369 | public func lookup(path: AbsolutePath, in db: LLBCASDatabase, _ ctx: Context) -> LLBFuture<(id: LLBDataID, info: LLBDirectoryEntry)?> {
370 | // Resolve the parent tree.
371 | var tree: LLBFuture<LLBCASFileTree?> = db.group.next().makeSucceededFuture(self)
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 | for component in path.parentDirectory.components.dropFirst() {
373 | tree = tree.flatMap { tree in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:373:25: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
371 | var tree: LLBFuture<LLBCASFileTree?> = db.group.next().makeSucceededFuture(self)
372 | for component in path.parentDirectory.components.dropFirst() {
373 | tree = tree.flatMap { tree in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
374 | guard let tree = tree,
375 | let result = tree.lookup(component),
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:377:44: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
375 | let result = tree.lookup(component),
376 | result.info.type == .directory else {
377 | return db.group.next().makeSucceededFuture(nil)
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
378 | }
379 | return db.get(result.id, ctx).flatMapThrowing { objectOpt in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:415:71: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
413 | ) -> LLBFuture<LLBCASFileTree> {
414 | // Create a new tree with `tree` nested at `path`, then merge.
415 | var rerootedTree: LLBFuture<LLBCASFileTree> = db.group.next().makeSucceededFuture(tree)
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
416 | for component in path.components.dropFirst().reversed() {
417 | rerootedTree = rerootedTree.flatMap { tree in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:417:41: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
415 | var rerootedTree: LLBFuture<LLBCASFileTree> = db.group.next().makeSucceededFuture(tree)
416 | for component in path.components.dropFirst().reversed() {
417 | rerootedTree = rerootedTree.flatMap { tree in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
418 | return LLBCASFileTree.create(files: [
419 | .init(info: LLBDirectoryEntry(name: component, type: .directory, size: tree.aggregateSize,
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:425:29: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
423 | }
424 |
425 | return rerootedTree.flatMap { tree in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
426 | self.merge(with: tree, in: db, ctx)
427 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:421:64: warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
419 | .init(info: LLBDirectoryEntry(name: component, type: .directory, size: tree.aggregateSize,
420 | posixDetails: tree.posixDetails),
421 | id: tree.id)], in: db, posixDetails: self.posixDetails, ctx)
| `- warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
422 | }
423 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:426:13: warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
424 |
425 | return rerootedTree.flatMap { tree in
426 | self.merge(with: tree, in: db, ctx)
| `- warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
427 | }
428 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:443:36: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
441 | let indexOpt = lookupIndex(components.first!)
442 | guard let index = indexOpt else {
443 | return db.group.next().makeSucceededFuture(self)
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
444 | }
445 | // Go deeper and recreate this tree
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:447:35: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
445 | // Go deeper and recreate this tree
446 | let subId = object.refs[index]
447 | return db.get(subId, ctx).flatMap { objectOpt in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
448 | let subtree: LLBCASFileTree
449 | do {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:457:84: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
455 | return db.group.next().makeFailedFuture(LLBCASFileTreeError.notDirectory)
456 | }
457 | return subtree.remove(components: components.dropFirst(), in: db, ctx).flatMap { newSubtree in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
458 | var newFiles = self.files
459 | var newRefs = self.object.refs
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:458:32: warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
456 | }
457 | return subtree.remove(components: components.dropFirst(), in: db, ctx).flatMap { newSubtree in
458 | var newFiles = self.files
| `- warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
459 | var newRefs = self.object.refs
460 | newFiles[index].size = .init(clamping: newSubtree.aggregateSize)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:458:32: warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
456 | }
457 | return subtree.remove(components: components.dropFirst(), in: db, ctx).flatMap { newSubtree in
458 | var newFiles = self.files
| `- warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
459 | var newRefs = self.object.refs
460 | newFiles[index].size = .init(clamping: newSubtree.aggregateSize)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:472:36: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
470 | guard let index = indexOpt else {
471 | // No modifications
472 | return db.group.next().makeSucceededFuture(self)
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
473 | }
474 | // Create new tree without component to remove
[473/482] Compiling TSFCASFileTree FileTree.swift
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:147:73: warning: reference to captured var 'refs' in concurrently-executing code
145 | // API should be fixed. One option would be to change this class so
146 | // it can directly operate on the encoded representation.
147 | return try self.init(id: id, object: LLBCASObject(refs: refs, data: dirBytes))
| `- warning: reference to captured var 'refs' in concurrently-executing code
148 | }
149 | } catch {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:147:85: warning: reference to captured var 'dirBytes' in concurrently-executing code
145 | // API should be fixed. One option would be to change this class so
146 | // it can directly operate on the encoded representation.
147 | return try self.init(id: id, object: LLBCASObject(refs: refs, data: dirBytes))
| `- warning: reference to captured var 'dirBytes' in concurrently-executing code
148 | }
149 | } catch {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:246:36: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
244 | return try LLBCASFileTree(id: b.1, object: object)
245 | }
246 | let merged = aTree.and(bTree).flatMap { pair in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
247 | return pair.0.merge(with: pair.1, in: db, ctx)
248 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:246:47: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
244 | return try LLBCASFileTree(id: b.1, object: object)
245 | }
246 | let merged = aTree.and(bTree).flatMap { pair in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
247 | return pair.0.merge(with: pair.1, in: db, ctx)
248 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:260:26: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
258 | }
259 |
260 | return LLBFuture.whenAllSucceed(futures, on: db.group.next()).flatMap { mergedEntries in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
261 | for (idx, name, result, posixDetails) in mergedEntries {
262 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:260:71: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
258 | }
259 |
260 | return LLBFuture.whenAllSucceed(futures, on: db.group.next()).flatMap { mergedEntries in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
261 | for (idx, name, result, posixDetails) in mergedEntries {
262 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:262:17: warning: capture of 'files' with non-sendable type '[LLBDirectoryEntryID]' in a `@Sendable` closure
25 | }
26 |
27 | public struct LLBDirectoryEntryID {
| `- note: consider making struct 'LLBDirectoryEntryID' conform to the 'Sendable' protocol
28 | public let info: LLBDirectoryEntry
29 | public let id: LLBDataID
:
260 | return LLBFuture.whenAllSucceed(futures, on: db.group.next()).flatMap { mergedEntries in
261 | for (idx, name, result, posixDetails) in mergedEntries {
262 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
| `- warning: capture of 'files' with non-sendable type '[LLBDirectoryEntryID]' in a `@Sendable` closure
263 | }
264 | return LLBCASFileTree.create(files: files, in: db, posixDetails: self.posixDetails, ctx)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:264:78: warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
262 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
263 | }
264 | return LLBCASFileTree.create(files: files, in: db, posixDetails: self.posixDetails, ctx)
| `- warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
265 | }
266 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:262:17: warning: mutation of captured var 'files' in concurrently-executing code
260 | return LLBFuture.whenAllSucceed(futures, on: db.group.next()).flatMap { mergedEntries in
261 | for (idx, name, result, posixDetails) in mergedEntries {
262 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
| `- warning: mutation of captured var 'files' in concurrently-executing code
263 | }
264 | return LLBCASFileTree.create(files: files, in: db, posixDetails: self.posixDetails, ctx)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:264:49: warning: reference to captured var 'files' in concurrently-executing code
262 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
263 | }
264 | return LLBCASFileTree.create(files: files, in: db, posixDetails: self.posixDetails, ctx)
| `- warning: reference to captured var 'files' in concurrently-executing code
265 | }
266 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:285:36: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
283 | }
284 | guard trees.count > 1 else {
285 | return db.group.next().makeSucceededFuture(trees[0])
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
286 | }
287 |
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:345:36: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
343 | }
344 | }
345 | let merged = LLBFuture.whenAllSucceed(treesToMerge, on: db.group.next()).flatMap {
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
346 | return _merge(reversedTrees: $0, in: db, ctx)
347 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:345:86: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
343 | }
344 | }
345 | let merged = LLBFuture.whenAllSucceed(treesToMerge, on: db.group.next()).flatMap {
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
346 | return _merge(reversedTrees: $0, in: db, ctx)
347 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:356:26: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
354 |
355 | // Wait for all the outstanding submerges.
356 | return LLBFuture.whenAllSucceed(futures, on: db.group.next()).flatMap { mergedEntries in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
357 | for (idx, name, result, posixDetails) in mergedEntries {
358 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:356:71: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
354 |
355 | // Wait for all the outstanding submerges.
356 | return LLBFuture.whenAllSucceed(futures, on: db.group.next()).flatMap { mergedEntries in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
357 | for (idx, name, result, posixDetails) in mergedEntries {
358 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:358:17: warning: capture of 'files' with non-sendable type '[LLBDirectoryEntryID]' in a `@Sendable` closure
25 | }
26 |
27 | public struct LLBDirectoryEntryID {
| `- note: consider making struct 'LLBDirectoryEntryID' conform to the 'Sendable' protocol
28 | public let info: LLBDirectoryEntry
29 | public let id: LLBDataID
:
356 | return LLBFuture.whenAllSucceed(futures, on: db.group.next()).flatMap { mergedEntries in
357 | for (idx, name, result, posixDetails) in mergedEntries {
358 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
| `- warning: capture of 'files' with non-sendable type '[LLBDirectoryEntryID]' in a `@Sendable` closure
359 | }
360 | return LLBCASFileTree.create(files: files, in: db, posixDetails: reversedTrees.first!.posixDetails, ctx)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:360:78: warning: capture of 'reversedTrees' with non-sendable type '[LLBCASFileTree]' in a `@Sendable` closure
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
358 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
359 | }
360 | return LLBCASFileTree.create(files: files, in: db, posixDetails: reversedTrees.first!.posixDetails, ctx)
| `- warning: capture of 'reversedTrees' with non-sendable type '[LLBCASFileTree]' in a `@Sendable` closure
361 | }
362 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:358:17: warning: mutation of captured var 'files' in concurrently-executing code
356 | return LLBFuture.whenAllSucceed(futures, on: db.group.next()).flatMap { mergedEntries in
357 | for (idx, name, result, posixDetails) in mergedEntries {
358 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
| `- warning: mutation of captured var 'files' in concurrently-executing code
359 | }
360 | return LLBCASFileTree.create(files: files, in: db, posixDetails: reversedTrees.first!.posixDetails, ctx)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:360:49: warning: reference to captured var 'files' in concurrently-executing code
358 | files[idx] = .init(info: LLBDirectoryEntry(name: name, type: .directory, size: result.aggregateSize, posixDetails: posixDetails), id: result.id)
359 | }
360 | return LLBCASFileTree.create(files: files, in: db, posixDetails: reversedTrees.first!.posixDetails, ctx)
| `- warning: reference to captured var 'files' in concurrently-executing code
361 | }
362 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:371:64: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
369 | public func lookup(path: AbsolutePath, in db: LLBCASDatabase, _ ctx: Context) -> LLBFuture<(id: LLBDataID, info: LLBDirectoryEntry)?> {
370 | // Resolve the parent tree.
371 | var tree: LLBFuture<LLBCASFileTree?> = db.group.next().makeSucceededFuture(self)
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 | for component in path.parentDirectory.components.dropFirst() {
373 | tree = tree.flatMap { tree in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:373:25: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
371 | var tree: LLBFuture<LLBCASFileTree?> = db.group.next().makeSucceededFuture(self)
372 | for component in path.parentDirectory.components.dropFirst() {
373 | tree = tree.flatMap { tree in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
374 | guard let tree = tree,
375 | let result = tree.lookup(component),
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:377:44: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
375 | let result = tree.lookup(component),
376 | result.info.type == .directory else {
377 | return db.group.next().makeSucceededFuture(nil)
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
378 | }
379 | return db.get(result.id, ctx).flatMapThrowing { objectOpt in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:415:71: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
413 | ) -> LLBFuture<LLBCASFileTree> {
414 | // Create a new tree with `tree` nested at `path`, then merge.
415 | var rerootedTree: LLBFuture<LLBCASFileTree> = db.group.next().makeSucceededFuture(tree)
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
416 | for component in path.components.dropFirst().reversed() {
417 | rerootedTree = rerootedTree.flatMap { tree in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:417:41: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
415 | var rerootedTree: LLBFuture<LLBCASFileTree> = db.group.next().makeSucceededFuture(tree)
416 | for component in path.components.dropFirst().reversed() {
417 | rerootedTree = rerootedTree.flatMap { tree in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
418 | return LLBCASFileTree.create(files: [
419 | .init(info: LLBDirectoryEntry(name: component, type: .directory, size: tree.aggregateSize,
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:425:29: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
423 | }
424 |
425 | return rerootedTree.flatMap { tree in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
426 | self.merge(with: tree, in: db, ctx)
427 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:421:64: warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
419 | .init(info: LLBDirectoryEntry(name: component, type: .directory, size: tree.aggregateSize,
420 | posixDetails: tree.posixDetails),
421 | id: tree.id)], in: db, posixDetails: self.posixDetails, ctx)
| `- warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
422 | }
423 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:426:13: warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
424 |
425 | return rerootedTree.flatMap { tree in
426 | self.merge(with: tree, in: db, ctx)
| `- warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
427 | }
428 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:443:36: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
441 | let indexOpt = lookupIndex(components.first!)
442 | guard let index = indexOpt else {
443 | return db.group.next().makeSucceededFuture(self)
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
444 | }
445 | // Go deeper and recreate this tree
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:447:35: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
445 | // Go deeper and recreate this tree
446 | let subId = object.refs[index]
447 | return db.get(subId, ctx).flatMap { objectOpt in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
448 | let subtree: LLBCASFileTree
449 | do {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:457:84: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
455 | return db.group.next().makeFailedFuture(LLBCASFileTreeError.notDirectory)
456 | }
457 | return subtree.remove(components: components.dropFirst(), in: db, ctx).flatMap { newSubtree in
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
458 | var newFiles = self.files
459 | var newRefs = self.object.refs
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:458:32: warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
456 | }
457 | return subtree.remove(components: components.dropFirst(), in: db, ctx).flatMap { newSubtree in
458 | var newFiles = self.files
| `- warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
459 | var newRefs = self.object.refs
460 | newFiles[index].size = .init(clamping: newSubtree.aggregateSize)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:458:32: warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
456 | }
457 | return subtree.remove(components: components.dropFirst(), in: db, ctx).flatMap { newSubtree in
458 | var newFiles = self.files
| `- warning: capture of 'self' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
459 | var newRefs = self.object.refs
460 | newFiles[index].size = .init(clamping: newSubtree.aggregateSize)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:472:36: warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
:
470 | guard let index = indexOpt else {
471 | // No modifications
472 | return db.group.next().makeSucceededFuture(self)
| `- warning: type 'LLBCASFileTree' does not conform to the 'Sendable' protocol
473 | }
474 | // Create new tree without component to remove
[474/482] Compiling TSFCASFileTree FilesystemObject.swift
/host/spi-builder-workspace/Sources/TSFCASFileTree/Generated/CASFileTreeProtocol/file_tree.pb.swift:77:21: warning: static property 'allCases' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
75 | extension LLBFileType: CaseIterable {
76 | // The compiler won't synthesize support with the UNRECOGNIZED case.
77 | public static var allCases: [LLBFileType] = [
| |- warning: static property 'allCases' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'allCases' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'allCases' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
78 | .plainFile,
79 | .executable,
/host/spi-builder-workspace/Sources/TSFCASFileTree/Generated/CASFileTreeProtocol/file_tree.pb.swift:118:21: warning: static property 'allCases' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
116 | extension LLBFileDataCompressionMethod: CaseIterable {
117 | // The compiler won't synthesize support with the UNRECOGNIZED case.
118 | public static var allCases: [LLBFileDataCompressionMethod] = [
| |- warning: static property 'allCases' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'allCases' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'allCases' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
119 | .none,
120 | ]
[475/482] Compiling TSFCASFileTree file_tree.pb.swift
/host/spi-builder-workspace/Sources/TSFCASFileTree/Generated/CASFileTreeProtocol/file_tree.pb.swift:77:21: warning: static property 'allCases' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
75 | extension LLBFileType: CaseIterable {
76 | // The compiler won't synthesize support with the UNRECOGNIZED case.
77 | public static var allCases: [LLBFileType] = [
| |- warning: static property 'allCases' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'allCases' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'allCases' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
78 | .plainFile,
79 | .executable,
/host/spi-builder-workspace/Sources/TSFCASFileTree/Generated/CASFileTreeProtocol/file_tree.pb.swift:118:21: warning: static property 'allCases' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
116 | extension LLBFileDataCompressionMethod: CaseIterable {
117 | // The compiler won't synthesize support with the UNRECOGNIZED case.
118 | public static var allCases: [LLBFileDataCompressionMethod] = [
| |- warning: static property 'allCases' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'allCases' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'allCases' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
119 | .none,
120 | ]
[476/482] Compiling TSFCASFileTree CASFSNode.swift
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:45:38: warning: capture of 'self' with non-sendable type 'ConcurrentHierarchyWalker<Item>' in a `@Sendable` closure
25 |
26 | /// Walk the hierarchy with bounded concurrency.
27 | final class ConcurrentHierarchyWalker<Item> {
| `- note: generic class 'ConcurrentHierarchyWalker' does not conform to the 'Sendable' protocol
28 |
29 | private let group: LLBFuturesDispatchGroup
:
43 | self.getChildren(item, ctx)
44 | }.flatMap { more in
45 | let futures = more.map { self.walk($0, ctx) }
| `- warning: capture of 'self' with non-sendable type 'ConcurrentHierarchyWalker<Item>' in a `@Sendable` closure
46 | return LLBFuture.whenAllSucceed(futures, on: self.group.next()).map { _ in () }
47 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:45:38: warning: capture of 'self' with non-sendable type 'ConcurrentHierarchyWalker<Item>' in an isolated closure; this is an error in the Swift 6 language mode
25 |
26 | /// Walk the hierarchy with bounded concurrency.
27 | final class ConcurrentHierarchyWalker<Item> {
| `- note: generic class 'ConcurrentHierarchyWalker' does not conform to the 'Sendable' protocol
28 |
29 | private let group: LLBFuturesDispatchGroup
:
43 | self.getChildren(item, ctx)
44 | }.flatMap { more in
45 | let futures = more.map { self.walk($0, ctx) }
| `- warning: capture of 'self' with non-sendable type 'ConcurrentHierarchyWalker<Item>' in an isolated closure; this is an error in the Swift 6 language mode
46 | return LLBFuture.whenAllSucceed(futures, on: self.group.next()).map { _ in () }
47 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:100:13: warning: capture of 'root' with non-sendable type 'LLBConcurrentFileTreeWalker.Item' in a `@Sendable` closure
60 | }
61 |
62 | public struct Item {
| `- note: consider making struct 'Item' conform to the 'Sendable' protocol
63 | /// The description of the current CAS filesystem entry.
64 | let arg: FilterArgument
:
98 | let walker = ConcurrentHierarchyWalker(group: db.group, delegate: self)
99 | return walker.walk(root, ctx).map { () in
100 | root.scanResult.reapResult()
| `- warning: capture of 'root' with non-sendable type 'LLBConcurrentFileTreeWalker.Item' in a `@Sendable` closure
101 | }
102 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:115:33: warning: capture of 'item' with non-sendable type 'LLBConcurrentFileTreeWalker.Item' in a `@Sendable` closure
60 | }
61 |
62 | public struct Item {
| `- note: consider making struct 'Item' conform to the 'Sendable' protocol
63 | /// The description of the current CAS filesystem entry.
64 | let arg: FilterArgument
:
113 |
114 | return client.load(item.id, type: typeHint, ctx).map { node in
115 | if typeHint == nil, item.arg.path == .root, item.arg.size == 0 {
| `- warning: capture of 'item' with non-sendable type 'LLBConcurrentFileTreeWalker.Item' in a `@Sendable` closure
116 | // This is our root. Check if we're allowed to go past it.
117 | let dirEntry = node.asDirectoryEntry(filename: "-")
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:119:23: warning: capture of 'self' with non-sendable type 'LLBConcurrentFileTreeWalker' in a `@Sendable` closure
49 | }
50 |
51 | public class LLBConcurrentFileTreeWalker: RetrieveChildrenProtocol {
| `- note: class 'LLBConcurrentFileTreeWalker' does not conform to the 'Sendable' protocol
52 | let db: LLBCASDatabase
53 | let client: LLBCASFSClient
:
117 | let dirEntry = node.asDirectoryEntry(filename: "-")
118 | let rootItem = Item(arg: FilterArgument(path: node.tree != nil ? .root : nil, type: dirEntry.info.type, size: Int(clamping: dirEntry.info.size)), id: dirEntry.id, scanResult: item.scanResult)
119 | guard self.filter(rootItem) else {
| `- warning: capture of 'self' with non-sendable type 'LLBConcurrentFileTreeWalker' in a `@Sendable` closure
120 | return []
121 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/Context.swift:35:24: warning: static property 'fileTreeExportStorageBatcherKey' is not concurrency-safe because non-'Sendable' type 'ContextKey' may have shared mutable state; this is an error in the Swift 6 language mode
9 | import TSCUtility
10 |
11 | private final class ContextKey {}
| `- note: class 'ContextKey' does not conform to the 'Sendable' protocol
12 |
13 | /// Support storing and retrieving file tree import options from a context
:
33 | /// Support storing and retrieving file tree export storage batcher from a context
34 | public extension Context {
35 | private static let fileTreeExportStorageBatcherKey = ContextKey()
| |- warning: static property 'fileTreeExportStorageBatcherKey' is not concurrency-safe because non-'Sendable' type 'ContextKey' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'fileTreeExportStorageBatcherKey' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 |
37 | var fileTreeExportStorageBatcher: LLBBatchingFutureOperationQueue? {
/host/spi-builder-workspace/Sources/TSFCASFileTree/Context.swift:16:97: warning: type 'Any' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
14 | public extension Context {
15 | static func with(_ options: LLBCASFileTree.ImportOptions) -> Context {
16 | return Context(dictionaryLiteral: (ObjectIdentifier(LLBCASFileTree.ImportOptions.self), options as Any))
| `- warning: type 'Any' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
17 | }
18 |
[477/482] Compiling TSFCASFileTree ConcurrentFileTreeWalker.swift
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:45:38: warning: capture of 'self' with non-sendable type 'ConcurrentHierarchyWalker<Item>' in a `@Sendable` closure
25 |
26 | /// Walk the hierarchy with bounded concurrency.
27 | final class ConcurrentHierarchyWalker<Item> {
| `- note: generic class 'ConcurrentHierarchyWalker' does not conform to the 'Sendable' protocol
28 |
29 | private let group: LLBFuturesDispatchGroup
:
43 | self.getChildren(item, ctx)
44 | }.flatMap { more in
45 | let futures = more.map { self.walk($0, ctx) }
| `- warning: capture of 'self' with non-sendable type 'ConcurrentHierarchyWalker<Item>' in a `@Sendable` closure
46 | return LLBFuture.whenAllSucceed(futures, on: self.group.next()).map { _ in () }
47 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:45:38: warning: capture of 'self' with non-sendable type 'ConcurrentHierarchyWalker<Item>' in an isolated closure; this is an error in the Swift 6 language mode
25 |
26 | /// Walk the hierarchy with bounded concurrency.
27 | final class ConcurrentHierarchyWalker<Item> {
| `- note: generic class 'ConcurrentHierarchyWalker' does not conform to the 'Sendable' protocol
28 |
29 | private let group: LLBFuturesDispatchGroup
:
43 | self.getChildren(item, ctx)
44 | }.flatMap { more in
45 | let futures = more.map { self.walk($0, ctx) }
| `- warning: capture of 'self' with non-sendable type 'ConcurrentHierarchyWalker<Item>' in an isolated closure; this is an error in the Swift 6 language mode
46 | return LLBFuture.whenAllSucceed(futures, on: self.group.next()).map { _ in () }
47 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:100:13: warning: capture of 'root' with non-sendable type 'LLBConcurrentFileTreeWalker.Item' in a `@Sendable` closure
60 | }
61 |
62 | public struct Item {
| `- note: consider making struct 'Item' conform to the 'Sendable' protocol
63 | /// The description of the current CAS filesystem entry.
64 | let arg: FilterArgument
:
98 | let walker = ConcurrentHierarchyWalker(group: db.group, delegate: self)
99 | return walker.walk(root, ctx).map { () in
100 | root.scanResult.reapResult()
| `- warning: capture of 'root' with non-sendable type 'LLBConcurrentFileTreeWalker.Item' in a `@Sendable` closure
101 | }
102 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:115:33: warning: capture of 'item' with non-sendable type 'LLBConcurrentFileTreeWalker.Item' in a `@Sendable` closure
60 | }
61 |
62 | public struct Item {
| `- note: consider making struct 'Item' conform to the 'Sendable' protocol
63 | /// The description of the current CAS filesystem entry.
64 | let arg: FilterArgument
:
113 |
114 | return client.load(item.id, type: typeHint, ctx).map { node in
115 | if typeHint == nil, item.arg.path == .root, item.arg.size == 0 {
| `- warning: capture of 'item' with non-sendable type 'LLBConcurrentFileTreeWalker.Item' in a `@Sendable` closure
116 | // This is our root. Check if we're allowed to go past it.
117 | let dirEntry = node.asDirectoryEntry(filename: "-")
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:119:23: warning: capture of 'self' with non-sendable type 'LLBConcurrentFileTreeWalker' in a `@Sendable` closure
49 | }
50 |
51 | public class LLBConcurrentFileTreeWalker: RetrieveChildrenProtocol {
| `- note: class 'LLBConcurrentFileTreeWalker' does not conform to the 'Sendable' protocol
52 | let db: LLBCASDatabase
53 | let client: LLBCASFSClient
:
117 | let dirEntry = node.asDirectoryEntry(filename: "-")
118 | let rootItem = Item(arg: FilterArgument(path: node.tree != nil ? .root : nil, type: dirEntry.info.type, size: Int(clamping: dirEntry.info.size)), id: dirEntry.id, scanResult: item.scanResult)
119 | guard self.filter(rootItem) else {
| `- warning: capture of 'self' with non-sendable type 'LLBConcurrentFileTreeWalker' in a `@Sendable` closure
120 | return []
121 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/Context.swift:35:24: warning: static property 'fileTreeExportStorageBatcherKey' is not concurrency-safe because non-'Sendable' type 'ContextKey' may have shared mutable state; this is an error in the Swift 6 language mode
9 | import TSCUtility
10 |
11 | private final class ContextKey {}
| `- note: class 'ContextKey' does not conform to the 'Sendable' protocol
12 |
13 | /// Support storing and retrieving file tree import options from a context
:
33 | /// Support storing and retrieving file tree export storage batcher from a context
34 | public extension Context {
35 | private static let fileTreeExportStorageBatcherKey = ContextKey()
| |- warning: static property 'fileTreeExportStorageBatcherKey' is not concurrency-safe because non-'Sendable' type 'ContextKey' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'fileTreeExportStorageBatcherKey' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 |
37 | var fileTreeExportStorageBatcher: LLBBatchingFutureOperationQueue? {
/host/spi-builder-workspace/Sources/TSFCASFileTree/Context.swift:16:97: warning: type 'Any' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
14 | public extension Context {
15 | static func with(_ options: LLBCASFileTree.ImportOptions) -> Context {
16 | return Context(dictionaryLiteral: (ObjectIdentifier(LLBCASFileTree.ImportOptions.self), options as Any))
| `- warning: type 'Any' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
17 | }
18 |
[478/482] Compiling TSFCASFileTree Context.swift
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:45:38: warning: capture of 'self' with non-sendable type 'ConcurrentHierarchyWalker<Item>' in a `@Sendable` closure
25 |
26 | /// Walk the hierarchy with bounded concurrency.
27 | final class ConcurrentHierarchyWalker<Item> {
| `- note: generic class 'ConcurrentHierarchyWalker' does not conform to the 'Sendable' protocol
28 |
29 | private let group: LLBFuturesDispatchGroup
:
43 | self.getChildren(item, ctx)
44 | }.flatMap { more in
45 | let futures = more.map { self.walk($0, ctx) }
| `- warning: capture of 'self' with non-sendable type 'ConcurrentHierarchyWalker<Item>' in a `@Sendable` closure
46 | return LLBFuture.whenAllSucceed(futures, on: self.group.next()).map { _ in () }
47 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:45:38: warning: capture of 'self' with non-sendable type 'ConcurrentHierarchyWalker<Item>' in an isolated closure; this is an error in the Swift 6 language mode
25 |
26 | /// Walk the hierarchy with bounded concurrency.
27 | final class ConcurrentHierarchyWalker<Item> {
| `- note: generic class 'ConcurrentHierarchyWalker' does not conform to the 'Sendable' protocol
28 |
29 | private let group: LLBFuturesDispatchGroup
:
43 | self.getChildren(item, ctx)
44 | }.flatMap { more in
45 | let futures = more.map { self.walk($0, ctx) }
| `- warning: capture of 'self' with non-sendable type 'ConcurrentHierarchyWalker<Item>' in an isolated closure; this is an error in the Swift 6 language mode
46 | return LLBFuture.whenAllSucceed(futures, on: self.group.next()).map { _ in () }
47 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:100:13: warning: capture of 'root' with non-sendable type 'LLBConcurrentFileTreeWalker.Item' in a `@Sendable` closure
60 | }
61 |
62 | public struct Item {
| `- note: consider making struct 'Item' conform to the 'Sendable' protocol
63 | /// The description of the current CAS filesystem entry.
64 | let arg: FilterArgument
:
98 | let walker = ConcurrentHierarchyWalker(group: db.group, delegate: self)
99 | return walker.walk(root, ctx).map { () in
100 | root.scanResult.reapResult()
| `- warning: capture of 'root' with non-sendable type 'LLBConcurrentFileTreeWalker.Item' in a `@Sendable` closure
101 | }
102 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:115:33: warning: capture of 'item' with non-sendable type 'LLBConcurrentFileTreeWalker.Item' in a `@Sendable` closure
60 | }
61 |
62 | public struct Item {
| `- note: consider making struct 'Item' conform to the 'Sendable' protocol
63 | /// The description of the current CAS filesystem entry.
64 | let arg: FilterArgument
:
113 |
114 | return client.load(item.id, type: typeHint, ctx).map { node in
115 | if typeHint == nil, item.arg.path == .root, item.arg.size == 0 {
| `- warning: capture of 'item' with non-sendable type 'LLBConcurrentFileTreeWalker.Item' in a `@Sendable` closure
116 | // This is our root. Check if we're allowed to go past it.
117 | let dirEntry = node.asDirectoryEntry(filename: "-")
/host/spi-builder-workspace/Sources/TSFCASFileTree/ConcurrentFileTreeWalker.swift:119:23: warning: capture of 'self' with non-sendable type 'LLBConcurrentFileTreeWalker' in a `@Sendable` closure
49 | }
50 |
51 | public class LLBConcurrentFileTreeWalker: RetrieveChildrenProtocol {
| `- note: class 'LLBConcurrentFileTreeWalker' does not conform to the 'Sendable' protocol
52 | let db: LLBCASDatabase
53 | let client: LLBCASFSClient
:
117 | let dirEntry = node.asDirectoryEntry(filename: "-")
118 | let rootItem = Item(arg: FilterArgument(path: node.tree != nil ? .root : nil, type: dirEntry.info.type, size: Int(clamping: dirEntry.info.size)), id: dirEntry.id, scanResult: item.scanResult)
119 | guard self.filter(rootItem) else {
| `- warning: capture of 'self' with non-sendable type 'LLBConcurrentFileTreeWalker' in a `@Sendable` closure
120 | return []
121 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/Context.swift:35:24: warning: static property 'fileTreeExportStorageBatcherKey' is not concurrency-safe because non-'Sendable' type 'ContextKey' may have shared mutable state; this is an error in the Swift 6 language mode
9 | import TSCUtility
10 |
11 | private final class ContextKey {}
| `- note: class 'ContextKey' does not conform to the 'Sendable' protocol
12 |
13 | /// Support storing and retrieving file tree import options from a context
:
33 | /// Support storing and retrieving file tree export storage batcher from a context
34 | public extension Context {
35 | private static let fileTreeExportStorageBatcherKey = ContextKey()
| |- warning: static property 'fileTreeExportStorageBatcherKey' is not concurrency-safe because non-'Sendable' type 'ContextKey' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'fileTreeExportStorageBatcherKey' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 |
37 | var fileTreeExportStorageBatcher: LLBBatchingFutureOperationQueue? {
/host/spi-builder-workspace/Sources/TSFCASFileTree/Context.swift:16:97: warning: type 'Any' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
14 | public extension Context {
15 | static func with(_ options: LLBCASFileTree.ImportOptions) -> Context {
16 | return Context(dictionaryLiteral: (ObjectIdentifier(LLBCASFileTree.ImportOptions.self), options as Any))
| `- warning: type 'Any' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
17 | }
18 |
[479/482] Compiling TSFCASFileTree ConcurrentFilesystemScanner.swift
[480/482] Compiling TSFCASFileTree FileSegmenter.swift
[481/482] Compiling TSFCASFileTree FileTreeExport.swift
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeExport.swift:211:13: warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in a `@Sendable` closure
180 |
181 |
182 | private final class CASFileTreeWalkerDelegate: RetrieveChildrenProtocol {
| `- note: class 'CASFileTreeWalkerDelegate' does not conform to the 'Sendable' protocol
183 | let db: LLBCASDatabase
184 | let exportPathPrefix: AbsolutePath
:
209 |
210 | let casObjectFuture: LLBFuture<LLBCASObject> = db.get(item.id, ctx).flatMapThrowing { casObject in
211 | self.stats.downloadsInProgressObjects_.wrappingDecrement(ordering: .relaxed)
| `- warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in a `@Sendable` closure
212 |
213 | guard let casObject = casObject else {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeExport.swift:226:21: warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in a `@Sendable` closure
180 |
181 |
182 | private final class CASFileTreeWalkerDelegate: RetrieveChildrenProtocol {
| `- note: class 'CASFileTreeWalkerDelegate' does not conform to the 'Sendable' protocol
183 | let db: LLBCASDatabase
184 | let exportPathPrefix: AbsolutePath
:
224 | // Unblock the current NIO thread.
225 | batcher.execute {
226 | try self.parseAndMaterialize(casObject, item).map {
| `- warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in a `@Sendable` closure
227 | Item(id: $0.id, exportPath: $0.path, kindHint: $0.kind)
228 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeExport.swift:226:21: warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in an isolated closure; this is an error in the Swift 6 language mode
180 |
181 |
182 | private final class CASFileTreeWalkerDelegate: RetrieveChildrenProtocol {
| `- note: class 'CASFileTreeWalkerDelegate' does not conform to the 'Sendable' protocol
183 | let db: LLBCASDatabase
184 | let exportPathPrefix: AbsolutePath
:
224 | // Unblock the current NIO thread.
225 | batcher.execute {
226 | try self.parseAndMaterialize(casObject, item).map {
| `- warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in an isolated closure; this is an error in the Swift 6 language mode
227 | Item(id: $0.id, exportPath: $0.path, kindHint: $0.kind)
228 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeExport.swift:233:17: warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in a `@Sendable` closure
180 |
181 |
182 | private final class CASFileTreeWalkerDelegate: RetrieveChildrenProtocol {
| `- note: class 'CASFileTreeWalkerDelegate' does not conform to the 'Sendable' protocol
183 | let db: LLBCASDatabase
184 | let exportPathPrefix: AbsolutePath
:
231 | } else {
232 | return casObjectFuture.flatMapThrowing { casObject in
233 | try self.parseAndMaterialize(casObject, item).map {
| `- warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in a `@Sendable` closure
234 | Item(id: $0.id, exportPath: $0.path, kindHint: $0.kind)
235 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:312:28: warning: type 'T' does not conform to the 'Sendable' protocol
309 |
310 | // Retry with lesser concurrency if we see unexpected network errors.
311 | private static func recursivelyDecreasingLimit<T>(on loop: LLBFuturesDispatchLoop, limit: Int, _ body: @escaping (Int) -> LLBFuture<T>) -> LLBFuture<T> {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
312 | return body(limit).flatMapError { error -> LLBFuture<T> in
| `- warning: type 'T' does not conform to the 'Sendable' protocol
313 | // Check if something retryable happened.
314 | guard case LLBCASDatabaseError.retryableNetworkError(_) = error else {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:327:22: warning: type 'T' does not conform to the 'Sendable' protocol
309 |
310 | // Retry with lesser concurrency if we see unexpected network errors.
311 | private static func recursivelyDecreasingLimit<T>(on loop: LLBFuturesDispatchLoop, limit: Int, _ body: @escaping (Int) -> LLBFuture<T>) -> LLBFuture<T> {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
312 | return body(limit).flatMapError { error -> LLBFuture<T> in
313 | // Check if something retryable happened.
:
325 | _ = loop.scheduleTask(in: .seconds(3)) {
326 | recursivelyDecreasingLimit(on: loop, limit: newLimit, body)
327 | .cascade(to: promise)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
328 | }
329 |
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:326:71: warning: capture of 'body' with non-sendable type '(Int) -> LLBFuture<T>' (aka '(Int) -> EventLoopFuture<T>') in a `@Sendable` closure
324 | let promise = loop.makePromise(of: T.self)
325 | _ = loop.scheduleTask(in: .seconds(3)) {
326 | recursivelyDecreasingLimit(on: loop, limit: newLimit, body)
| |- warning: capture of 'body' with non-sendable type '(Int) -> LLBFuture<T>' (aka '(Int) -> EventLoopFuture<T>') in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
327 | .cascade(to: promise)
328 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:326:71: warning: capture of 'body' with non-sendable type '(Int) -> LLBFuture<T>' (aka '(Int) -> EventLoopFuture<T>') in a `@Sendable` closure
324 | let promise = loop.makePromise(of: T.self)
325 | _ = loop.scheduleTask(in: .seconds(3)) {
326 | recursivelyDecreasingLimit(on: loop, limit: newLimit, body)
| |- warning: capture of 'body' with non-sendable type '(Int) -> LLBFuture<T>' (aka '(Int) -> EventLoopFuture<T>') in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
327 | .cascade(to: promise)
328 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:463:30: warning: type 'FilesystemObjectType' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
461 | // We can import individual files just fine.
462 | stats.toImportObjects_.wrappingIncrement(ordering: .relaxed)
463 | return [loop.makeSucceededFuture([(importPath, .REG)])]
| `- warning: type 'FilesystemObjectType' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
464 | } else {
465 | // Scan the filesystem tree using multiple threads.
/host/spi-builder-workspace/Sources/TSFCASFileTree/Internal/ConcurrentFilesystemScanner.swift:423:13: note: consider making enum 'FilesystemObjectType' conform to the 'Sendable' protocol
421 | /// We don't assign values there because the DT_xxx and S_IFxxx values
422 | /// are different yet we support them all since they still form the same set.
423 | public enum FilesystemObjectType: UInt8 {
| `- note: consider making enum 'FilesystemObjectType' conform to the 'Sendable' protocol
424 | case UNKNOWN
425 | case FIFO
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:478:11: warning: type 'FilesystemObjectType' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
476 | }
477 | }
478 | }.flatMap { pathsFutures -> LLBFuture<[[ConcurrentFilesystemScanner.Element]]> in
| `- warning: type 'FilesystemObjectType' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
479 | self.whenAllSucceed(pathsFutures)
480 | }.map { (pathInfos: [[ConcurrentFilesystemScanner.Element]]) -> [LLBFuture<NextStep>] in
/host/spi-builder-workspace/Sources/TSFCASFileTree/Internal/ConcurrentFilesystemScanner.swift:423:13: note: consider making enum 'FilesystemObjectType' conform to the 'Sendable' protocol
421 | /// We don't assign values there because the DT_xxx and S_IFxxx values
422 | /// are different yet we support them all since they still form the same set.
423 | public enum FilesystemObjectType: UInt8 {
| `- note: consider making enum 'FilesystemObjectType' conform to the 'Sendable' protocol
424 | case UNKNOWN
425 | case FIFO
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:499:11: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
497 | }
498 | }
499 | }.flatMap { nextStepFutures -> LLBFuture<[NextStep]> in
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
500 | self.whenAllSucceed(nextStepFutures)
501 | }.flatMap { nextStepFutures -> LLBFuture<[NextStep]> in
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:501:11: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
499 | }.flatMap { nextStepFutures -> LLBFuture<[NextStep]> in
500 | self.whenAllSucceed(nextStepFutures)
501 | }.flatMap { nextStepFutures -> LLBFuture<[NextStep]> in
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
502 | self.set(phase: .CheckIfUploaded)
503 | return self.recursivelyPerformSteps(currentPhase: .CheckIfUploaded, currentPhaseSteps: nextStepFutures)
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:661:25: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
659 |
660 | guard finalResultPromise.isCompleted == false else {
661 | return loop.makeSucceededFuture([])
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
662 | }
663 |
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:681:56: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
679 | // Wait for the steps we need to wait in this phase, and then
680 | // advance the phase if there are no more steps to wait.
681 | return self.whenAllSucceed(waitInCurrentPhase).flatMap { moreStepsInCurrentPhase in
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
682 | if moreStepsInCurrentPhase.isEmpty {
683 | precondition(!currentPhase.isFinalPhase) // Avoid infinite recursion
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:686:33: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
684 | let nextPhase = LLBCASFileTree.ImportPhase(rawValue: currentPhase.rawValue + 1)!
685 | guard nextPhase < .UploadingDirs else {
686 | return loop.makeSucceededFuture(finishedSteps + nextPhaseSteps)
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
687 | }
688 | self.set(phase: nextPhase)
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:686:53: warning: capture of 'finishedSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
684 | let nextPhase = LLBCASFileTree.ImportPhase(rawValue: currentPhase.rawValue + 1)!
685 | guard nextPhase < .UploadingDirs else {
686 | return loop.makeSucceededFuture(finishedSteps + nextPhaseSteps)
| `- warning: capture of 'finishedSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
687 | }
688 | self.set(phase: nextPhase)
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:686:69: warning: capture of 'nextPhaseSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
684 | let nextPhase = LLBCASFileTree.ImportPhase(rawValue: currentPhase.rawValue + 1)!
685 | guard nextPhase < .UploadingDirs else {
686 | return loop.makeSucceededFuture(finishedSteps + nextPhaseSteps)
| `- warning: capture of 'nextPhaseSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
687 | }
688 | self.set(phase: nextPhase)
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:686:53: warning: reference to captured var 'finishedSteps' in concurrently-executing code
684 | let nextPhase = LLBCASFileTree.ImportPhase(rawValue: currentPhase.rawValue + 1)!
685 | guard nextPhase < .UploadingDirs else {
686 | return loop.makeSucceededFuture(finishedSteps + nextPhaseSteps)
| `- warning: reference to captured var 'finishedSteps' in concurrently-executing code
687 | }
688 | self.set(phase: nextPhase)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:686:69: warning: reference to captured var 'nextPhaseSteps' in concurrently-executing code
684 | let nextPhase = LLBCASFileTree.ImportPhase(rawValue: currentPhase.rawValue + 1)!
685 | guard nextPhase < .UploadingDirs else {
686 | return loop.makeSucceededFuture(finishedSteps + nextPhaseSteps)
| `- warning: reference to captured var 'nextPhaseSteps' in concurrently-executing code
687 | }
688 | self.set(phase: nextPhase)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:689:97: warning: reference to captured var 'nextPhaseSteps' in concurrently-executing code
687 | }
688 | self.set(phase: nextPhase)
689 | return self.recursivelyPerformSteps(currentPhase: nextPhase, currentPhaseSteps: nextPhaseSteps).map {
| `- warning: reference to captured var 'nextPhaseSteps' in concurrently-executing code
690 | finishedSteps + $0
691 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:690:21: warning: capture of 'finishedSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
688 | self.set(phase: nextPhase)
689 | return self.recursivelyPerformSteps(currentPhase: nextPhase, currentPhaseSteps: nextPhaseSteps).map {
690 | finishedSteps + $0
| `- warning: capture of 'finishedSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
691 | }
692 | } else {
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:690:21: warning: reference to captured var 'finishedSteps' in concurrently-executing code
688 | self.set(phase: nextPhase)
689 | return self.recursivelyPerformSteps(currentPhase: nextPhase, currentPhaseSteps: nextPhaseSteps).map {
690 | finishedSteps + $0
| `- warning: reference to captured var 'finishedSteps' in concurrently-executing code
691 | }
692 | } else {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:693:141: warning: reference to captured var 'nextPhaseSteps' in concurrently-executing code
691 | }
692 | } else {
693 | return self.recursivelyPerformSteps(currentPhase: currentPhase, currentPhaseSteps: moreStepsInCurrentPhase, nextPhaseSteps: nextPhaseSteps).map {
| `- warning: reference to captured var 'nextPhaseSteps' in concurrently-executing code
694 | finishedSteps + $0
695 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:694:21: warning: capture of 'finishedSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
692 | } else {
693 | return self.recursivelyPerformSteps(currentPhase: currentPhase, currentPhaseSteps: moreStepsInCurrentPhase, nextPhaseSteps: nextPhaseSteps).map {
694 | finishedSteps + $0
| `- warning: capture of 'finishedSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
695 | }
696 | }
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:694:21: warning: reference to captured var 'finishedSteps' in concurrently-executing code
692 | } else {
693 | return self.recursivelyPerformSteps(currentPhase: currentPhase, currentPhaseSteps: moreStepsInCurrentPhase, nextPhaseSteps: nextPhaseSteps).map {
694 | finishedSteps + $0
| `- warning: reference to captured var 'finishedSteps' in concurrently-executing code
695 | }
696 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:950:33: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
948 | func uploadFileInfo(blobId: LLBDataID, importSize: Int? = nil) -> LLBFuture<NextStep> {
949 | guard finalResultPromise.isCompleted == false else {
950 | return loop.makeSucceededFuture(NextStep.skipped)
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
951 | }
952 |
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:961:33: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
959 | stats.importedBytes_.wrappingIncrement(by: size, ordering: .relaxed)
960 | }
961 | return loop.makeSucceededFuture(encodeNextStep(for: blobId))
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
962 | }
963 |
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:993:39: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
991 | let containsFuture = self.dbContains(segm, ctx)
992 | let containsLoop = containsFuture.eventLoop
993 | return containsFuture.flatMap { exists -> LLBFuture<NextStep> in
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
994 |
995 | guard !exists else {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:996:73: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
994 |
995 | guard !exists else {
996 | let existingIdFuture: LLBFuture<NextStep> = segm.id.flatMap { id in
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
997 | return uploadFileInfo(blobId: id, importSize: segm.uncompressedSize)
998 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1003:39: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1001 | }
1002 |
1003 | return containsLoop.makeSucceededFuture(NextStep.execute(in: .UploadingFiles, run: {
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1004 | let nextStepFuture: LLBFuture<NextStep> = self.execute(on: self.cpuQueue, default: nil) { () -> LLBFuture<NextStep>? in
1005 | let data: LLBFastData
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1019:37: warning: 'executeWithBackpressure(on:loop:size:default:_:)' is deprecated: This method blocks indefinitely and returns a future
1017 | // free to take our load. This ensures that we're not
1018 | // limited by CPU parallelism for network concurrency.
1019 | return self.executeWithBackpressure(on: self.netQueue, loop: containsLoop, size: slice.readableBytes, default: .skipped) { () -> LLBFuture<NextStep> in
| `- warning: 'executeWithBackpressure(on:loop:size:default:_:)' is deprecated: This method blocks indefinitely and returns a future
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1020:110: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1018 | // limited by CPU parallelism for network concurrency.
1019 | return self.executeWithBackpressure(on: self.netQueue, loop: containsLoop, size: slice.readableBytes, default: .skipped) { () -> LLBFuture<NextStep> in
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1021 | withExtendedLifetime(importObject) { // for mmap
1022 | uploadFileInfo(blobId: id)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1026:31: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1024 | }.map { result in
1025 | return result
1026 | }.hop(to: loop)
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1027 | }
1028 | }.flatMap {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1028:23: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1026 | }.hop(to: loop)
1027 | }
1028 | }.flatMap {
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1029 | // This type of return ensures that cpuQueue does not
1030 | // wait for the netQueue operation to complete.
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1031:36: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1029 | // This type of return ensures that cpuQueue does not
1030 | // wait for the netQueue operation to complete.
1031 | $0 ?? loop.makeSucceededFuture(NextStep.skipped)
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1032 | }
1033 | nextStepFuture.cascade(to: partialStepPromise)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1078:17: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1076 | throw error
1077 |
1078 | }.flatMap { nextSteps in
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1079 | // The next steps can only be empty if we've reacting on
1080 | // a filesystem-related error with some of our chunks.
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1082:33: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1080 | // a filesystem-related error with some of our chunks.
1081 | guard nextSteps.isEmpty == false else {
1082 | return loop.makeSucceededFuture(.skipped)
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1083 | }
1084 |
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1118:47: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1116 | // have been uploaded. Therefore we wait for the huge files in
1117 | // its own state, .UploadingWait.
1118 | return cheapNextStepFutures + [loop.makeSucceededFuture(combinePartialResultsStep)]
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1119 | }
1120 |
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1123:18: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1121 | // When the .EstimatingSize phase comes, this can be executed.
1122 | return .execute(in: .EstimatingSize, run: {
1123 | loop.makeSucceededFuture(NextStep.wait(in: .CheckIfUploaded,
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1124 | futures: assemblePartialNextSteps()))
1125 | })
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:981:25: warning: capture of 'encodeNextStep(for:)' with non-sendable type '(LLBDataID) -> CASTreeImport.NextStep' in a `@Sendable` closure
979 | do {
980 | return dbPut(refs: [blobId], data: try fileInfo.toBytes(), importSize: importSize, ctx).map { id in
981 | encodeNextStep(for: id)
| |- warning: capture of 'encodeNextStep(for:)' with non-sendable type '(LLBDataID) -> CASTreeImport.NextStep' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
982 | }
983 | } catch {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:938:20: warning: concurrently-executed local function 'encodeNextStep(for:)' must be marked as '@Sendable'
936 | let partialStepPromise = LLBCancellablePromise(promise: loop.makePromise(of: NextStep.self))
937 |
938 | func encodeNextStep(for id: LLBDataID) -> NextStep {
| `- warning: concurrently-executed local function 'encodeNextStep(for:)' must be marked as '@Sendable'
939 | if isSingleChunk {
940 | return .singleFile(SingleFileInfo(path: path, id: id, type: type, size: UInt64(clamping: segm.uncompressedSize), posixDetails: importObject.posixDetails))
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:997:32: warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in a `@Sendable` closure
995 | guard !exists else {
996 | let existingIdFuture: LLBFuture<NextStep> = segm.id.flatMap { id in
997 | return uploadFileInfo(blobId: id, importSize: segm.uncompressedSize)
| |- warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
998 | }
999 | existingIdFuture.cascade(to: partialStepPromise)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1007:32: warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in a `@Sendable` closure
836 | let type: LLBFileType
837 | let allSegmentsUncompressedDataSize: Int
838 | enum ObjectToImport {
| `- note: consider making enum 'ObjectToImport' conform to the 'Sendable' protocol
839 | case link(target: LLBFastData)
840 | case file(file: FileSegmenter, posixDetails: LLBPosixFileDetails)
:
1005 | let data: LLBFastData
1006 |
1007 | switch importObject {
| `- warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in a `@Sendable` closure
1008 | case let .link(target):
1009 | data = target
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:997:32: warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in a `@Sendable` closure
995 | guard !exists else {
996 | let existingIdFuture: LLBFuture<NextStep> = segm.id.flatMap { id in
997 | return uploadFileInfo(blobId: id, importSize: segm.uncompressedSize)
| |- warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
998 | }
999 | existingIdFuture.cascade(to: partialStepPromise)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:948:20: warning: concurrently-executed local function 'uploadFileInfo(blobId:importSize:)' must be marked as '@Sendable'
946 | // If the file has non-standard layout, upload it after we upload
947 | // the binary blob.
948 | func uploadFileInfo(blobId: LLBDataID, importSize: Int? = nil) -> LLBFuture<NextStep> {
| `- warning: concurrently-executed local function 'uploadFileInfo(blobId:importSize:)' must be marked as '@Sendable'
949 | guard finalResultPromise.isCompleted == false else {
950 | return loop.makeSucceededFuture(NextStep.skipped)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1007:32: warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in an isolated closure; this is an error in the Swift 6 language mode
836 | let type: LLBFileType
837 | let allSegmentsUncompressedDataSize: Int
838 | enum ObjectToImport {
| `- note: consider making enum 'ObjectToImport' conform to the 'Sendable' protocol
839 | case link(target: LLBFastData)
840 | case file(file: FileSegmenter, posixDetails: LLBPosixFileDetails)
:
1005 | let data: LLBFastData
1006 |
1007 | switch importObject {
| `- warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in an isolated closure; this is an error in the Swift 6 language mode
1008 | case let .link(target):
1009 | data = target
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1022:37: warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
1022 | uploadFileInfo(blobId: id)
| |- warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1023 | }
1024 | }.map { result in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1007:32: warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in an isolated closure; this is an error in the Swift 6 language mode
836 | let type: LLBFileType
837 | let allSegmentsUncompressedDataSize: Int
838 | enum ObjectToImport {
| `- note: consider making enum 'ObjectToImport' conform to the 'Sendable' protocol
839 | case link(target: LLBFastData)
840 | case file(file: FileSegmenter, posixDetails: LLBPosixFileDetails)
:
1005 | let data: LLBFastData
1006 |
1007 | switch importObject {
| `- warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in an isolated closure; this is an error in the Swift 6 language mode
1008 | case let .link(target):
1009 | data = target
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1022:37: warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
1022 | uploadFileInfo(blobId: id)
| |- warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1023 | }
1024 | }.map { result in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1021:54: warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in an isolated closure; this is an error in the Swift 6 language mode
836 | let type: LLBFileType
837 | let allSegmentsUncompressedDataSize: Int
838 | enum ObjectToImport {
| `- note: consider making enum 'ObjectToImport' conform to the 'Sendable' protocol
839 | case link(target: LLBFastData)
840 | case file(file: FileSegmenter, posixDetails: LLBPosixFileDetails)
:
1019 | return self.executeWithBackpressure(on: self.netQueue, loop: containsLoop, size: slice.readableBytes, default: .skipped) { () -> LLBFuture<NextStep> in
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
| `- warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in an isolated closure; this is an error in the Swift 6 language mode
1022 | uploadFileInfo(blobId: id)
1023 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1022:37: warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
1022 | uploadFileInfo(blobId: id)
| |- warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1023 | }
1024 | }.map { result in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1021:54: warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in a `@Sendable` closure
836 | let type: LLBFileType
837 | let allSegmentsUncompressedDataSize: Int
838 | enum ObjectToImport {
| `- note: consider making enum 'ObjectToImport' conform to the 'Sendable' protocol
839 | case link(target: LLBFastData)
840 | case file(file: FileSegmenter, posixDetails: LLBPosixFileDetails)
:
1019 | return self.executeWithBackpressure(on: self.netQueue, loop: containsLoop, size: slice.readableBytes, default: .skipped) { () -> LLBFuture<NextStep> in
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
| `- warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in a `@Sendable` closure
1022 | uploadFileInfo(blobId: id)
1023 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1022:37: warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in a `@Sendable` closure
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
1022 | uploadFileInfo(blobId: id)
| |- warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1023 | }
1024 | }.map { result in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1022:37: warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
1022 | uploadFileInfo(blobId: id)
| |- warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1023 | }
1024 | }.map { result in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1098:36: warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in a `@Sendable` closure
836 | let type: LLBFileType
837 | let allSegmentsUncompressedDataSize: Int
838 | enum ObjectToImport {
| `- note: consider making enum 'ObjectToImport' conform to the 'Sendable' protocol
839 | case link(target: LLBFastData)
840 | case file(file: FileSegmenter, posixDetails: LLBPosixFileDetails)
:
1096 | fileInfo.compression = .none
1097 | fileInfo.fixedChunkSize = UInt64(chunkIds.count > 1 ? self.options.fileChunkSize : allSegmentsUncompressedDataSize)
1098 | let posixDetails = importObject.posixDetails
| `- warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in a `@Sendable` closure
1099 | fileInfo.update(posixDetails: posixDetails, options: self.options)
1100 | do {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1164:25: warning: type 'Value' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
1159 | }
1160 |
1161 | private func whenAllSucceed<Value>(_ futures: [LLBFuture<Value>], on loop: LLBFuturesDispatchLoop? = nil) -> LLBFuture<[Value]> {
| `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
1162 | let loop = loop ?? self.loop
1163 | guard finalResultPromise.isCompleted == false else {
1164 | return loop.makeSucceededFuture([])
| `- warning: type 'Value' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
1165 | }
1166 | return LLBFuture.whenAllSucceed(futures, on: loop).map { result in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1166:26: warning: type 'Value' does not conform to the 'Sendable' protocol
1159 | }
1160 |
1161 | private func whenAllSucceed<Value>(_ futures: [LLBFuture<Value>], on loop: LLBFuturesDispatchLoop? = nil) -> LLBFuture<[Value]> {
| `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
1162 | let loop = loop ?? self.loop
1163 | guard finalResultPromise.isCompleted == false else {
1164 | return loop.makeSucceededFuture([])
1165 | }
1166 | return LLBFuture.whenAllSucceed(futures, on: loop).map { result in
| `- warning: type 'Value' does not conform to the 'Sendable' protocol
1167 | guard self.finalResultPromise.isCompleted == false else {
1168 | return []
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1181:39: warning: type 'T' does not conform to the 'Sendable' protocol
1177 | /// Enqueue the callback unless the stop flag is in action.
1178 | /// If stop flag is set, return the value specified in `then`.
1179 | private func execute<T>(on queue: LLBBatchingFutureOperationQueue, default stopValue: T, _ body: @escaping () throws -> T) -> LLBFuture<T> {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
1180 | guard finalResultPromise.isCompleted == false else {
1181 | return queue.group.next().makeSucceededFuture(stopValue)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
1182 | }
1183 | return queue.execute {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1201:25: warning: type 'T' does not conform to the 'Sendable' protocol
1196 | /// Enqueue the callback unless the stop flag is in action.
1197 | /// If stop flag is set, return the value specified in `then`.
1198 | private func execute<T>(on queue: LLBFutureOperationQueue, loop: EventLoop? = nil, size: Int = 1, default stopValue: T, _ body: @escaping () -> LLBFuture<T>) -> LLBFuture<T> {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
1199 | let loop = loop ?? self.loop
1200 | guard finalResultPromise.isCompleted == false else {
1201 | return loop.makeSucceededFuture(stopValue)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
1202 | }
1203 | return queue.enqueue(on: loop, share: size) {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1205:29: warning: type 'T' does not conform to the 'Sendable' protocol
1196 | /// Enqueue the callback unless the stop flag is in action.
1197 | /// If stop flag is set, return the value specified in `then`.
1198 | private func execute<T>(on queue: LLBFutureOperationQueue, loop: EventLoop? = nil, size: Int = 1, default stopValue: T, _ body: @escaping () -> LLBFuture<T>) -> LLBFuture<T> {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
1199 | let loop = loop ?? self.loop
1200 | guard finalResultPromise.isCompleted == false else {
:
1203 | return queue.enqueue(on: loop, share: size) {
1204 | guard self.finalResultPromise.isCompleted == false else {
1205 | return loop.makeSucceededFuture(stopValue)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
1206 | }
1207 | return body().flatMapErrorThrowing { error in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1219:25: warning: type 'T' does not conform to the 'Sendable' protocol
1215 | @available(*, noasync, message: "This method blocks indefinitely, don't use from 'async' or SwiftNIO EventLoops")
1216 | @available(*, deprecated, message: "This method blocks indefinitely and returns a future")
1217 | private func executeWithBackpressure<T>(on queue: LLBFutureOperationQueue, loop: LLBFuturesDispatchLoop, size: Int = 1, default stopValue: T, _ body: @escaping () -> LLBFuture<T>) -> LLBFuture<T> {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
1218 | guard finalResultPromise.isCompleted == false else {
1219 | return loop.makeSucceededFuture(stopValue)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
1220 | }
1221 | return queue.enqueueWithBackpressure(on: loop, share: size) {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1223:29: warning: type 'T' does not conform to the 'Sendable' protocol
1215 | @available(*, noasync, message: "This method blocks indefinitely, don't use from 'async' or SwiftNIO EventLoops")
1216 | @available(*, deprecated, message: "This method blocks indefinitely and returns a future")
1217 | private func executeWithBackpressure<T>(on queue: LLBFutureOperationQueue, loop: LLBFuturesDispatchLoop, size: Int = 1, default stopValue: T, _ body: @escaping () -> LLBFuture<T>) -> LLBFuture<T> {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
1218 | guard finalResultPromise.isCompleted == false else {
1219 | return loop.makeSucceededFuture(stopValue)
:
1221 | return queue.enqueueWithBackpressure(on: loop, share: size) {
1222 | guard self.finalResultPromise.isCompleted == false else {
1223 | return loop.makeSucceededFuture(stopValue)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
1224 | }
1225 | return body().flatMapErrorThrowing { error in
[482/482] Compiling TSFCASFileTree FileTreeImport.swift
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeExport.swift:211:13: warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in a `@Sendable` closure
180 |
181 |
182 | private final class CASFileTreeWalkerDelegate: RetrieveChildrenProtocol {
| `- note: class 'CASFileTreeWalkerDelegate' does not conform to the 'Sendable' protocol
183 | let db: LLBCASDatabase
184 | let exportPathPrefix: AbsolutePath
:
209 |
210 | let casObjectFuture: LLBFuture<LLBCASObject> = db.get(item.id, ctx).flatMapThrowing { casObject in
211 | self.stats.downloadsInProgressObjects_.wrappingDecrement(ordering: .relaxed)
| `- warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in a `@Sendable` closure
212 |
213 | guard let casObject = casObject else {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeExport.swift:226:21: warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in a `@Sendable` closure
180 |
181 |
182 | private final class CASFileTreeWalkerDelegate: RetrieveChildrenProtocol {
| `- note: class 'CASFileTreeWalkerDelegate' does not conform to the 'Sendable' protocol
183 | let db: LLBCASDatabase
184 | let exportPathPrefix: AbsolutePath
:
224 | // Unblock the current NIO thread.
225 | batcher.execute {
226 | try self.parseAndMaterialize(casObject, item).map {
| `- warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in a `@Sendable` closure
227 | Item(id: $0.id, exportPath: $0.path, kindHint: $0.kind)
228 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeExport.swift:226:21: warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in an isolated closure; this is an error in the Swift 6 language mode
180 |
181 |
182 | private final class CASFileTreeWalkerDelegate: RetrieveChildrenProtocol {
| `- note: class 'CASFileTreeWalkerDelegate' does not conform to the 'Sendable' protocol
183 | let db: LLBCASDatabase
184 | let exportPathPrefix: AbsolutePath
:
224 | // Unblock the current NIO thread.
225 | batcher.execute {
226 | try self.parseAndMaterialize(casObject, item).map {
| `- warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in an isolated closure; this is an error in the Swift 6 language mode
227 | Item(id: $0.id, exportPath: $0.path, kindHint: $0.kind)
228 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeExport.swift:233:17: warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in a `@Sendable` closure
180 |
181 |
182 | private final class CASFileTreeWalkerDelegate: RetrieveChildrenProtocol {
| `- note: class 'CASFileTreeWalkerDelegate' does not conform to the 'Sendable' protocol
183 | let db: LLBCASDatabase
184 | let exportPathPrefix: AbsolutePath
:
231 | } else {
232 | return casObjectFuture.flatMapThrowing { casObject in
233 | try self.parseAndMaterialize(casObject, item).map {
| `- warning: capture of 'self' with non-sendable type 'CASFileTreeWalkerDelegate' in a `@Sendable` closure
234 | Item(id: $0.id, exportPath: $0.path, kindHint: $0.kind)
235 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:312:28: warning: type 'T' does not conform to the 'Sendable' protocol
309 |
310 | // Retry with lesser concurrency if we see unexpected network errors.
311 | private static func recursivelyDecreasingLimit<T>(on loop: LLBFuturesDispatchLoop, limit: Int, _ body: @escaping (Int) -> LLBFuture<T>) -> LLBFuture<T> {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
312 | return body(limit).flatMapError { error -> LLBFuture<T> in
| `- warning: type 'T' does not conform to the 'Sendable' protocol
313 | // Check if something retryable happened.
314 | guard case LLBCASDatabaseError.retryableNetworkError(_) = error else {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:327:22: warning: type 'T' does not conform to the 'Sendable' protocol
309 |
310 | // Retry with lesser concurrency if we see unexpected network errors.
311 | private static func recursivelyDecreasingLimit<T>(on loop: LLBFuturesDispatchLoop, limit: Int, _ body: @escaping (Int) -> LLBFuture<T>) -> LLBFuture<T> {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
312 | return body(limit).flatMapError { error -> LLBFuture<T> in
313 | // Check if something retryable happened.
:
325 | _ = loop.scheduleTask(in: .seconds(3)) {
326 | recursivelyDecreasingLimit(on: loop, limit: newLimit, body)
327 | .cascade(to: promise)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
328 | }
329 |
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:326:71: warning: capture of 'body' with non-sendable type '(Int) -> LLBFuture<T>' (aka '(Int) -> EventLoopFuture<T>') in a `@Sendable` closure
324 | let promise = loop.makePromise(of: T.self)
325 | _ = loop.scheduleTask(in: .seconds(3)) {
326 | recursivelyDecreasingLimit(on: loop, limit: newLimit, body)
| |- warning: capture of 'body' with non-sendable type '(Int) -> LLBFuture<T>' (aka '(Int) -> EventLoopFuture<T>') in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
327 | .cascade(to: promise)
328 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:326:71: warning: capture of 'body' with non-sendable type '(Int) -> LLBFuture<T>' (aka '(Int) -> EventLoopFuture<T>') in a `@Sendable` closure
324 | let promise = loop.makePromise(of: T.self)
325 | _ = loop.scheduleTask(in: .seconds(3)) {
326 | recursivelyDecreasingLimit(on: loop, limit: newLimit, body)
| |- warning: capture of 'body' with non-sendable type '(Int) -> LLBFuture<T>' (aka '(Int) -> EventLoopFuture<T>') in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
327 | .cascade(to: promise)
328 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:463:30: warning: type 'FilesystemObjectType' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
461 | // We can import individual files just fine.
462 | stats.toImportObjects_.wrappingIncrement(ordering: .relaxed)
463 | return [loop.makeSucceededFuture([(importPath, .REG)])]
| `- warning: type 'FilesystemObjectType' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
464 | } else {
465 | // Scan the filesystem tree using multiple threads.
/host/spi-builder-workspace/Sources/TSFCASFileTree/Internal/ConcurrentFilesystemScanner.swift:423:13: note: consider making enum 'FilesystemObjectType' conform to the 'Sendable' protocol
421 | /// We don't assign values there because the DT_xxx and S_IFxxx values
422 | /// are different yet we support them all since they still form the same set.
423 | public enum FilesystemObjectType: UInt8 {
| `- note: consider making enum 'FilesystemObjectType' conform to the 'Sendable' protocol
424 | case UNKNOWN
425 | case FIFO
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:478:11: warning: type 'FilesystemObjectType' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
476 | }
477 | }
478 | }.flatMap { pathsFutures -> LLBFuture<[[ConcurrentFilesystemScanner.Element]]> in
| `- warning: type 'FilesystemObjectType' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
479 | self.whenAllSucceed(pathsFutures)
480 | }.map { (pathInfos: [[ConcurrentFilesystemScanner.Element]]) -> [LLBFuture<NextStep>] in
/host/spi-builder-workspace/Sources/TSFCASFileTree/Internal/ConcurrentFilesystemScanner.swift:423:13: note: consider making enum 'FilesystemObjectType' conform to the 'Sendable' protocol
421 | /// We don't assign values there because the DT_xxx and S_IFxxx values
422 | /// are different yet we support them all since they still form the same set.
423 | public enum FilesystemObjectType: UInt8 {
| `- note: consider making enum 'FilesystemObjectType' conform to the 'Sendable' protocol
424 | case UNKNOWN
425 | case FIFO
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:499:11: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
497 | }
498 | }
499 | }.flatMap { nextStepFutures -> LLBFuture<[NextStep]> in
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
500 | self.whenAllSucceed(nextStepFutures)
501 | }.flatMap { nextStepFutures -> LLBFuture<[NextStep]> in
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:501:11: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
499 | }.flatMap { nextStepFutures -> LLBFuture<[NextStep]> in
500 | self.whenAllSucceed(nextStepFutures)
501 | }.flatMap { nextStepFutures -> LLBFuture<[NextStep]> in
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
502 | self.set(phase: .CheckIfUploaded)
503 | return self.recursivelyPerformSteps(currentPhase: .CheckIfUploaded, currentPhaseSteps: nextStepFutures)
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:661:25: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
659 |
660 | guard finalResultPromise.isCompleted == false else {
661 | return loop.makeSucceededFuture([])
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
662 | }
663 |
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:681:56: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
679 | // Wait for the steps we need to wait in this phase, and then
680 | // advance the phase if there are no more steps to wait.
681 | return self.whenAllSucceed(waitInCurrentPhase).flatMap { moreStepsInCurrentPhase in
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
682 | if moreStepsInCurrentPhase.isEmpty {
683 | precondition(!currentPhase.isFinalPhase) // Avoid infinite recursion
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:686:33: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
684 | let nextPhase = LLBCASFileTree.ImportPhase(rawValue: currentPhase.rawValue + 1)!
685 | guard nextPhase < .UploadingDirs else {
686 | return loop.makeSucceededFuture(finishedSteps + nextPhaseSteps)
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
687 | }
688 | self.set(phase: nextPhase)
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:686:53: warning: capture of 'finishedSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
684 | let nextPhase = LLBCASFileTree.ImportPhase(rawValue: currentPhase.rawValue + 1)!
685 | guard nextPhase < .UploadingDirs else {
686 | return loop.makeSucceededFuture(finishedSteps + nextPhaseSteps)
| `- warning: capture of 'finishedSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
687 | }
688 | self.set(phase: nextPhase)
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:686:69: warning: capture of 'nextPhaseSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
684 | let nextPhase = LLBCASFileTree.ImportPhase(rawValue: currentPhase.rawValue + 1)!
685 | guard nextPhase < .UploadingDirs else {
686 | return loop.makeSucceededFuture(finishedSteps + nextPhaseSteps)
| `- warning: capture of 'nextPhaseSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
687 | }
688 | self.set(phase: nextPhase)
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:686:53: warning: reference to captured var 'finishedSteps' in concurrently-executing code
684 | let nextPhase = LLBCASFileTree.ImportPhase(rawValue: currentPhase.rawValue + 1)!
685 | guard nextPhase < .UploadingDirs else {
686 | return loop.makeSucceededFuture(finishedSteps + nextPhaseSteps)
| `- warning: reference to captured var 'finishedSteps' in concurrently-executing code
687 | }
688 | self.set(phase: nextPhase)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:686:69: warning: reference to captured var 'nextPhaseSteps' in concurrently-executing code
684 | let nextPhase = LLBCASFileTree.ImportPhase(rawValue: currentPhase.rawValue + 1)!
685 | guard nextPhase < .UploadingDirs else {
686 | return loop.makeSucceededFuture(finishedSteps + nextPhaseSteps)
| `- warning: reference to captured var 'nextPhaseSteps' in concurrently-executing code
687 | }
688 | self.set(phase: nextPhase)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:689:97: warning: reference to captured var 'nextPhaseSteps' in concurrently-executing code
687 | }
688 | self.set(phase: nextPhase)
689 | return self.recursivelyPerformSteps(currentPhase: nextPhase, currentPhaseSteps: nextPhaseSteps).map {
| `- warning: reference to captured var 'nextPhaseSteps' in concurrently-executing code
690 | finishedSteps + $0
691 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:690:21: warning: capture of 'finishedSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
688 | self.set(phase: nextPhase)
689 | return self.recursivelyPerformSteps(currentPhase: nextPhase, currentPhaseSteps: nextPhaseSteps).map {
690 | finishedSteps + $0
| `- warning: capture of 'finishedSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
691 | }
692 | } else {
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:690:21: warning: reference to captured var 'finishedSteps' in concurrently-executing code
688 | self.set(phase: nextPhase)
689 | return self.recursivelyPerformSteps(currentPhase: nextPhase, currentPhaseSteps: nextPhaseSteps).map {
690 | finishedSteps + $0
| `- warning: reference to captured var 'finishedSteps' in concurrently-executing code
691 | }
692 | } else {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:693:141: warning: reference to captured var 'nextPhaseSteps' in concurrently-executing code
691 | }
692 | } else {
693 | return self.recursivelyPerformSteps(currentPhase: currentPhase, currentPhaseSteps: moreStepsInCurrentPhase, nextPhaseSteps: nextPhaseSteps).map {
| `- warning: reference to captured var 'nextPhaseSteps' in concurrently-executing code
694 | finishedSteps + $0
695 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:694:21: warning: capture of 'finishedSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
692 | } else {
693 | return self.recursivelyPerformSteps(currentPhase: currentPhase, currentPhaseSteps: moreStepsInCurrentPhase, nextPhaseSteps: nextPhaseSteps).map {
694 | finishedSteps + $0
| `- warning: capture of 'finishedSteps' with non-sendable type '[CASTreeImport.NextStep]' in a `@Sendable` closure
695 | }
696 | }
:
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:694:21: warning: reference to captured var 'finishedSteps' in concurrently-executing code
692 | } else {
693 | return self.recursivelyPerformSteps(currentPhase: currentPhase, currentPhaseSteps: moreStepsInCurrentPhase, nextPhaseSteps: nextPhaseSteps).map {
694 | finishedSteps + $0
| `- warning: reference to captured var 'finishedSteps' in concurrently-executing code
695 | }
696 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:950:33: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
948 | func uploadFileInfo(blobId: LLBDataID, importSize: Int? = nil) -> LLBFuture<NextStep> {
949 | guard finalResultPromise.isCompleted == false else {
950 | return loop.makeSucceededFuture(NextStep.skipped)
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
951 | }
952 |
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:961:33: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
959 | stats.importedBytes_.wrappingIncrement(by: size, ordering: .relaxed)
960 | }
961 | return loop.makeSucceededFuture(encodeNextStep(for: blobId))
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
962 | }
963 |
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:993:39: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
991 | let containsFuture = self.dbContains(segm, ctx)
992 | let containsLoop = containsFuture.eventLoop
993 | return containsFuture.flatMap { exists -> LLBFuture<NextStep> in
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
994 |
995 | guard !exists else {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:996:73: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
994 |
995 | guard !exists else {
996 | let existingIdFuture: LLBFuture<NextStep> = segm.id.flatMap { id in
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
997 | return uploadFileInfo(blobId: id, importSize: segm.uncompressedSize)
998 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1003:39: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1001 | }
1002 |
1003 | return containsLoop.makeSucceededFuture(NextStep.execute(in: .UploadingFiles, run: {
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1004 | let nextStepFuture: LLBFuture<NextStep> = self.execute(on: self.cpuQueue, default: nil) { () -> LLBFuture<NextStep>? in
1005 | let data: LLBFastData
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1019:37: warning: 'executeWithBackpressure(on:loop:size:default:_:)' is deprecated: This method blocks indefinitely and returns a future
1017 | // free to take our load. This ensures that we're not
1018 | // limited by CPU parallelism for network concurrency.
1019 | return self.executeWithBackpressure(on: self.netQueue, loop: containsLoop, size: slice.readableBytes, default: .skipped) { () -> LLBFuture<NextStep> in
| `- warning: 'executeWithBackpressure(on:loop:size:default:_:)' is deprecated: This method blocks indefinitely and returns a future
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1020:110: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1018 | // limited by CPU parallelism for network concurrency.
1019 | return self.executeWithBackpressure(on: self.netQueue, loop: containsLoop, size: slice.readableBytes, default: .skipped) { () -> LLBFuture<NextStep> in
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1021 | withExtendedLifetime(importObject) { // for mmap
1022 | uploadFileInfo(blobId: id)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1026:31: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1024 | }.map { result in
1025 | return result
1026 | }.hop(to: loop)
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1027 | }
1028 | }.flatMap {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1028:23: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1026 | }.hop(to: loop)
1027 | }
1028 | }.flatMap {
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1029 | // This type of return ensures that cpuQueue does not
1030 | // wait for the netQueue operation to complete.
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1031:36: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1029 | // This type of return ensures that cpuQueue does not
1030 | // wait for the netQueue operation to complete.
1031 | $0 ?? loop.makeSucceededFuture(NextStep.skipped)
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1032 | }
1033 | nextStepFuture.cascade(to: partialStepPromise)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1078:17: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1076 | throw error
1077 |
1078 | }.flatMap { nextSteps in
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1079 | // The next steps can only be empty if we've reacting on
1080 | // a filesystem-related error with some of our chunks.
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1082:33: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1080 | // a filesystem-related error with some of our chunks.
1081 | guard nextSteps.isEmpty == false else {
1082 | return loop.makeSucceededFuture(.skipped)
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1083 | }
1084 |
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1118:47: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1116 | // have been uploaded. Therefore we wait for the huge files in
1117 | // its own state, .UploadingWait.
1118 | return cheapNextStepFutures + [loop.makeSucceededFuture(combinePartialResultsStep)]
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1119 | }
1120 |
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1123:18: warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
743 | }
744 |
745 | indirect enum NextStep {
| `- note: consider making enum 'NextStep' conform to the 'Sendable' protocol
746 | // Final step in a sequence: stop stepping through.
747 | case skipped
:
1121 | // When the .EstimatingSize phase comes, this can be executed.
1122 | return .execute(in: .EstimatingSize, run: {
1123 | loop.makeSucceededFuture(NextStep.wait(in: .CheckIfUploaded,
| `- warning: type 'CASTreeImport.NextStep' does not conform to the 'Sendable' protocol
1124 | futures: assemblePartialNextSteps()))
1125 | })
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:981:25: warning: capture of 'encodeNextStep(for:)' with non-sendable type '(LLBDataID) -> CASTreeImport.NextStep' in a `@Sendable` closure
979 | do {
980 | return dbPut(refs: [blobId], data: try fileInfo.toBytes(), importSize: importSize, ctx).map { id in
981 | encodeNextStep(for: id)
| |- warning: capture of 'encodeNextStep(for:)' with non-sendable type '(LLBDataID) -> CASTreeImport.NextStep' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
982 | }
983 | } catch {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:938:20: warning: concurrently-executed local function 'encodeNextStep(for:)' must be marked as '@Sendable'
936 | let partialStepPromise = LLBCancellablePromise(promise: loop.makePromise(of: NextStep.self))
937 |
938 | func encodeNextStep(for id: LLBDataID) -> NextStep {
| `- warning: concurrently-executed local function 'encodeNextStep(for:)' must be marked as '@Sendable'
939 | if isSingleChunk {
940 | return .singleFile(SingleFileInfo(path: path, id: id, type: type, size: UInt64(clamping: segm.uncompressedSize), posixDetails: importObject.posixDetails))
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:997:32: warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in a `@Sendable` closure
995 | guard !exists else {
996 | let existingIdFuture: LLBFuture<NextStep> = segm.id.flatMap { id in
997 | return uploadFileInfo(blobId: id, importSize: segm.uncompressedSize)
| |- warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
998 | }
999 | existingIdFuture.cascade(to: partialStepPromise)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1007:32: warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in a `@Sendable` closure
836 | let type: LLBFileType
837 | let allSegmentsUncompressedDataSize: Int
838 | enum ObjectToImport {
| `- note: consider making enum 'ObjectToImport' conform to the 'Sendable' protocol
839 | case link(target: LLBFastData)
840 | case file(file: FileSegmenter, posixDetails: LLBPosixFileDetails)
:
1005 | let data: LLBFastData
1006 |
1007 | switch importObject {
| `- warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in a `@Sendable` closure
1008 | case let .link(target):
1009 | data = target
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:997:32: warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in a `@Sendable` closure
995 | guard !exists else {
996 | let existingIdFuture: LLBFuture<NextStep> = segm.id.flatMap { id in
997 | return uploadFileInfo(blobId: id, importSize: segm.uncompressedSize)
| |- warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
998 | }
999 | existingIdFuture.cascade(to: partialStepPromise)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:948:20: warning: concurrently-executed local function 'uploadFileInfo(blobId:importSize:)' must be marked as '@Sendable'
946 | // If the file has non-standard layout, upload it after we upload
947 | // the binary blob.
948 | func uploadFileInfo(blobId: LLBDataID, importSize: Int? = nil) -> LLBFuture<NextStep> {
| `- warning: concurrently-executed local function 'uploadFileInfo(blobId:importSize:)' must be marked as '@Sendable'
949 | guard finalResultPromise.isCompleted == false else {
950 | return loop.makeSucceededFuture(NextStep.skipped)
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1007:32: warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in an isolated closure; this is an error in the Swift 6 language mode
836 | let type: LLBFileType
837 | let allSegmentsUncompressedDataSize: Int
838 | enum ObjectToImport {
| `- note: consider making enum 'ObjectToImport' conform to the 'Sendable' protocol
839 | case link(target: LLBFastData)
840 | case file(file: FileSegmenter, posixDetails: LLBPosixFileDetails)
:
1005 | let data: LLBFastData
1006 |
1007 | switch importObject {
| `- warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in an isolated closure; this is an error in the Swift 6 language mode
1008 | case let .link(target):
1009 | data = target
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1022:37: warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
1022 | uploadFileInfo(blobId: id)
| |- warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1023 | }
1024 | }.map { result in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1007:32: warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in an isolated closure; this is an error in the Swift 6 language mode
836 | let type: LLBFileType
837 | let allSegmentsUncompressedDataSize: Int
838 | enum ObjectToImport {
| `- note: consider making enum 'ObjectToImport' conform to the 'Sendable' protocol
839 | case link(target: LLBFastData)
840 | case file(file: FileSegmenter, posixDetails: LLBPosixFileDetails)
:
1005 | let data: LLBFastData
1006 |
1007 | switch importObject {
| `- warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in an isolated closure; this is an error in the Swift 6 language mode
1008 | case let .link(target):
1009 | data = target
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1022:37: warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
1022 | uploadFileInfo(blobId: id)
| |- warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1023 | }
1024 | }.map { result in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1021:54: warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in an isolated closure; this is an error in the Swift 6 language mode
836 | let type: LLBFileType
837 | let allSegmentsUncompressedDataSize: Int
838 | enum ObjectToImport {
| `- note: consider making enum 'ObjectToImport' conform to the 'Sendable' protocol
839 | case link(target: LLBFastData)
840 | case file(file: FileSegmenter, posixDetails: LLBPosixFileDetails)
:
1019 | return self.executeWithBackpressure(on: self.netQueue, loop: containsLoop, size: slice.readableBytes, default: .skipped) { () -> LLBFuture<NextStep> in
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
| `- warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in an isolated closure; this is an error in the Swift 6 language mode
1022 | uploadFileInfo(blobId: id)
1023 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1022:37: warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
1022 | uploadFileInfo(blobId: id)
| |- warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1023 | }
1024 | }.map { result in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1021:54: warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in a `@Sendable` closure
836 | let type: LLBFileType
837 | let allSegmentsUncompressedDataSize: Int
838 | enum ObjectToImport {
| `- note: consider making enum 'ObjectToImport' conform to the 'Sendable' protocol
839 | case link(target: LLBFastData)
840 | case file(file: FileSegmenter, posixDetails: LLBPosixFileDetails)
:
1019 | return self.executeWithBackpressure(on: self.netQueue, loop: containsLoop, size: slice.readableBytes, default: .skipped) { () -> LLBFuture<NextStep> in
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
| `- warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in a `@Sendable` closure
1022 | uploadFileInfo(blobId: id)
1023 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1022:37: warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in a `@Sendable` closure
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
1022 | uploadFileInfo(blobId: id)
| |- warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1023 | }
1024 | }.map { result in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1022:37: warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
1020 | return self.dbPut(refs: [], data: slice, importSize: segm.uncompressedSize, ctx).flatMap { id -> LLBFuture<NextStep> in
1021 | withExtendedLifetime(importObject) { // for mmap
1022 | uploadFileInfo(blobId: id)
| |- warning: capture of 'uploadFileInfo(blobId:importSize:)' with non-sendable type '(LLBDataID, Int?) -> LLBFuture<CASTreeImport.NextStep>' (aka '(LLBDataID, Optional<Int>) -> EventLoopFuture<CASTreeImport.NextStep>') in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1023 | }
1024 | }.map { result in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1098:36: warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in a `@Sendable` closure
836 | let type: LLBFileType
837 | let allSegmentsUncompressedDataSize: Int
838 | enum ObjectToImport {
| `- note: consider making enum 'ObjectToImport' conform to the 'Sendable' protocol
839 | case link(target: LLBFastData)
840 | case file(file: FileSegmenter, posixDetails: LLBPosixFileDetails)
:
1096 | fileInfo.compression = .none
1097 | fileInfo.fixedChunkSize = UInt64(chunkIds.count > 1 ? self.options.fileChunkSize : allSegmentsUncompressedDataSize)
1098 | let posixDetails = importObject.posixDetails
| `- warning: capture of 'importObject' with non-sendable type 'ObjectToImport' in a `@Sendable` closure
1099 | fileInfo.update(posixDetails: posixDetails, options: self.options)
1100 | do {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1164:25: warning: type 'Value' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
1159 | }
1160 |
1161 | private func whenAllSucceed<Value>(_ futures: [LLBFuture<Value>], on loop: LLBFuturesDispatchLoop? = nil) -> LLBFuture<[Value]> {
| `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
1162 | let loop = loop ?? self.loop
1163 | guard finalResultPromise.isCompleted == false else {
1164 | return loop.makeSucceededFuture([])
| `- warning: type 'Value' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
1165 | }
1166 | return LLBFuture.whenAllSucceed(futures, on: loop).map { result in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1166:26: warning: type 'Value' does not conform to the 'Sendable' protocol
1159 | }
1160 |
1161 | private func whenAllSucceed<Value>(_ futures: [LLBFuture<Value>], on loop: LLBFuturesDispatchLoop? = nil) -> LLBFuture<[Value]> {
| `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
1162 | let loop = loop ?? self.loop
1163 | guard finalResultPromise.isCompleted == false else {
1164 | return loop.makeSucceededFuture([])
1165 | }
1166 | return LLBFuture.whenAllSucceed(futures, on: loop).map { result in
| `- warning: type 'Value' does not conform to the 'Sendable' protocol
1167 | guard self.finalResultPromise.isCompleted == false else {
1168 | return []
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1181:39: warning: type 'T' does not conform to the 'Sendable' protocol
1177 | /// Enqueue the callback unless the stop flag is in action.
1178 | /// If stop flag is set, return the value specified in `then`.
1179 | private func execute<T>(on queue: LLBBatchingFutureOperationQueue, default stopValue: T, _ body: @escaping () throws -> T) -> LLBFuture<T> {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
1180 | guard finalResultPromise.isCompleted == false else {
1181 | return queue.group.next().makeSucceededFuture(stopValue)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
1182 | }
1183 | return queue.execute {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1201:25: warning: type 'T' does not conform to the 'Sendable' protocol
1196 | /// Enqueue the callback unless the stop flag is in action.
1197 | /// If stop flag is set, return the value specified in `then`.
1198 | private func execute<T>(on queue: LLBFutureOperationQueue, loop: EventLoop? = nil, size: Int = 1, default stopValue: T, _ body: @escaping () -> LLBFuture<T>) -> LLBFuture<T> {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
1199 | let loop = loop ?? self.loop
1200 | guard finalResultPromise.isCompleted == false else {
1201 | return loop.makeSucceededFuture(stopValue)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
1202 | }
1203 | return queue.enqueue(on: loop, share: size) {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1205:29: warning: type 'T' does not conform to the 'Sendable' protocol
1196 | /// Enqueue the callback unless the stop flag is in action.
1197 | /// If stop flag is set, return the value specified in `then`.
1198 | private func execute<T>(on queue: LLBFutureOperationQueue, loop: EventLoop? = nil, size: Int = 1, default stopValue: T, _ body: @escaping () -> LLBFuture<T>) -> LLBFuture<T> {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
1199 | let loop = loop ?? self.loop
1200 | guard finalResultPromise.isCompleted == false else {
:
1203 | return queue.enqueue(on: loop, share: size) {
1204 | guard self.finalResultPromise.isCompleted == false else {
1205 | return loop.makeSucceededFuture(stopValue)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
1206 | }
1207 | return body().flatMapErrorThrowing { error in
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1219:25: warning: type 'T' does not conform to the 'Sendable' protocol
1215 | @available(*, noasync, message: "This method blocks indefinitely, don't use from 'async' or SwiftNIO EventLoops")
1216 | @available(*, deprecated, message: "This method blocks indefinitely and returns a future")
1217 | private func executeWithBackpressure<T>(on queue: LLBFutureOperationQueue, loop: LLBFuturesDispatchLoop, size: Int = 1, default stopValue: T, _ body: @escaping () -> LLBFuture<T>) -> LLBFuture<T> {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
1218 | guard finalResultPromise.isCompleted == false else {
1219 | return loop.makeSucceededFuture(stopValue)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
1220 | }
1221 | return queue.enqueueWithBackpressure(on: loop, share: size) {
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTreeImport.swift:1223:29: warning: type 'T' does not conform to the 'Sendable' protocol
1215 | @available(*, noasync, message: "This method blocks indefinitely, don't use from 'async' or SwiftNIO EventLoops")
1216 | @available(*, deprecated, message: "This method blocks indefinitely and returns a future")
1217 | private func executeWithBackpressure<T>(on queue: LLBFutureOperationQueue, loop: LLBFuturesDispatchLoop, size: Int = 1, default stopValue: T, _ body: @escaping () -> LLBFuture<T>) -> LLBFuture<T> {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
1218 | guard finalResultPromise.isCompleted == false else {
1219 | return loop.makeSucceededFuture(stopValue)
:
1221 | return queue.enqueueWithBackpressure(on: loop, share: size) {
1222 | guard self.finalResultPromise.isCompleted == false else {
1223 | return loop.makeSucceededFuture(stopValue)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
1224 | }
1225 | return body().flatMapErrorThrowing { error in
[484/487] Compiling TSFCASUtilities BufferedStreamWriter.swift
[485/487] Compiling TSFCASUtilities LinkedListStream.swift
[486/487] Emitting module TSFCASUtilities
[487/487] Compiling TSFCASUtilities StreamReader.swift
/host/spi-builder-workspace/Sources/TSFCASUtilities/StreamReader.swift:54:24: warning: capture of 'self' with non-sendable type 'LLBCASStreamReader' in a `@Sendable` closure
16 | /// implemented. This should be the unified API to read streaming content, so that readers do not need to understand
17 | /// which writer was used to store the data.
18 | public struct LLBCASStreamReader {
| `- note: consider making struct 'LLBCASStreamReader' conform to the 'Sendable' protocol
19 | private let db: LLBCASDatabase
20 |
:
52 | return LLBCASFSClient(db).load(id, ctx).flatMap { node in
53 | guard let tree = node.tree else {
54 | return self.db.group.next().makeFailedFuture(LLBCASStreamError.invalid)
| `- warning: capture of 'self' with non-sendable type 'LLBCASStreamReader' in a `@Sendable` closure
55 | }
56 |
/host/spi-builder-workspace/Sources/TSFCASUtilities/StreamReader.swift:67:34: warning: capture of 'readerBlock' with non-sendable type '(UInt8, LLBByteBufferView) throws -> Bool' (aka '(UInt8, ByteBufferView) throws -> Bool') in a `@Sendable` closure
65 | lastReadID: lastReadID,
66 | ctx,
67 | readerBlock: readerBlock
| |- warning: capture of 'readerBlock' with non-sendable type '(UInt8, LLBByteBufferView) throws -> Bool' (aka '(UInt8, ByteBufferView) throws -> Bool') in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
68 | )
69 | } else {
/host/spi-builder-workspace/Sources/TSFCASUtilities/StreamReader.swift:78:28: warning: capture of 'self' with non-sendable type 'LLBCASStreamReader' in a `@Sendable` closure
16 | /// implemented. This should be the unified API to read streaming content, so that readers do not need to understand
17 | /// which writer was used to store the data.
18 | public struct LLBCASStreamReader {
| `- note: consider making struct 'LLBCASStreamReader' conform to the 'Sendable' protocol
19 | private let db: LLBCASDatabase
20 |
:
76 | // and propagate the desire to keep on reading.
77 | guard shouldContinue else {
78 | return self.db.group.next().makeSucceededFuture(shouldContinue)
| `- warning: capture of 'self' with non-sendable type 'LLBCASStreamReader' in a `@Sendable` closure
79 | }
80 |
/host/spi-builder-workspace/Sources/TSFCASUtilities/StreamReader.swift:81:29: warning: capture of 'tree' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
79 | }
80 |
81 | let files = tree.files.filter {
| `- warning: capture of 'tree' with non-sendable type 'LLBCASFileTree' in a `@Sendable` closure
82 | $0.type == .plainFile
83 | }
/host/spi-builder-workspace/Sources/TSFCASFileTree/FileTree.swift:47:20: note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
45 | /// rearrange this implementation to support higher-performance derivative
46 | /// operations (for example, tree union).
47 | public final class LLBCASFileTree {
| `- note: class 'LLBCASFileTree' does not conform to the 'Sendable' protocol
48 | /// The id of this tree.
49 | //
/host/spi-builder-workspace/Sources/TSFCASUtilities/StreamReader.swift:12:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'TSFCASFileTree'
10 | import TSCUtility
11 | import TSFCAS
12 | import TSFCASFileTree
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'TSFCASFileTree'
13 |
14 | /// Implements the reading logic to read any kind of streaming data storage implemented. Currently it's hardcoded to
/host/spi-builder-workspace/Sources/TSFCASUtilities/StreamReader.swift:102:36: warning: capture of 'readerBlock' with non-sendable type '(UInt8, LLBByteBufferView) throws -> Bool' (aka '(UInt8, ByteBufferView) throws -> Bool') in a `@Sendable` closure
100 |
101 | return blob.read(ctx).flatMapThrowing { byteBufferView in
102 | return try readerBlock(channel, byteBufferView)
| |- warning: capture of 'readerBlock' with non-sendable type '(UInt8, LLBByteBufferView) throws -> Bool' (aka '(UInt8, ByteBufferView) throws -> Bool') in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
103 | }
104 | }
/host/spi-builder-workspace/Sources/TSFCASUtilities/StreamReader.swift:98:32: warning: capture of 'self' with non-sendable type 'LLBCASStreamReader' in a `@Sendable` closure
16 | /// implemented. This should be the unified API to read streaming content, so that readers do not need to understand
17 | /// which writer was used to store the data.
18 | public struct LLBCASStreamReader {
| `- note: consider making struct 'LLBCASStreamReader' conform to the 'Sendable' protocol
19 | private let db: LLBCASDatabase
20 |
:
96 | return LLBCASFSClient(self.db).load(contentID, ctx).flatMap { node in
97 | guard let blob = node.blob else {
98 | return self.db.group.next().makeFailedFuture(LLBCASStreamError.missing)
| `- warning: capture of 'self' with non-sendable type 'LLBCASStreamReader' in a `@Sendable` closure
99 | }
100 |
/host/spi-builder-workspace/Sources/TSFCASUtilities/StreamReader.swift:102:36: warning: capture of 'readerBlock' with non-sendable type '(UInt8, LLBByteBufferView) throws -> Bool' (aka '(UInt8, ByteBufferView) throws -> Bool') in a `@Sendable` closure
100 |
101 | return blob.read(ctx).flatMapThrowing { byteBufferView in
102 | return try readerBlock(channel, byteBufferView)
| |- warning: capture of 'readerBlock' with non-sendable type '(UInt8, LLBByteBufferView) throws -> Bool' (aka '(UInt8, ByteBufferView) throws -> Bool') in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
103 | }
104 | }
/host/spi-builder-workspace/Sources/TSFCASUtilities/StreamReader.swift:102:36: warning: capture of 'readerBlock' with non-sendable type '(UInt8, LLBByteBufferView) throws -> Bool' (aka '(UInt8, ByteBufferView) throws -> Bool') in a `@Sendable` closure
100 |
101 | return blob.read(ctx).flatMapThrowing { byteBufferView in
102 | return try readerBlock(channel, byteBufferView)
| |- warning: capture of 'readerBlock' with non-sendable type '(UInt8, LLBByteBufferView) throws -> Bool' (aka '(UInt8, ByteBufferView) throws -> Bool') in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
103 | }
104 | }
Build complete! (158.06s)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-nio",
"requirement" : {
"range" : [
{
"lower_bound" : "2.68.0",
"upper_bound" : "3.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-nio.git"
},
{
"identity" : "swift-protobuf",
"requirement" : {
"range" : [
{
"lower_bound" : "1.28.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-protobuf.git"
},
{
"identity" : "swift-tools-support-core",
"requirement" : {
"range" : [
{
"lower_bound" : "0.5.8",
"upper_bound" : "0.8.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-tools-support-core.git"
}
],
"manifest_display_name" : "swift-tools-support-async",
"name" : "swift-tools-support-async",
"path" : "/host/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.15"
},
{
"name" : "ios",
"version" : "13.0"
}
],
"products" : [
{
"name" : "SwiftToolsSupportAsync",
"targets" : [
"TSFFutures",
"TSFUtility"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "SwiftToolsSupportCAS",
"targets" : [
"TSFCAS",
"TSFCASFileTree",
"TSFCASUtilities"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "TSFUtility",
"module_type" : "SwiftTarget",
"name" : "TSFUtility",
"path" : "Sources/TSFUtility",
"product_dependencies" : [
"NIO",
"NIOConcurrencyHelpers",
"NIOFoundationCompat"
],
"product_memberships" : [
"SwiftToolsSupportAsync",
"SwiftToolsSupportCAS"
],
"sources" : [
"ByteBuffer.swift",
"FastData.swift",
"FutureFileSystem.swift",
"Serializable.swift"
],
"target_dependencies" : [
"TSFFutures"
],
"type" : "library"
},
{
"c99name" : "TSFFuturesTests",
"module_type" : "SwiftTarget",
"name" : "TSFFuturesTests",
"path" : "Tests/TSFFuturesTests",
"sources" : [
"BatchingFutureOperationQueue.swift",
"CancellableFutureTests.swift",
"CancellablePromiseTests.swift",
"CancellerTests.swift",
"EventualResultsCacheTests.swift",
"FutureDeduplicatorTests.swift",
"FutureOperationQueueTests.swift",
"OrderManagerTests.swift"
],
"target_dependencies" : [
"TSFFutures"
],
"type" : "test"
},
{
"c99name" : "TSFFutures",
"module_type" : "SwiftTarget",
"name" : "TSFFutures",
"path" : "Sources/TSFFutures",
"product_dependencies" : [
"NIO",
"NIOFoundationCompat",
"SwiftToolsSupport-auto"
],
"product_memberships" : [
"SwiftToolsSupportAsync",
"SwiftToolsSupportCAS"
],
"sources" : [
"BatchingFutureOperationQueue.swift",
"CancellableFuture.swift",
"CancellablePromise.swift",
"Canceller.swift",
"EventualResultsCache.swift",
"FutureDeduplicator.swift",
"FutureOperationQueue.swift",
"Futures.swift",
"OperationQueue+Extensions.swift",
"OrderManager.swift"
],
"type" : "library"
},
{
"c99name" : "TSFCASUtilitiesTests",
"module_type" : "SwiftTarget",
"name" : "TSFCASUtilitiesTests",
"path" : "Tests/TSFCASUtilitiesTests",
"sources" : [
"BufferedStreamWriterTests.swift",
"LinkedListStreamTests.swift"
],
"target_dependencies" : [
"TSFCASUtilities"
],
"type" : "test"
},
{
"c99name" : "TSFCASUtilities",
"module_type" : "SwiftTarget",
"name" : "TSFCASUtilities",
"path" : "Sources/TSFCASUtilities",
"product_memberships" : [
"SwiftToolsSupportCAS"
],
"sources" : [
"BufferedStreamWriter.swift",
"LinkedListStream.swift",
"StreamReader.swift"
],
"target_dependencies" : [
"TSFCAS",
"TSFCASFileTree"
],
"type" : "library"
},
{
"c99name" : "TSFCASTests",
"module_type" : "SwiftTarget",
"name" : "TSFCASTests",
"path" : "Tests/TSFCASTests",
"sources" : [
"DataIDTests.swift",
"FileBackedCASDatabaseTests.swift",
"InMemoryCASDatabaseTests.swift"
],
"target_dependencies" : [
"TSFCAS"
],
"type" : "test"
},
{
"c99name" : "TSFCASFileTreeTests",
"module_type" : "SwiftTarget",
"name" : "TSFCASFileTreeTests",
"path" : "Tests/TSFCASFileTreeTests",
"sources" : [
"CASBlobTests.swift",
"FileTreeImportExportTests.swift",
"FileTreeTests.swift"
],
"target_dependencies" : [
"TSFCASFileTree"
],
"type" : "test"
},
{
"c99name" : "TSFCASFileTree",
"module_type" : "SwiftTarget",
"name" : "TSFCASFileTree",
"path" : "Sources/TSFCASFileTree",
"product_memberships" : [
"SwiftToolsSupportCAS"
],
"sources" : [
"BinarySearch.swift",
"CASBlob.swift",
"CASFSClient.swift",
"CASFSNode.swift",
"ConcurrentFileTreeWalker.swift",
"Context.swift",
"DeclFileTree.swift",
"DirectoryEntry.swift",
"Errors.swift",
"FileInfo.swift",
"FileTree.swift",
"FileTreeExport.swift",
"FileTreeImport.swift",
"FilesystemObject.swift",
"Generated/CASFileTreeProtocol/file_tree.pb.swift",
"Internal/ConcurrentFilesystemScanner.swift",
"Internal/FileSegmenter.swift",
"Internal/FileTreeParser.swift",
"TSCCASFileSystem.swift"
],
"target_dependencies" : [
"TSFCAS"
],
"type" : "library"
},
{
"c99name" : "TSFCAS",
"module_type" : "SwiftTarget",
"name" : "TSFCAS",
"path" : "Sources/TSFCAS",
"product_dependencies" : [
"SwiftProtobuf"
],
"product_memberships" : [
"SwiftToolsSupportCAS"
],
"sources" : [
"DataID.swift",
"Database.swift",
"DatabaseSpec.swift",
"Generated/CASProtocol/cas_object.pb.swift",
"Generated/CASProtocol/data_id.pb.swift",
"Implementations/Blake3DataID.swift",
"Implementations/FileBackedCASDatabase.swift",
"Implementations/InMemoryCASDatabase.swift",
"Object.swift"
],
"target_dependencies" : [
"TSFFutures",
"TSFUtility",
"CBLAKE3"
],
"type" : "library"
},
{
"c99name" : "CBLAKE3",
"module_type" : "ClangTarget",
"name" : "CBLAKE3",
"path" : "Sources/CBLAKE3",
"product_memberships" : [
"SwiftToolsSupportCAS"
],
"sources" : [
"blake3.c",
"blake3_avx2.c",
"blake3_avx512.c",
"blake3_sse41.c"
],
"type" : "library"
}
],
"tools_version" : "5.5"
}
basic-6.0-latest: Pulling from finestructure/spi-images
Digest: sha256:081dcf4fb829aea9d08447f4790431afbdfbcc335bfeed728ca69c6f181ae2aa
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.0-latest
Done.