From f6f84a12f37df779fad4f2a4f475b1074bfd6e9b Mon Sep 17 00:00:00 2001 From: MahdiBM Date: Mon, 27 Nov 2023 20:23:37 +0330 Subject: [PATCH 1/9] remove @preconcurrency from URL, Data and Date --- .../Translator/CommonTypes/Constants.swift | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift b/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift index e72337ee..e7f65ee9 100644 --- a/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift +++ b/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift @@ -28,8 +28,7 @@ enum Constants { ImportDescription(moduleName: "OpenAPIRuntime", spi: "Generated"), ImportDescription( moduleName: "Foundation", - moduleTypes: ["struct Foundation.URL", "struct Foundation.Data", "struct Foundation.Date"], - preconcurrency: .onOS(["Linux"]) + moduleTypes: ["struct Foundation.URL", "struct Foundation.Data", "struct Foundation.Date"] ), ] From 76f87552281f446b3bd270f91b1f314a072656b2 Mon Sep 17 00:00:00 2001 From: MahdiBM Date: Mon, 27 Nov 2023 20:29:47 +0330 Subject: [PATCH 2/9] more --- Sources/swift-openapi-generator/runGenerator.swift | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Sources/swift-openapi-generator/runGenerator.swift b/Sources/swift-openapi-generator/runGenerator.swift index 08b62d46..2e0e89d0 100644 --- a/Sources/swift-openapi-generator/runGenerator.swift +++ b/Sources/swift-openapi-generator/runGenerator.swift @@ -11,13 +11,8 @@ // SPDX-License-Identifier: Apache-2.0 // //===----------------------------------------------------------------------===// -#if os(Linux) -@preconcurrency import struct Foundation.URL -@preconcurrency import struct Foundation.Data -#else import struct Foundation.URL import struct Foundation.Data -#endif import class Foundation.FileManager import ArgumentParser import _OpenAPIGeneratorCore From 08acd348a1dd359bbd1f79a994e63d5bef64bc1b Mon Sep 17 00:00:00 2001 From: MahdiBM Date: Mon, 27 Nov 2023 20:50:29 +0330 Subject: [PATCH 3/9] some less preconcurrency s --- .../Layers/RenderedSwiftRepresentation.swift | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Sources/_OpenAPIGeneratorCore/Layers/RenderedSwiftRepresentation.swift b/Sources/_OpenAPIGeneratorCore/Layers/RenderedSwiftRepresentation.swift index 3a9c89e3..78afac4a 100644 --- a/Sources/_OpenAPIGeneratorCore/Layers/RenderedSwiftRepresentation.swift +++ b/Sources/_OpenAPIGeneratorCore/Layers/RenderedSwiftRepresentation.swift @@ -11,13 +11,8 @@ // SPDX-License-Identifier: Apache-2.0 // //===----------------------------------------------------------------------===// -#if os(Linux) -@preconcurrency import struct Foundation.URL -@preconcurrency import struct Foundation.Data -#else import struct Foundation.URL import struct Foundation.Data -#endif /// An in-memory file that contains the generated Swift code. typealias RenderedSwiftRepresentation = InMemoryOutputFile From c87129b468473b96fdb86bfbd368852a419a3863 Mon Sep 17 00:00:00 2001 From: MahdiBM Date: Mon, 27 Nov 2023 20:51:20 +0330 Subject: [PATCH 4/9] even modify proposal --- .../Documentation.docc/Proposals/SOAR-0007.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md b/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md index ff732fff..ff94f005 100644 --- a/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md +++ b/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md @@ -181,7 +181,7 @@ public enum Operations { This proposal covers generating the following additional API surface to simplify providing inputs. - + ```swift extension APIProtocol { // The parameters to each overload will match those of the corresponding @@ -202,7 +202,7 @@ extension APIProtocol { This proposal also covers generating the following additional API surface to simplify handling outputs. -```swift +```swift // Note: Generating an extension is not prescriptive; implementations may // generate these properties within the primary type definition. extension Operations.getGreeting.Output { @@ -321,15 +321,10 @@ Generated using the following command: // ----------- // Generated by swift-openapi-generator, do not modify. @_spi(Generated) import OpenAPIRuntime -#if os(Linux) -@preconcurrency import struct Foundation.URL -@preconcurrency import struct Foundation.Data -@preconcurrency import struct Foundation.Date -#else import struct Foundation.URL import struct Foundation.Data import struct Foundation.Date -#endif + /// A type that performs HTTP operations defined by the OpenAPI document. public protocol APIProtocol: Sendable { /// - Remark: HTTP `GET /greet`. From 473f4e25ad4c1fc90f86c60b48afcb2a280cfbca Mon Sep 17 00:00:00 2001 From: MahdiBM Date: Mon, 27 Nov 2023 20:56:06 +0330 Subject: [PATCH 5/9] URL is still not Sendable --- .../Layers/RenderedSwiftRepresentation.swift | 4 ++++ .../Translator/CommonTypes/Constants.swift | 7 ++++++- .../Documentation.docc/Proposals/SOAR-0007.md | 4 ++++ Sources/swift-openapi-generator/runGenerator.swift | 4 ++++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Sources/_OpenAPIGeneratorCore/Layers/RenderedSwiftRepresentation.swift b/Sources/_OpenAPIGeneratorCore/Layers/RenderedSwiftRepresentation.swift index 78afac4a..1f27e2cb 100644 --- a/Sources/_OpenAPIGeneratorCore/Layers/RenderedSwiftRepresentation.swift +++ b/Sources/_OpenAPIGeneratorCore/Layers/RenderedSwiftRepresentation.swift @@ -11,7 +11,11 @@ // SPDX-License-Identifier: Apache-2.0 // //===----------------------------------------------------------------------===// +#if os(Linux) +@preconcurrency import struct Foundation.URL +#else import struct Foundation.URL +#endif import struct Foundation.Data /// An in-memory file that contains the generated Swift code. diff --git a/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift b/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift index e7f65ee9..7a48eda1 100644 --- a/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift +++ b/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift @@ -28,7 +28,12 @@ enum Constants { ImportDescription(moduleName: "OpenAPIRuntime", spi: "Generated"), ImportDescription( moduleName: "Foundation", - moduleTypes: ["struct Foundation.URL", "struct Foundation.Data", "struct Foundation.Date"] + moduleTypes: ["struct Foundation.Data", "struct Foundation.Date"] + ), + ImportDescription( + moduleName: "Foundation", + moduleTypes: ["struct Foundation.URL"], + preconcurrency: .onOS(["Linux"]) ), ] diff --git a/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md b/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md index ff94f005..1171fb76 100644 --- a/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md +++ b/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md @@ -321,7 +321,11 @@ Generated using the following command: // ----------- // Generated by swift-openapi-generator, do not modify. @_spi(Generated) import OpenAPIRuntime +#if os(Linux) +@preconcurrency import struct Foundation.URL +#else import struct Foundation.URL +#endif import struct Foundation.Data import struct Foundation.Date diff --git a/Sources/swift-openapi-generator/runGenerator.swift b/Sources/swift-openapi-generator/runGenerator.swift index 2e0e89d0..57877c3d 100644 --- a/Sources/swift-openapi-generator/runGenerator.swift +++ b/Sources/swift-openapi-generator/runGenerator.swift @@ -11,7 +11,11 @@ // SPDX-License-Identifier: Apache-2.0 // //===----------------------------------------------------------------------===// +#if os(Linux) +@preconcurrency import struct Foundation.URL +#else import struct Foundation.URL +#endif import struct Foundation.Data import class Foundation.FileManager import ArgumentParser From 614a5351367e72d337bce9596b57037aac79c3dd Mon Sep 17 00:00:00 2001 From: MahdiBM Date: Wed, 29 Nov 2023 20:30:55 +0330 Subject: [PATCH 6/9] fix tests? --- .../Resources/ReferenceSources/Petstore/Client.swift | 6 ++---- .../Resources/ReferenceSources/Petstore/Server.swift | 6 ++---- .../Resources/ReferenceSources/Petstore/Types.swift | 6 ++---- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Client.swift b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Client.swift index ee9fc11c..f83fa9c3 100644 --- a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Client.swift +++ b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Client.swift @@ -1,13 +1,11 @@ // Generated by swift-openapi-generator, do not modify. @_spi(Generated) import OpenAPIRuntime +import struct Foundation.Data +import struct Foundation.Date #if os(Linux) @preconcurrency import struct Foundation.URL -@preconcurrency import struct Foundation.Data -@preconcurrency import struct Foundation.Date #else import struct Foundation.URL -import struct Foundation.Data -import struct Foundation.Date #endif import HTTPTypes /// Service for managing pet metadata. diff --git a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Server.swift b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Server.swift index 80d642b3..55660dfb 100644 --- a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Server.swift +++ b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Server.swift @@ -1,13 +1,11 @@ // Generated by swift-openapi-generator, do not modify. @_spi(Generated) import OpenAPIRuntime +import struct Foundation.Data +import struct Foundation.Date #if os(Linux) @preconcurrency import struct Foundation.URL -@preconcurrency import struct Foundation.Data -@preconcurrency import struct Foundation.Date #else import struct Foundation.URL -import struct Foundation.Data -import struct Foundation.Date #endif import HTTPTypes extension APIProtocol { diff --git a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Types.swift b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Types.swift index 66b5e4c9..2e96b816 100644 --- a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Types.swift +++ b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Types.swift @@ -1,13 +1,11 @@ // Generated by swift-openapi-generator, do not modify. @_spi(Generated) import OpenAPIRuntime +import struct Foundation.Data +import struct Foundation.Date #if os(Linux) @preconcurrency import struct Foundation.URL -@preconcurrency import struct Foundation.Data -@preconcurrency import struct Foundation.Date #else import struct Foundation.URL -import struct Foundation.Data -import struct Foundation.Date #endif /// A type that performs HTTP operations defined by the OpenAPI document. public protocol APIProtocol: Sendable { From 55ceaf4962b7957cec1afd34233b5187a289fe4c Mon Sep 17 00:00:00 2001 From: MahdiBM Date: Sat, 2 Dec 2023 18:07:29 +0330 Subject: [PATCH 7/9] another try --- .../Layers/RenderedSwiftRepresentation.swift | 6 +++--- .../StructuredSwiftRepresentation.swift | 13 ++++++++++-- .../Renderer/TextBasedRenderer.swift | 20 +++++++++++++++---- .../Translator/CommonTypes/Constants.swift | 2 +- .../Documentation.docc/Proposals/SOAR-0007.md | 6 +++--- .../runGenerator.swift | 6 +++--- .../Renderer/Test_TextBasedRenderer.swift | 8 ++++---- .../ReferenceSources/Petstore/Client.swift | 6 +++--- .../ReferenceSources/Petstore/Server.swift | 6 +++--- .../ReferenceSources/Petstore/Types.swift | 6 +++--- 10 files changed, 50 insertions(+), 29 deletions(-) diff --git a/Sources/_OpenAPIGeneratorCore/Layers/RenderedSwiftRepresentation.swift b/Sources/_OpenAPIGeneratorCore/Layers/RenderedSwiftRepresentation.swift index 1f27e2cb..90ea4b72 100644 --- a/Sources/_OpenAPIGeneratorCore/Layers/RenderedSwiftRepresentation.swift +++ b/Sources/_OpenAPIGeneratorCore/Layers/RenderedSwiftRepresentation.swift @@ -11,10 +11,10 @@ // SPDX-License-Identifier: Apache-2.0 // //===----------------------------------------------------------------------===// -#if os(Linux) -@preconcurrency import struct Foundation.URL -#else +#if canImport(Darwin) import struct Foundation.URL +#else +@preconcurrency import struct Foundation.URL #endif import struct Foundation.Data diff --git a/Sources/_OpenAPIGeneratorCore/Layers/StructuredSwiftRepresentation.swift b/Sources/_OpenAPIGeneratorCore/Layers/StructuredSwiftRepresentation.swift index 4cf1dab0..6ebe0570 100644 --- a/Sources/_OpenAPIGeneratorCore/Layers/StructuredSwiftRepresentation.swift +++ b/Sources/_OpenAPIGeneratorCore/Layers/StructuredSwiftRepresentation.swift @@ -38,12 +38,21 @@ struct ImportDescription: Equatable, Codable { /// Describes any requirement for the `@preconcurrency` attribute. enum PreconcurrencyRequirement: Equatable, Codable { + + /// Platform requirement. + enum Requirement: Equatable, Codable { + /// Can import a certain library. + case canImport(String) + /// Swift version greater than or equal to. + case minimumSwift(String) + } + /// The attribute is always required. case always /// The attribute is not required. case never - /// The attribute is required only on the named operating systems. - case onOS([String]) + /// The attribute is required only if not this requirements are met. + case ifNot([Requirement]) } } diff --git a/Sources/_OpenAPIGeneratorCore/Renderer/TextBasedRenderer.swift b/Sources/_OpenAPIGeneratorCore/Renderer/TextBasedRenderer.swift index e0f00e99..008682ed 100644 --- a/Sources/_OpenAPIGeneratorCore/Renderer/TextBasedRenderer.swift +++ b/Sources/_OpenAPIGeneratorCore/Renderer/TextBasedRenderer.swift @@ -162,11 +162,12 @@ struct TextBasedRenderer: RendererProtocol { switch description.preconcurrency { case .always: render(preconcurrency: true) case .never: render(preconcurrency: false) - case .onOS(let operatingSystems): - writer.writeLine("#if \(operatingSystems.map { "os(\($0))" }.joined(separator: " || "))") - render(preconcurrency: true) - writer.writeLine("#else") + case .ifNot(let requirements): + precondition(!requirements.isEmpty) + writer.writeLine("#if \(requirements.map { $0.render() }.joined(separator: " || "))") render(preconcurrency: false) + writer.writeLine("#else") + render(preconcurrency: true) writer.writeLine("#endif") } } @@ -899,3 +900,14 @@ extension TextBasedRenderer { return renderer.renderedContents() } } + +private extension ImportDescription.PreconcurrencyRequirement.Requirement { + func render() -> String { + switch self { + case let .canImport(name): + return "canImport(\(name))" + case let .minimumSwift(version): + return "swift(>=\(version))" + } + } +} diff --git a/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift b/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift index 7a48eda1..f19af1a4 100644 --- a/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift +++ b/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift @@ -33,7 +33,7 @@ enum Constants { ImportDescription( moduleName: "Foundation", moduleTypes: ["struct Foundation.URL"], - preconcurrency: .onOS(["Linux"]) + preconcurrency: .ifNot([.canImport("Darwin")]) ), ] diff --git a/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md b/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md index 1171fb76..83573362 100644 --- a/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md +++ b/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md @@ -321,10 +321,10 @@ Generated using the following command: // ----------- // Generated by swift-openapi-generator, do not modify. @_spi(Generated) import OpenAPIRuntime -#if os(Linux) -@preconcurrency import struct Foundation.URL -#else +#if os(Darwin) import struct Foundation.URL +#else +@preconcurrency import struct Foundation.URL #endif import struct Foundation.Data import struct Foundation.Date diff --git a/Sources/swift-openapi-generator/runGenerator.swift b/Sources/swift-openapi-generator/runGenerator.swift index 57877c3d..6f6eac9a 100644 --- a/Sources/swift-openapi-generator/runGenerator.swift +++ b/Sources/swift-openapi-generator/runGenerator.swift @@ -11,10 +11,10 @@ // SPDX-License-Identifier: Apache-2.0 // //===----------------------------------------------------------------------===// -#if os(Linux) -@preconcurrency import struct Foundation.URL -#else +#if canImport(Darwin) import struct Foundation.URL +#else +@preconcurrency import struct Foundation.URL #endif import struct Foundation.Data import class Foundation.FileManager diff --git a/Tests/OpenAPIGeneratorCoreTests/Renderer/Test_TextBasedRenderer.swift b/Tests/OpenAPIGeneratorCoreTests/Renderer/Test_TextBasedRenderer.swift index 79d23804..4c7aec12 100644 --- a/Tests/OpenAPIGeneratorCoreTests/Renderer/Test_TextBasedRenderer.swift +++ b/Tests/OpenAPIGeneratorCoreTests/Renderer/Test_TextBasedRenderer.swift @@ -93,13 +93,13 @@ final class Test_TextBasedRenderer: XCTestCase { """# ) try _test( - [ImportDescription(moduleName: "Foo", preconcurrency: .onOS(["Bar", "Baz"]))], + [ImportDescription(moduleName: "Foo", preconcurrency: .ifNot([.canImport("Darwin"), .minimumSwift("5.9.1")]))], renderedBy: TextBasedRenderer.renderImports, rendersAs: #""" - #if os(Bar) || os(Baz) - @preconcurrency import Foo - #else + #if canImport(Darwin) || swift(>=5.9.1) import Foo + #else + @preconcurrency import Foo #endif """# ) diff --git a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Client.swift b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Client.swift index f83fa9c3..d5610b9c 100644 --- a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Client.swift +++ b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Client.swift @@ -2,10 +2,10 @@ @_spi(Generated) import OpenAPIRuntime import struct Foundation.Data import struct Foundation.Date -#if os(Linux) -@preconcurrency import struct Foundation.URL -#else +#if canImport(Darwin) import struct Foundation.URL +#else +@preconcurrency import struct Foundation.URL #endif import HTTPTypes /// Service for managing pet metadata. diff --git a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Server.swift b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Server.swift index 55660dfb..77918fd5 100644 --- a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Server.swift +++ b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Server.swift @@ -2,10 +2,10 @@ @_spi(Generated) import OpenAPIRuntime import struct Foundation.Data import struct Foundation.Date -#if os(Linux) -@preconcurrency import struct Foundation.URL -#else +#if canImport(Darwin) import struct Foundation.URL +#else +@preconcurrency import struct Foundation.URL #endif import HTTPTypes extension APIProtocol { diff --git a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Types.swift b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Types.swift index 2e96b816..986a52a1 100644 --- a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Types.swift +++ b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Types.swift @@ -2,10 +2,10 @@ @_spi(Generated) import OpenAPIRuntime import struct Foundation.Data import struct Foundation.Date -#if os(Linux) -@preconcurrency import struct Foundation.URL -#else +#if canImport(Darwin) import struct Foundation.URL +#else +@preconcurrency import struct Foundation.URL #endif /// A type that performs HTTP operations defined by the OpenAPI document. public protocol APIProtocol: Sendable { From 56502a404933fdb2160a445089a2f6f348e25eae Mon Sep 17 00:00:00 2001 From: MahdiBM Date: Sat, 2 Dec 2023 19:55:21 +0330 Subject: [PATCH 8/9] fix some imports --- .../Translator/CommonTypes/Constants.swift | 7 ++++++- .../Documentation.docc/Proposals/SOAR-0007.md | 8 ++++++-- .../Resources/ReferenceSources/Petstore/Client.swift | 4 ++++ .../Resources/ReferenceSources/Petstore/Server.swift | 4 ++++ .../Resources/ReferenceSources/Petstore/Types.swift | 4 ++++ 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift b/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift index f19af1a4..e16dfaa5 100644 --- a/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift +++ b/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift @@ -28,7 +28,12 @@ enum Constants { ImportDescription(moduleName: "OpenAPIRuntime", spi: "Generated"), ImportDescription( moduleName: "Foundation", - moduleTypes: ["struct Foundation.Data", "struct Foundation.Date"] + moduleTypes: ["struct Foundation.Data"] + ), + ImportDescription( + moduleName: "Foundation", + moduleTypes: ["struct Foundation.Date"], + preconcurrency: .ifNot([.canImport("Darwin"), .minimumSwift("5.9.1")]) ), ImportDescription( moduleName: "Foundation", diff --git a/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md b/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md index 83573362..05b30a10 100644 --- a/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md +++ b/Sources/swift-openapi-generator/Documentation.docc/Proposals/SOAR-0007.md @@ -321,13 +321,17 @@ Generated using the following command: // ----------- // Generated by swift-openapi-generator, do not modify. @_spi(Generated) import OpenAPIRuntime +import struct Foundation.Data +#if os(Darwin) || swift(>=5.9.1) +import struct Foundation.Date +#else +@preconcurrency import struct Foundation.Date +#endif #if os(Darwin) import struct Foundation.URL #else @preconcurrency import struct Foundation.URL #endif -import struct Foundation.Data -import struct Foundation.Date /// A type that performs HTTP operations defined by the OpenAPI document. public protocol APIProtocol: Sendable { diff --git a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Client.swift b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Client.swift index d5610b9c..4c4b29c7 100644 --- a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Client.swift +++ b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Client.swift @@ -1,7 +1,11 @@ // Generated by swift-openapi-generator, do not modify. @_spi(Generated) import OpenAPIRuntime import struct Foundation.Data +#if canImport(Darwin) || swift(>=5.9.1) import struct Foundation.Date +#else +@preconcurrency import struct Foundation.Date +#endif #if canImport(Darwin) import struct Foundation.URL #else diff --git a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Server.swift b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Server.swift index 77918fd5..01a78170 100644 --- a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Server.swift +++ b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Server.swift @@ -1,7 +1,11 @@ // Generated by swift-openapi-generator, do not modify. @_spi(Generated) import OpenAPIRuntime import struct Foundation.Data +#if canImport(Darwin) || swift(>=5.9.1) import struct Foundation.Date +#else +@preconcurrency import struct Foundation.Date +#endif #if canImport(Darwin) import struct Foundation.URL #else diff --git a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Types.swift b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Types.swift index 986a52a1..fd8f37ec 100644 --- a/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Types.swift +++ b/Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Types.swift @@ -1,7 +1,11 @@ // Generated by swift-openapi-generator, do not modify. @_spi(Generated) import OpenAPIRuntime import struct Foundation.Data +#if canImport(Darwin) || swift(>=5.9.1) import struct Foundation.Date +#else +@preconcurrency import struct Foundation.Date +#endif #if canImport(Darwin) import struct Foundation.URL #else From b7cab5e8aecec6e625663f72e73340c61130a6cc Mon Sep 17 00:00:00 2001 From: MahdiBM Date: Sat, 2 Dec 2023 20:36:39 +0330 Subject: [PATCH 9/9] soundness --- .../_OpenAPIGeneratorCore/Renderer/TextBasedRenderer.swift | 6 ++---- .../Translator/CommonTypes/Constants.swift | 5 +---- .../Renderer/Test_TextBasedRenderer.swift | 7 ++++++- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Sources/_OpenAPIGeneratorCore/Renderer/TextBasedRenderer.swift b/Sources/_OpenAPIGeneratorCore/Renderer/TextBasedRenderer.swift index 008682ed..34c17185 100644 --- a/Sources/_OpenAPIGeneratorCore/Renderer/TextBasedRenderer.swift +++ b/Sources/_OpenAPIGeneratorCore/Renderer/TextBasedRenderer.swift @@ -904,10 +904,8 @@ extension TextBasedRenderer { private extension ImportDescription.PreconcurrencyRequirement.Requirement { func render() -> String { switch self { - case let .canImport(name): - return "canImport(\(name))" - case let .minimumSwift(version): - return "swift(>=\(version))" + case let .canImport(name): return "canImport(\(name))" + case let .minimumSwift(version): return "swift(>=\(version))" } } } diff --git a/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift b/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift index e16dfaa5..bcb6c960 100644 --- a/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift +++ b/Sources/_OpenAPIGeneratorCore/Translator/CommonTypes/Constants.swift @@ -26,10 +26,7 @@ enum Constants { /// The descriptions of modules imported by every generated file. static let imports: [ImportDescription] = [ ImportDescription(moduleName: "OpenAPIRuntime", spi: "Generated"), - ImportDescription( - moduleName: "Foundation", - moduleTypes: ["struct Foundation.Data"] - ), + ImportDescription(moduleName: "Foundation", moduleTypes: ["struct Foundation.Data"]), ImportDescription( moduleName: "Foundation", moduleTypes: ["struct Foundation.Date"], diff --git a/Tests/OpenAPIGeneratorCoreTests/Renderer/Test_TextBasedRenderer.swift b/Tests/OpenAPIGeneratorCoreTests/Renderer/Test_TextBasedRenderer.swift index 4c7aec12..fccaf98c 100644 --- a/Tests/OpenAPIGeneratorCoreTests/Renderer/Test_TextBasedRenderer.swift +++ b/Tests/OpenAPIGeneratorCoreTests/Renderer/Test_TextBasedRenderer.swift @@ -93,7 +93,12 @@ final class Test_TextBasedRenderer: XCTestCase { """# ) try _test( - [ImportDescription(moduleName: "Foo", preconcurrency: .ifNot([.canImport("Darwin"), .minimumSwift("5.9.1")]))], + [ + ImportDescription( + moduleName: "Foo", + preconcurrency: .ifNot([.canImport("Darwin"), .minimumSwift("5.9.1")]) + ) + ], renderedBy: TextBasedRenderer.renderImports, rendersAs: #""" #if canImport(Darwin) || swift(>=5.9.1)