Skip to content

Commit ede5509

Browse files
committed
Reduce usage of callback and dispatch methods in favor of async/await
Remove unused callback API Remove unneeded withChecked*Continuation wrappers Use async/await in more tests
1 parent 55e284e commit ede5509

14 files changed

+79
-266
lines changed

Sources/PackageRegistry/ChecksumTOFU.swift

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -67,29 +67,6 @@ struct PackageVersionChecksumTOFU {
6767
}
6868
}
6969

70-
@available(*, noasync, message: "Use the async alternative")
71-
func validateSourceArchive(
72-
registry: Registry,
73-
package: PackageIdentity.RegistryIdentity,
74-
version: Version,
75-
checksum: String,
76-
timeout: DispatchTimeInterval?,
77-
observabilityScope: ObservabilityScope,
78-
callbackQueue: DispatchQueue,
79-
completion: @escaping @Sendable (Result<Void, Error>) -> Void
80-
) {
81-
callbackQueue.asyncResult(completion) {
82-
try await self.validateSourceArchive(
83-
registry: registry,
84-
package: package,
85-
version: version,
86-
checksum: checksum,
87-
timeout: timeout,
88-
observabilityScope: observabilityScope
89-
)
90-
}
91-
}
92-
9370
private func getExpectedChecksum(
9471
registry: Registry,
9572
package: PackageIdentity.RegistryIdentity,

Sources/PackageRegistry/RegistryClient.swift

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -613,25 +613,6 @@ public final class RegistryClient: AsyncCancellable {
613613
}
614614
}
615615

