From a292113ef26429b67f01964406772ee4e266c00f Mon Sep 17 00:00:00 2001 From: Egor Zhdan Date: Tue, 24 Jun 2025 13:33:21 +0100 Subject: [PATCH] [cxx-interop] Fix test failure on older macOS The runtime logic for printing a foreign reference type is behind `if #available(SwiftStdlib 6.2, *)`, which means it won't run on older versions of macOS, even if you use a newer Swift runtime. rdar://153735437 --- .../foreign-reference/print-reference.swift | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/test/Interop/Cxx/foreign-reference/print-reference.swift b/test/Interop/Cxx/foreign-reference/print-reference.swift index 1a4797b06fa6e..4294689d32885 100644 --- a/test/Interop/Cxx/foreign-reference/print-reference.swift +++ b/test/Interop/Cxx/foreign-reference/print-reference.swift @@ -1,4 +1,4 @@ -// RUN: %target-run-simple-swift(-cxx-interoperability-mode=default -Xfrontend -disable-availability-checking -I %S/Inputs) | %FileCheck %s +// RUN: %target-run-simple-swift(-cxx-interoperability-mode=default -I %S/Inputs) | %FileCheck %s // REQUIRES: executable_test @@ -12,10 +12,15 @@ import Printed func printCxxImmortalFRT() { - let s = ImmortalFRT() - print(s) + if #available(SwiftStdlib 6.2, *) { + let s = ImmortalFRT() + print(s) + } else { + print("runtime too old") + } } +@available(SwiftStdlib 5.9, *) extension FRTCustomStringConvertible : CustomStringConvertible { public var description: String { return "FRTCustomStringConvertible(publ: \(publ))" @@ -23,20 +28,28 @@ extension FRTCustomStringConvertible : CustomStringConvertible { } func printCxxFRTCustomStringConvertible() { - let s = FRTCustomStringConvertible() - print(s) + if #available(SwiftStdlib 5.9, *) { + let s = FRTCustomStringConvertible() + print(s) + } else { + print("runtime too old") + } } func printCxxFRType() { - let s = FRType() - print(s) + if #available(SwiftStdlib 6.2, *) { + let s = FRType() + print(s) + } else { + print("runtime too old") + } } printCxxImmortalFRT() -// CHECK: ImmortalFRT() +// CHECK: {{ImmortalFRT()|runtime too old}} printCxxFRTCustomStringConvertible() // CHECK: FRTCustomStringConvertible(publ: 2) printCxxFRType() -// CHECK: FRType() +// CHECK: {{FRType()|runtime too old}}