From c26ca4dbe5c16e6699b3fa54aca2f66d48db0ee1 Mon Sep 17 00:00:00 2001 From: Franz Busch <f.busch@apple.com> Date: Tue, 18 Mar 2025 15:02:51 +0100 Subject: [PATCH] Fix 5.10 compile on Ubuntu 24.04 Specifically Swift 5.10 on Intel on Ubuntu Noble (24.04) has a crazy bug which leads to compilation failures in a #if compiler(>=6.0) block: swiftlang/swift#79285 . This workaround fixes the compilation by changing the whitespace. --- Sources/Metrics/Metrics.swift | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Sources/Metrics/Metrics.swift b/Sources/Metrics/Metrics.swift index 6b0a378..963c296 100644 --- a/Sources/Metrics/Metrics.swift +++ b/Sources/Metrics/Metrics.swift @@ -11,6 +11,9 @@ // SPDX-License-Identifier: Apache-2.0 // //===----------------------------------------------------------------------===// +// swift-format-ignore-file +// Note: Whitespace changes are used to workaround compiler bug +// https://github.com/swiftlang/swift/issues/79285 @_exported import CoreMetrics import Foundation @@ -123,8 +126,9 @@ extension Timer { @available(macOS 13, iOS 16, tvOS 16, watchOS 9, *) public func measure<Result, Failure: Error, Clock: _Concurrency.Clock>( clock: Clock = .continuous, - body: () throws(Failure) -> Result - ) throws(Failure) -> Result where Clock.Duration == Duration { + // DO NOT FIX THE WHITESPACE IN THE NEXT LINE UNTIL 5.10 IS UNSUPPORTED + // https://github.com/swiftlang/swift/issues/79285 + body: () throws(Failure) -> Result) throws(Failure) -> Result where Clock.Duration == Duration { let start = clock.now defer { self.record(duration: start.duration(to: clock.now)) @@ -143,8 +147,9 @@ extension Timer { public func measure<Result, Failure: Error, Clock: _Concurrency.Clock>( clock: Clock = .continuous, isolation: isolated (any Actor)? = #isolation, - body: () async throws(Failure) -> sending Result - ) async throws(Failure) -> sending Result where Clock.Duration == Duration { + // DO NOT FIX THE WHITESPACE IN THE NEXT LINE UNTIL 5.10 IS UNSUPPORTED + // https://github.com/swiftlang/swift/issues/79285 + body: () async throws(Failure) -> sending Result) async throws(Failure) -> sending Result where Clock.Duration == Duration { let start = clock.now defer { self.record(duration: start.duration(to: clock.now))