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))