From 3a07fe2118b8da79195c355a8618f48f55ec67c6 Mon Sep 17 00:00:00 2001 From: Andrew Roan Date: Fri, 22 Mar 2024 12:44:55 -0500 Subject: [PATCH 1/3] Fix StrictConcurrency flag in manifest strict-concurrency-fix --- Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index c4e2f6c..0b8532f 100644 --- a/Package.swift +++ b/Package.swift @@ -51,6 +51,6 @@ extension [SwiftSetting] { .enableUpcomingFeature("ForwardTrailingClosures"), .enableUpcomingFeature("ImportObjcForwardDeclarations"), .enableUpcomingFeature("InternalImportsByDefault"), - .enableUpcomingFeature("StrictConcurrency"), + .enableExperimentalFeature("StrictConcurrency"), ] } From 10e763b8ce49b740363b0db10753e42861be3c99 Mon Sep 17 00:00:00 2001 From: Andrew Roan Date: Fri, 22 Mar 2024 12:47:07 -0500 Subject: [PATCH 2/3] Add Swift 6.0 specific manifest for StrictConcurrency flag strict-concurrency-fix --- Package@swift-6.0.swift | 56 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Package@swift-6.0.swift diff --git a/Package@swift-6.0.swift b/Package@swift-6.0.swift new file mode 100644 index 0000000..c4e2f6c --- /dev/null +++ b/Package@swift-6.0.swift @@ -0,0 +1,56 @@ +// swift-tools-version: 5.8 + +import PackageDescription + +let package = Package( + name: "swift-argument-encoding", + platforms: [.macOS(.v12)], + products: [ + .library(name: "ArgumentEncoding", targets: ["ArgumentEncoding"]), + ], + dependencies: [ + .dependencies, + ], + targets: [ + .target( + name: "ArgumentEncoding", + dependencies: [ + .dependencies, + ], + swiftSettings: .swiftSix + ), + .testTarget( + name: "ArgumentEncodingTests", + dependencies: [ + "ArgumentEncoding", + ], + swiftSettings: .swiftSix + ), + ] +) + +// MARK: PointFree + +extension Package.Dependency { + static let dependencies: Package.Dependency = .package( + url: "https://github.com/pointfreeco/swift-dependencies.git", + .upToNextMajor(from: "1.0.0") + ) +} + +extension Target.Dependency { + static let dependencies: Self = .product(name: "Dependencies", package: "swift-dependencies") +} + +extension [SwiftSetting] { + static let swiftSix: Self = [ + .enableUpcomingFeature("BareSlashRegexLiterals"), + .enableUpcomingFeature("ConciseMagicFile"), + .enableUpcomingFeature("DeprecateApplicationMain"), + .enableUpcomingFeature("DisableOutwardActorInference"), + .enableUpcomingFeature("ForwardTrailingClosures"), + .enableUpcomingFeature("ImportObjcForwardDeclarations"), + .enableUpcomingFeature("InternalImportsByDefault"), + .enableUpcomingFeature("StrictConcurrency"), + ] +} From 5d9085e82c478c0eb6f32d3c6f2d72169a3bce9f Mon Sep 17 00:00:00 2001 From: Andrew Roan Date: Thu, 13 Jun 2024 10:35:59 -0500 Subject: [PATCH 3/3] Fixes for Xcode 16/Swift 6 strict-concurrency-fix --- Package.swift | 25 ++++++------ Package@swift-6.0.swift | 39 +++++++------------ .../ArgumentGroupTests.swift | 30 ++++++++++---- 3 files changed, 47 insertions(+), 47 deletions(-) diff --git a/Package.swift b/Package.swift index 0b8532f..0cd452c 100644 --- a/Package.swift +++ b/Package.swift @@ -9,13 +9,13 @@ let package = Package( .library(name: "ArgumentEncoding", targets: ["ArgumentEncoding"]), ], dependencies: [ - .dependencies, + .dependencies(), ], targets: [ .target( name: "ArgumentEncoding", dependencies: [ - .dependencies, + .dependencies(), ], swiftSettings: .swiftSix ), @@ -32,25 +32,22 @@ let package = Package( // MARK: PointFree extension Package.Dependency { - static let dependencies: Package.Dependency = .package( - url: "https://github.com/pointfreeco/swift-dependencies.git", - .upToNextMajor(from: "1.0.0") - ) + static func dependencies() -> Package.Dependency { + .package( + url: "https://github.com/pointfreeco/swift-dependencies.git", + .upToNextMajor(from: "1.0.0") + ) + } } extension Target.Dependency { - static let dependencies: Self = .product(name: "Dependencies", package: "swift-dependencies") + static func dependencies() -> Self { + .product(name: "Dependencies", package: "swift-dependencies") + } } extension [SwiftSetting] { static let swiftSix: Self = [ - .enableUpcomingFeature("BareSlashRegexLiterals"), - .enableUpcomingFeature("ConciseMagicFile"), - .enableUpcomingFeature("DeprecateApplicationMain"), - .enableUpcomingFeature("DisableOutwardActorInference"), - .enableUpcomingFeature("ForwardTrailingClosures"), - .enableUpcomingFeature("ImportObjcForwardDeclarations"), - .enableUpcomingFeature("InternalImportsByDefault"), .enableExperimentalFeature("StrictConcurrency"), ] } diff --git a/Package@swift-6.0.swift b/Package@swift-6.0.swift index c4e2f6c..1d0b660 100644 --- a/Package@swift-6.0.swift +++ b/Package@swift-6.0.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 5.8 +// swift-tools-version: 6.0 import PackageDescription @@ -9,22 +9,20 @@ let package = Package( .library(name: "ArgumentEncoding", targets: ["ArgumentEncoding"]), ], dependencies: [ - .dependencies, + .dependencies(), ], targets: [ .target( name: "ArgumentEncoding", dependencies: [ - .dependencies, - ], - swiftSettings: .swiftSix + .dependencies(), + ] ), .testTarget( name: "ArgumentEncodingTests", dependencies: [ "ArgumentEncoding", - ], - swiftSettings: .swiftSix + ] ), ] ) @@ -32,25 +30,16 @@ let package = Package( // MARK: PointFree extension Package.Dependency { - static let dependencies: Package.Dependency = .package( - url: "https://github.com/pointfreeco/swift-dependencies.git", - .upToNextMajor(from: "1.0.0") - ) + static func dependencies() -> Package.Dependency { + .package( + url: "https://github.com/pointfreeco/swift-dependencies.git", + .upToNextMajor(from: "1.0.0") + ) + } } extension Target.Dependency { - static let dependencies: Self = .product(name: "Dependencies", package: "swift-dependencies") -} - -extension [SwiftSetting] { - static let swiftSix: Self = [ - .enableUpcomingFeature("BareSlashRegexLiterals"), - .enableUpcomingFeature("ConciseMagicFile"), - .enableUpcomingFeature("DeprecateApplicationMain"), - .enableUpcomingFeature("DisableOutwardActorInference"), - .enableUpcomingFeature("ForwardTrailingClosures"), - .enableUpcomingFeature("ImportObjcForwardDeclarations"), - .enableUpcomingFeature("InternalImportsByDefault"), - .enableUpcomingFeature("StrictConcurrency"), - ] + static func dependencies() -> Self { + .product(name: "Dependencies", package: "swift-dependencies") + } } diff --git a/Tests/ArgumentEncodingTests/ArgumentGroupTests.swift b/Tests/ArgumentEncodingTests/ArgumentGroupTests.swift index d086268..4d1b38f 100644 --- a/Tests/ArgumentEncodingTests/ArgumentGroupTests.swift +++ b/Tests/ArgumentEncodingTests/ArgumentGroupTests.swift @@ -250,14 +250,28 @@ final class ArgumentGroupTests: XCTestCase { } } -extension Array: ArgumentGroup, FormatterNode { - public var flagFormatter: ArgumentEncoding.FlagFormatter { FlagFormatter(prefix: .doubleDash) } +#if swift(>=6) + extension Array: @retroactive ArgumentGroup, @retroactive FormatterNode { + public var flagFormatter: ArgumentEncoding.FlagFormatter { FlagFormatter(prefix: .doubleDash) } - public var optionFormatter: ArgumentEncoding.OptionFormatter { OptionFormatter(prefix: .doubleDash) } -} + public var optionFormatter: ArgumentEncoding.OptionFormatter { OptionFormatter(prefix: .doubleDash) } + } -extension Dictionary: ArgumentGroup, FormatterNode { - public var flagFormatter: ArgumentEncoding.FlagFormatter { FlagFormatter(prefix: .doubleDash) } + extension Dictionary: @retroactive ArgumentGroup, @retroactive FormatterNode { + public var flagFormatter: ArgumentEncoding.FlagFormatter { FlagFormatter(prefix: .doubleDash) } - public var optionFormatter: ArgumentEncoding.OptionFormatter { OptionFormatter(prefix: .doubleDash) } -} + public var optionFormatter: ArgumentEncoding.OptionFormatter { OptionFormatter(prefix: .doubleDash) } + } +#else + extension Array: ArgumentGroup, FormatterNode { + public var flagFormatter: ArgumentEncoding.FlagFormatter { FlagFormatter(prefix: .doubleDash) } + + public var optionFormatter: ArgumentEncoding.OptionFormatter { OptionFormatter(prefix: .doubleDash) } + } + + extension Dictionary: ArgumentGroup, FormatterNode { + public var flagFormatter: ArgumentEncoding.FlagFormatter { FlagFormatter(prefix: .doubleDash) } + + public var optionFormatter: ArgumentEncoding.OptionFormatter { OptionFormatter(prefix: .doubleDash) } + } +#endif