From 386698ba6e04e18556c0737eb02aad7f8a954db8 Mon Sep 17 00:00:00 2001 From: Bradley Mackey Date: Wed, 17 Jun 2026 22:21:26 +0100 Subject: [PATCH 1/3] Bump Swift tools and SwiftSyntax to 6.3 --- Vault.xcworkspace/xcshareddata/swiftpm/Package.resolved | 6 +++--- Vault/Package.resolved | 6 +++--- Vault/Package.swift | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Vault.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Vault.xcworkspace/xcshareddata/swiftpm/Package.resolved index b0cb0ee42..8663af2c0 100644 --- a/Vault.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Vault.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "9a84befbaaf952ed7a8b8c122c3dfb2225e633a65c7ab9812a3b86103d53a1dc", + "originHash" : "5eb48be2439ec892eb56371e8339a89f9d3f19d63ca8b2bbff6507a093536054", "pins" : [ { "identity" : "bigint", @@ -96,8 +96,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/swiftlang/swift-syntax", "state" : { - "revision" : "0687f71944021d616d34d922343dcef086855920", - "version" : "600.0.1" + "revision" : "79e4b74a295b6eb74a8b585e3a39d29e70c1dbd1", + "version" : "603.0.2" } }, { diff --git a/Vault/Package.resolved b/Vault/Package.resolved index b0cb0ee42..8663af2c0 100644 --- a/Vault/Package.resolved +++ b/Vault/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "9a84befbaaf952ed7a8b8c122c3dfb2225e633a65c7ab9812a3b86103d53a1dc", + "originHash" : "5eb48be2439ec892eb56371e8339a89f9d3f19d63ca8b2bbff6507a093536054", "pins" : [ { "identity" : "bigint", @@ -96,8 +96,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/swiftlang/swift-syntax", "state" : { - "revision" : "0687f71944021d616d34d922343dcef086855920", - "version" : "600.0.1" + "revision" : "79e4b74a295b6eb74a8b585e3a39d29e70c1dbd1", + "version" : "603.0.2" } }, { diff --git a/Vault/Package.swift b/Vault/Package.swift index 88968a954..a185f30ef 100644 --- a/Vault/Package.swift +++ b/Vault/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 6.0 +// swift-tools-version: 6.3 import CompilerPluginSupport import PackageDescription @@ -56,7 +56,7 @@ let package = Package( .package(url: "https://github.com/dm-zharov/swift-security.git", exact: "2.5.1"), .package(url: "https://github.com/gonzalezreal/swift-markdown-ui", exact: "2.4.1"), .package(url: "https://github.com/SimplyDanny/SwiftLintPlugins", exact: swiftLintVersion), - .package(url: "https://github.com/swiftlang/swift-syntax", from: "600.0.0"), + .package(url: "https://github.com/swiftlang/swift-syntax", from: "603.0.0"), ], targets: [ .target( From 023b2fe3d01617749e16163b6ba4806da391c8a2 Mon Sep 17 00:00:00 2001 From: Bradley Mackey Date: Thu, 18 Jun 2026 00:22:35 +0100 Subject: [PATCH 2/3] Fix iOS macro test linkage --- Vault/Package.swift | 5 ++--- .../TestHelpers/SwiftTesting/LeakTracking.swift | 12 ------------ .../FoundationExtensionsTests/LeakTrackedMacro.swift | 5 +++++ Vault/Tests/VaultFeedTests/LeakTrackedMacro.swift | 5 +++++ 4 files changed, 12 insertions(+), 15 deletions(-) create mode 100644 Vault/Tests/FoundationExtensionsTests/LeakTrackedMacro.swift create mode 100644 Vault/Tests/VaultFeedTests/LeakTrackedMacro.swift diff --git a/Vault/Package.swift b/Vault/Package.swift index a185f30ef..c153036f8 100644 --- a/Vault/Package.swift +++ b/Vault/Package.swift @@ -114,7 +114,6 @@ let package = Package( name: "TestHelpers", dependencies: [ "FoundationExtensions", - "TestHelpersMacros", .product(name: "SnapshotTesting", package: "swift-snapshot-testing"), ], swiftSettings: swiftSettings, @@ -232,7 +231,7 @@ let package = Package( ), .testTarget( name: "VaultFeedTests", - dependencies: ["VaultFeed", "VaultCore", "FoundationExtensions", "TestHelpers"], + dependencies: ["VaultFeed", "VaultCore", "FoundationExtensions", "TestHelpers", "TestHelpersMacros"], swiftSettings: swiftSettings, plugins: testTargetPlugins, ), @@ -243,7 +242,7 @@ let package = Package( ), .testTarget( name: "FoundationExtensionsTests", - dependencies: ["FoundationExtensions", "TestHelpers"], + dependencies: ["FoundationExtensions", "TestHelpers", "TestHelpersMacros"], swiftSettings: swiftSettings, plugins: testTargetPlugins, ), diff --git a/Vault/Sources/TestHelpers/SwiftTesting/LeakTracking.swift b/Vault/Sources/TestHelpers/SwiftTesting/LeakTracking.swift index 6471d0213..98d65b27d 100644 --- a/Vault/Sources/TestHelpers/SwiftTesting/LeakTracking.swift +++ b/Vault/Sources/TestHelpers/SwiftTesting/LeakTracking.swift @@ -86,18 +86,6 @@ public func withLeakTracking( return result } -/// Wraps the function body in ``withLeakTracking(_:)``. Apply alongside `@Test`: -/// ```swift -/// @Test @LeakTracked -/// func myTest() throws { -/// let sut = makeSUT() -/// #expect(sut.foo) -/// } -/// ``` -/// The function must be `throws` (or `async throws`). -@attached(body) -public macro LeakTracked() = #externalMacro(module: "TestHelpersMacros", type: "LeakTrackedMacro") - /// Registers `instance` with the currently active ``LeakTracker``. When the enclosing /// ``withLeakTracking(_:)`` scope ends, an Issue is recorded if `instance` has not been /// deallocated. diff --git a/Vault/Tests/FoundationExtensionsTests/LeakTrackedMacro.swift b/Vault/Tests/FoundationExtensionsTests/LeakTrackedMacro.swift new file mode 100644 index 000000000..56643624a --- /dev/null +++ b/Vault/Tests/FoundationExtensionsTests/LeakTrackedMacro.swift @@ -0,0 +1,5 @@ +/// Wraps the function body in `withLeakTracking(_:)`. +/// +/// The function must be `throws` (or `async throws`). +@attached(body) +macro LeakTracked() = #externalMacro(module: "TestHelpersMacros", type: "LeakTrackedMacro") diff --git a/Vault/Tests/VaultFeedTests/LeakTrackedMacro.swift b/Vault/Tests/VaultFeedTests/LeakTrackedMacro.swift new file mode 100644 index 000000000..56643624a --- /dev/null +++ b/Vault/Tests/VaultFeedTests/LeakTrackedMacro.swift @@ -0,0 +1,5 @@ +/// Wraps the function body in `withLeakTracking(_:)`. +/// +/// The function must be `throws` (or `async throws`). +@attached(body) +macro LeakTracked() = #externalMacro(module: "TestHelpersMacros", type: "LeakTrackedMacro") From a50007268465527f4f94886e6968646b4451f9e7 Mon Sep 17 00:00:00 2001 From: Bradley Mackey Date: Thu, 18 Jun 2026 00:29:04 +0100 Subject: [PATCH 3/3] Guard macro plugin entry point import --- Vault/Sources/TestHelpersMacros/LeakTrackedMacro.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Vault/Sources/TestHelpersMacros/LeakTrackedMacro.swift b/Vault/Sources/TestHelpersMacros/LeakTrackedMacro.swift index 1252672c1..e707f8a2b 100644 --- a/Vault/Sources/TestHelpersMacros/LeakTrackedMacro.swift +++ b/Vault/Sources/TestHelpersMacros/LeakTrackedMacro.swift @@ -1,12 +1,15 @@ -import SwiftCompilerPlugin import SwiftDiagnostics import SwiftSyntax import SwiftSyntaxMacros +#if canImport(SwiftCompilerPlugin) +import SwiftCompilerPlugin + @main struct TestHelpersMacrosPlugin: CompilerPlugin { let providingMacros: [any Macro.Type] = [LeakTrackedMacro.self] } +#endif /// Body macro that wraps the function body in a `withLeakTracking { ... }` scope. Apply alongside /// `@Test` so that any object registered via `trackForMemoryLeaks(_:)` inside the body is verified