From 9aa8de34de6b10f7961e66b0c55189e9e894950e Mon Sep 17 00:00:00 2001 From: Steven Wu Date: Wed, 1 May 2024 14:48:55 -0700 Subject: [PATCH] [CAS] Fix task continuation misuse when CAS error happens Do not resume with returning after resume with throwing when there is an error returned from CAS service. --- Sources/SwiftDriver/SwiftScan/SwiftScanCAS.swift | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Sources/SwiftDriver/SwiftScan/SwiftScanCAS.swift b/Sources/SwiftDriver/SwiftScan/SwiftScanCAS.swift index c245d643b..54ddd90a4 100644 --- a/Sources/SwiftDriver/SwiftScan/SwiftScanCAS.swift +++ b/Sources/SwiftDriver/SwiftScan/SwiftScanCAS.swift @@ -344,8 +344,9 @@ extension CachedOutput { } else { obj.continuation.resume(throwing: DependencyScanningError.casError("unknown output loading error")) } + } else { + obj.continuation.resume(returning: success) } - obj.continuation.resume(returning: success) } return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in @@ -378,8 +379,9 @@ extension SwiftScanCAS { } else { obj.continuation.resume(throwing: DependencyScanningError.casError("unknown cache querying error")) } + } else { + obj.continuation.resume(returning: obj.cas.convert(compilation: comp)) } - obj.continuation.resume(returning: obj.cas.convert(compilation: comp)) } return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in @@ -410,8 +412,9 @@ extension SwiftScanCAS { } else { obj.continuation.resume(throwing: DependencyScanningError.casError("unknown output loading error")) } + } else { + obj.continuation.resume(returning: success) } - obj.continuation.resume(returning: success) } return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in