616-
@available(*, deprecated, message: "Use the async alternative")
617-
public func getAvailableManifests(
618-
package: PackageIdentity,
619-
version: Version,
620-
timeout: DispatchTimeInterval? = .none,
621-
observabilityScope: ObservabilityScope,
622-
callbackQueue: DispatchQueue,
623-
completion: @escaping @Sendable (Result<[String: (toolsVersion: ToolsVersion, content: String?)], Error>) -> Void
624-
) {
625-
callbackQueue.asyncResult(completion) {
626-
try await self.getAvailableManifests(
627-
package: package,
628-
version: version,
629-
timeout: timeout,
630-
observabilityScope: observabilityScope
631-
)
632-
}
633-
}
634-
635616
public func getManifestContent(
636617
package: PackageIdentity,
637618
version: Version,

Sources/PackageRegistry/RegistryDownloadsManager.swift

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -119,23 +119,6 @@ public class RegistryDownloadsManager: AsyncCancellable {
119119
return try await task.value
120120
}
121121

122-
@available(*, noasync, message: "Use the async alternative")
123-
public func lookup(
124-
package: PackageIdentity,
125-
version: Version,
126-
observabilityScope: ObservabilityScope,
127-
callbackQueue: DispatchQueue,
128-
completion: @escaping @Sendable (Result<Basics.AbsolutePath, Error>) -> Void
129-
) {
130-
callbackQueue.asyncResult(completion) {
131-
try await self.lookup(
132-
package: package,
133-
version: version,
134-
observabilityScope: observabilityScope
135-
)
136-
}
137-
}
138-
139122
/// Cancel any outstanding requests
140123
public func cancel(deadline: DispatchTime) async throws {
141124
try await self.registryClient.cancel(deadline: deadline)

Sources/PackageRegistry/SignatureValidation.swift

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -350,36 +350,6 @@ struct SignatureValidation {
350350
return signingEntity;
351351
}
352352

353-
354-
@available(*, noasync, message: "Use the async alternative")
355-
func validate(
356-
registry: Registry,
357-
package: PackageIdentity.RegistryIdentity,
358-
version: Version,
359-
toolsVersion: ToolsVersion?,
360-
manifestContent: String,
361-
configuration: RegistryConfiguration.Security.Signing,
362-
timeout: DispatchTimeInterval?,
363-
fileSystem: FileSystem,
364-
observabilityScope: ObservabilityScope,
365-
callbackQueue: DispatchQueue,
366-
completion: @escaping @Sendable (Result<SigningEntity?, Error>) -> Void
367-
) {
368-
callbackQueue.asyncResult(completion) {
369-
try await self.validate(
370-
registry: registry,
371-
package: package,
372-
version: version,
373-
toolsVersion: toolsVersion,
374-
manifestContent: manifestContent,
375-
configuration: configuration,
376-
timeout: timeout,
377-
fileSystem: fileSystem,
378-
observabilityScope: observabilityScope
379-
)
380-
}
381-
}
382-
383353
private func getAndValidateManifestSignature(
384354
registry: Registry,
385355
package: PackageIdentity.RegistryIdentity,

Sources/PackageRegistry/SigningEntityTOFU.swift

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -76,26 +76,6 @@ struct PackageSigningEntityTOFU {
7676
)
7777
}
7878

79-
@available(*, noasync, message: "Use the async alternative")
80-
func validate(
81-
registry: Registry,
82-
package: PackageIdentity.RegistryIdentity,
83-
version: Version,
84-
signingEntity: SigningEntity?,
85-
observabilityScope: ObservabilityScope,
86-
completion: @escaping @Sendable (Result<Void, Error>) -> Void
87-
) {
88-
DispatchQueue.sharedConcurrent.asyncResult(completion) {
89-
try await self.validate(
90-
registry: registry,
91-
package: package,
92-
version: version,
93-
signingEntity: signingEntity,
94-
observabilityScope: observabilityScope
95-
)
96-
}
97-
}
98-
9979
private func validateSigningEntity(
10080
registry: Registry,
10181
package: PackageIdentity.RegistryIdentity,

Sources/Workspace/Workspace+Dependencies.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import func Basics.os_signpost
1919
import struct Basics.RelativePath
2020
import enum Basics.SignpostName
2121
import class Basics.ThreadSafeKeyValueStore
22-
import class Dispatch.DispatchGroup
2322
import struct Dispatch.DispatchTime
2423
import enum Dispatch.DispatchTimeInterval
2524
import struct PackageGraph.Assignment

Sources/Workspace/Workspace+Manifests.swift

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import struct Basics.InternalError
1919
import class Basics.ObservabilityScope
2020
import struct Basics.SwiftVersion
2121
import class Basics.ThreadSafeKeyValueStore
22-
import class Dispatch.DispatchGroup
2322
import struct Dispatch.DispatchTime
2423
import struct OrderedCollections.OrderedDictionary
2524
import struct OrderedCollections.OrderedSet
@@ -1044,17 +1043,13 @@ extension Workspace {
10441043
case .fileSystem:
10451044
return nil
10461045
case .custom:
1047-
let container = try await withCheckedThrowingContinuation { continuation in
1048-
self.packageContainerProvider.getContainer(
1049-
for: package,
1050-
updateStrategy: .never,
1051-
observabilityScope: observabilityScope,
1052-
on: .sharedConcurrent,
1053-
completion: {
1054-
continuation.resume(with: $0)
1055-
}
1056-
)
1057-
}
1046+
let container = try await self.packageContainerProvider.getContainer(
1047+
for: package,
1048+
updateStrategy: .never,
1049+
observabilityScope: observabilityScope,
1050+
on: .sharedConcurrent
1051+
)
1052+
10581053
guard let customContainer = container as? CustomPackageContainer else {
10591054
observabilityScope.emit(error: "invalid custom dependency container: \(container)")
10601055
return nil

Sources/Workspace/Workspace.swift

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1270,24 +1270,6 @@ extension Workspace {
12701270
return try builder.construct()
12711271
}
12721272

1273-
/// Loads a single package in the context of a previously loaded graph. This can be useful for incremental loading
1274-
/// in a longer-lived program, like an IDE.
1275-
@available(*, noasync, message: "Use the async alternative")
1276-
public func loadPackage(
1277-
with identity: PackageIdentity,
1278-
packageGraph: ModulesGraph,
1279-
observabilityScope: ObservabilityScope,
1280-
completion: @escaping @Sendable (Result<Package, Error>) -> Void
1281-
) {
1282-
DispatchQueue.sharedConcurrent.asyncResult(completion) {
1283-
try await self.loadPackage(
1284-
with: identity,
1285-
packageGraph: packageGraph,
1286-
observabilityScope: observabilityScope
1287-
)
1288-
}
1289-
}
1290-
12911273
public func changeSigningEntityFromVersion(
12921274
package: PackageIdentity,
12931275
version: Version,

Tests/BasicsTests/AsyncProcessTests.swift

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -66,31 +66,21 @@ final class AsyncProcessTests: XCTestCase {
6666
}
6767
}
6868

69-
func testPopenLegacyAsync() throws {
69+
func testPopenLegacyAsync() async throws {
7070
#if os(Windows)
7171
let args = ["where.exe", "where"]
7272
let answer = "C:\\Windows\\System32\\where.exe"
7373
#else
7474
let args = ["whoami"]
7575
let answer = NSUserName()
7676
#endif
77-
var popenResult: Result<AsyncProcessResult, Error>?
78-
let group = DispatchGroup()
79-
group.enter()
80-
AsyncProcess.popen(arguments: args) { result in
81-
popenResult = result
82-
group.leave()
83-
}
84-
group.wait()
85-
switch popenResult {
86-
case .success(let processResult):
87-
let output = try processResult.utf8Output()
88-
XCTAssertTrue(output.hasPrefix(answer))
89-
case .failure(let error):
90-
XCTFail("error = \(error)")
91-
case nil:
92-
XCTFail()
77+
let processResult = try await withCheckedThrowingContinuation { continuation in
78+
AsyncProcess.popen(arguments: args) { result in
79+
continuation.resume(with: result)
80+
}
9381
}
82+
let output = try processResult.utf8Output()
83+
XCTAssert(output.hasPrefix(answer))
9484
}
9585

9686
@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)

Tests/FunctionalTests/PluginTests.swift

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -689,8 +689,7 @@ final class PluginTests {
689689
)
690690

691691
let toolSearchDirectories = [try UserToolchain.default.swiftCompilerPath.parentDirectory]
692-
let success = try await withCheckedThrowingContinuation { continuation in
693-
plugin.invoke(
692+
let success = try await plugin.invoke(
694693
action: .performCommand(package: package, arguments: arguments),
695694
buildEnvironment: BuildEnvironment(platform: .macOS, configuration: .debug),
696695
scriptRunner: scriptRunner,
@@ -707,12 +706,8 @@ final class PluginTests {
707706
modulesGraph: packageGraph,
708707
observabilityScope: observability.topScope,
709708
callbackQueue: delegateQueue,
710-
delegate: delegate,
711-
completion: {
712-
continuation.resume(with: $0)
713-
}
714-
)
715-
}
709+
delegate: delegate
710+
)
716711
if expectFailure {
717712
#expect(!success, "expected command to fail, but it succeeded")
718713
}

0 commit comments

Comments
 (0)