From d756726393f0cc56dc70550622aa6ebb45cbb0ad Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 28 May 2026 16:55:10 -0500 Subject: [PATCH] Modernize package. --- Package.swift | 17 +++++++++++++++++ Sources/CasePaths/Internal/TypeName.swift | 2 ++ Sources/CasePathsMacros/CasePathableMacro.swift | 6 +++--- Sources/CasePathsMacros/Plugin.swift | 2 +- Tests/CasePathsTests/CasePathsTests.swift | 16 ++++++++-------- Tests/CasePathsTests/CaseSetTests.swift | 2 +- 6 files changed, 32 insertions(+), 13 deletions(-) diff --git a/Package.swift b/Package.swift index 47ac84aa..ab774f25 100644 --- a/Package.swift +++ b/Package.swift @@ -69,3 +69,20 @@ if ProcessInfo.processInfo.environment["OMIT_MACRO_TESTS"] == nil { ) ) } + +for target in package.targets { + target.swiftSettings = target.swiftSettings ?? [] + target.swiftSettings?.append(contentsOf: [ + .enableUpcomingFeature("ExistentialAny"), + .enableUpcomingFeature("ImmutableWeakCaptures"), + .enableUpcomingFeature("InferIsolatedConformances"), + .enableUpcomingFeature("InternalImportsByDefault"), + .enableUpcomingFeature("MemberImportVisibility"), + .enableUpcomingFeature("NonisolatedNonsendingByDefault"), + ]) + #if compiler(>=6.4) + target.swiftSettings?.append(contentsOf: [ + .treatAllWarnings(as: .error) + ]) + #endif +} diff --git a/Sources/CasePaths/Internal/TypeName.swift b/Sources/CasePaths/Internal/TypeName.swift index b6db2c88..4db10add 100644 --- a/Sources/CasePaths/Internal/TypeName.swift +++ b/Sources/CasePaths/Internal/TypeName.swift @@ -1,3 +1,5 @@ +import Foundation + // NB: This is adapted from Custom Dump and should ideally be kept in sync. package func typeName(_ type: Any.Type) -> String { var name = _typeName(type, qualified: true) diff --git a/Sources/CasePathsMacros/CasePathableMacro.swift b/Sources/CasePathsMacros/CasePathableMacro.swift index ce2d305e..bb8dbfbe 100644 --- a/Sources/CasePathsMacros/CasePathableMacro.swift +++ b/Sources/CasePathsMacros/CasePathableMacro.swift @@ -1,7 +1,7 @@ import SwiftDiagnostics -import SwiftSyntax +public import SwiftSyntax import SwiftSyntaxBuilder -import SwiftSyntaxMacros +public import SwiftSyntaxMacros public struct CasePathableMacro { static let moduleName = "CasePaths" @@ -247,7 +247,7 @@ extension CasePathableMacro: MemberMacro { } enum CasePathableMacroDiagnostic { - case notAnEnum(DeclGroupSyntax) + case notAnEnum(any DeclGroupSyntax) case overloadedCaseName(String) } diff --git a/Sources/CasePathsMacros/Plugin.swift b/Sources/CasePathsMacros/Plugin.swift index 9e766377..69c22266 100644 --- a/Sources/CasePathsMacros/Plugin.swift +++ b/Sources/CasePathsMacros/Plugin.swift @@ -3,7 +3,7 @@ import SwiftSyntaxMacros @main struct CasePathsPlugin: CompilerPlugin { - let providingMacros: [Macro.Type] = [ + let providingMacros: [any Macro.Type] = [ CasePathableMacro.self ] } diff --git a/Tests/CasePathsTests/CasePathsTests.swift b/Tests/CasePathsTests/CasePathsTests.swift index 558e7f88..fd80253d 100644 --- a/Tests/CasePathsTests/CasePathsTests.swift +++ b/Tests/CasePathsTests/CasePathsTests.swift @@ -32,16 +32,16 @@ final class CasePathsTests: XCTestCase { func testResult() { struct SomeError: Error, Equatable {} - XCTAssertEqual(Result.success(42)[case: \.success], 42) - XCTAssertNil(Result.failure(SomeError())[case: \.success]) - XCTAssertNil(Result.success(42)[case: \.failure]) - XCTAssertNotNil(Result.failure(SomeError())[case: \.failure]) + XCTAssertEqual(Result.success(42)[case: \.success], 42) + XCTAssertNil(Result.failure(SomeError())[case: \.success]) + XCTAssertNil(Result.success(42)[case: \.failure]) + XCTAssertNotNil(Result.failure(SomeError())[case: \.failure]) XCTAssertEqual((\Result.Cases.success)(42), .success(42)) XCTAssertEqual((\Result.Cases.failure)(SomeError()), .failure(SomeError())) - XCTAssertEqual(Result.allCasePaths[Result.success(42)], \.success) - XCTAssertNotEqual(Result.allCasePaths[Result.success(42)], \.failure) - XCTAssertEqual(Result.allCasePaths[Result.failure(SomeError())], \.failure) - XCTAssertNotEqual(Result.allCasePaths[Result.failure(SomeError())], \.success) + XCTAssertEqual(Result.allCasePaths[Result.success(42)], \.success) + XCTAssertNotEqual(Result.allCasePaths[Result.success(42)], \.failure) + XCTAssertEqual(Result.allCasePaths[Result.failure(SomeError())], \.failure) + XCTAssertNotEqual(Result.allCasePaths[Result.failure(SomeError())], \.success) } func testSelfCaseKeyPathCallAsFunction() { diff --git a/Tests/CasePathsTests/CaseSetTests.swift b/Tests/CasePathsTests/CaseSetTests.swift index 4313e939..35c692f0 100644 --- a/Tests/CasePathsTests/CaseSetTests.swift +++ b/Tests/CasePathsTests/CaseSetTests.swift @@ -1,5 +1,5 @@ #if canImport(Testing) && swift(>=6) - import CasePaths + public import CasePaths import Testing @dynamicMemberLookup