Skip to content

Commit 2bbaef0

Browse files
committed
[swift][client] make QueryStringEncodable return any Sendable
1 parent dfbe985 commit 2bbaef0

30 files changed

Lines changed: 352 additions & 422 deletions

File tree

modules/openapi-generator/src/main/resources/swift6/Extensions.mustache

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,78 +11,73 @@ import FoundationNetworking
1111
@preconcurrency import PromiseKit{{/usePromiseKit}}{{#useVapor}}
1212
import Vapor{{/useVapor}}{{^useVapor}}
1313

14-
extension QueryStringEncodable {
15-
@_disfavoredOverload
16-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
17-
}
18-
1914
extension Bool: QueryStringEncodable {
20-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
15+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
2116
}
2217

2318
extension Float: QueryStringEncodable {
24-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
19+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
2520
}
2621

2722
extension Int: QueryStringEncodable {
28-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
23+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
2924
}
3025

3126
extension Int32: QueryStringEncodable {
32-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
27+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
3328
}
3429

3530
extension Int64: QueryStringEncodable {
36-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
31+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
3732
}
3833

3934
extension Double: QueryStringEncodable {
40-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
35+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
4136
}
4237

4338
extension Decimal: QueryStringEncodable {
44-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
39+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
4540
}
4641

4742
extension String: QueryStringEncodable {
48-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
43+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
4944
}
5045

5146
extension URL: QueryStringEncodable {
52-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
47+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
5348
}
5449

5550
extension UUID: QueryStringEncodable {
56-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
51+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
5752
}
5853

59-
extension RawRepresentable where RawValue: QueryStringEncodable {
60-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: rawValue) }
54+
extension RawRepresentable where RawValue: QueryStringEncodable, RawValue: Sendable {
55+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { return self.rawValue }
6156
}
6257

63-
private func encodeIfPossible<T>(_ object: T, codableHelper: CodableHelper) -> String {
58+
private func encodeIfPossible<T: Sendable>(_ object: T, codableHelper: CodableHelper) -> any Sendable {
6459
if let encodableObject = object as? QueryStringEncodable {
6560
return encodableObject.encodeToQueryString(codableHelper: codableHelper)
6661
} else {
67-
return String(describing: object)
62+
return object
6863
}
6964
}
7065

71-
extension Array {
72-
func encodeToQueryString(codableHelper: CodableHelper) -> [String] {
66+
extension Array where Element: Sendable {
67+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable {
7368
return self.map { encodeIfPossible($0, codableHelper: codableHelper) }
7469
}
7570
}
7671

77-
extension Set {
78-
func encodeToQueryString(codableHelper: CodableHelper) -> [String] {
72+
extension Set where Element: Sendable {
73+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable {
7974
return Array(self).encodeToQueryString(codableHelper: codableHelper)
8075
}
8176
}
8277

83-
extension Dictionary {
84-
func encodeToQueryString(codableHelper: CodableHelper) -> [Key: String] {
85-
var dictionary = [Key: String]()
78+
extension Dictionary where Key: Sendable, Value: Sendable {
79+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable {
80+
var dictionary = [Key: any Sendable]()
8681
for (key, value) in self {
8782
dictionary[key] = encodeIfPossible(value, codableHelper: codableHelper)
8883
}
@@ -91,19 +86,19 @@ extension Dictionary {
9186
}
9287

9388
extension Data: QueryStringEncodable {
94-
func encodeToQueryString(codableHelper: CodableHelper) -> String {
89+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable {
9590
return self.base64EncodedString(options: Data.Base64EncodingOptions())
9691
}
9792
}
9893

9994
extension Date: QueryStringEncodable {
100-
func encodeToQueryString(codableHelper: CodableHelper) -> String {
95+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable {
10196
return codableHelper.dateFormatter.string(from: self)
10297
}
10398
}
10499

105100
extension QueryStringEncodable where Self: Encodable {
106-
func encodeToQueryString(codableHelper: CodableHelper) -> String {
101+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable {
107102
guard let data = try? codableHelper.jsonEncoder.encode(self) else {
108103
fatalError("Could not encode to json: \(self)")
109104
}

modules/openapi-generator/src/main/resources/swift6/Models.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import FoundationNetworking
1111
import Alamofire{{/useAlamofire}}
1212

1313
protocol QueryStringEncodable {
14-
func encodeToQueryString(codableHelper: CodableHelper) -> String
14+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable
1515
}
1616

1717
/// An enum where the last case value can be used as a default catch-all.

modules/openapi-generator/src/main/resources/swift6/OpenAPIDateWithoutTime.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ import Foundation
7777
}
7878

7979
extension OpenAPIDateWithoutTime: QueryStringEncodable {
80-
func encodeToQueryString(codableHelper: CodableHelper) -> String {
80+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable {
8181
return OpenISO8601DateFormatter.withoutTime.string(from: self.normalizedWrappedDate())
8282
}
8383
}

samples/client/petstore/swift6/alamofireLibrary/Sources/PetstoreClient/Infrastructure/Extensions.swift

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,78 +9,73 @@ import Foundation
99
import FoundationNetworking
1010
#endif
1111

12-
extension QueryStringEncodable {
13-
@_disfavoredOverload
14-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
15-
}
16-
1712
extension Bool: QueryStringEncodable {
18-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
13+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
1914
}
2015

2116
extension Float: QueryStringEncodable {
22-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
17+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
2318
}
2419

2520
extension Int: QueryStringEncodable {
26-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
21+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
2722
}
2823

2924
extension Int32: QueryStringEncodable {
30-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
25+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
3126
}
3227

3328
extension Int64: QueryStringEncodable {
34-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
29+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
3530
}
3631

3732
extension Double: QueryStringEncodable {
38-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
33+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
3934
}
4035

4136
extension Decimal: QueryStringEncodable {
42-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
37+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
4338
}
4439

4540
extension String: QueryStringEncodable {
46-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
41+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
4742
}
4843

4944
extension URL: QueryStringEncodable {
50-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
45+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
5146
}
5247

5348
extension UUID: QueryStringEncodable {
54-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
49+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { self }
5550
}
5651

57-
extension RawRepresentable where RawValue: QueryStringEncodable {
58-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: rawValue) }
52+
extension RawRepresentable where RawValue: QueryStringEncodable, RawValue: Sendable {
53+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable { return self.rawValue }
5954
}
6055

61-
private func encodeIfPossible<T>(_ object: T, codableHelper: CodableHelper) -> String {
56+
private func encodeIfPossible<T: Sendable>(_ object: T, codableHelper: CodableHelper) -> any Sendable {
6257
if let encodableObject = object as? QueryStringEncodable {
6358
return encodableObject.encodeToQueryString(codableHelper: codableHelper)
6459
} else {
65-
return String(describing: object)
60+
return object
6661
}
6762
}
6863

69-
extension Array {
70-
func encodeToQueryString(codableHelper: CodableHelper) -> [String] {
64+
extension Array where Element: Sendable {
65+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable {
7166
return self.map { encodeIfPossible($0, codableHelper: codableHelper) }
7267
}
7368
}
7469

75-
extension Set {
76-
func encodeToQueryString(codableHelper: CodableHelper) -> [String] {
70+
extension Set where Element: Sendable {
71+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable {
7772
return Array(self).encodeToQueryString(codableHelper: codableHelper)
7873
}
7974
}
8075

81-
extension Dictionary {
82-
func encodeToQueryString(codableHelper: CodableHelper) -> [Key: String] {
83-
var dictionary = [Key: String]()
76+
extension Dictionary where Key: Sendable, Value: Sendable {
77+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable {
78+
var dictionary = [Key: any Sendable]()
8479
for (key, value) in self {
8580
dictionary[key] = encodeIfPossible(value, codableHelper: codableHelper)
8681
}
@@ -89,19 +84,19 @@ extension Dictionary {
8984
}
9085

9186
extension Data: QueryStringEncodable {
92-
func encodeToQueryString(codableHelper: CodableHelper) -> String {
87+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable {
9388
return self.base64EncodedString(options: Data.Base64EncodingOptions())
9489
}
9590
}
9691

9792
extension Date: QueryStringEncodable {
98-
func encodeToQueryString(codableHelper: CodableHelper) -> String {
93+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable {
9994
return codableHelper.dateFormatter.string(from: self)
10095
}
10196
}
10297

10398
extension QueryStringEncodable where Self: Encodable {
104-
func encodeToQueryString(codableHelper: CodableHelper) -> String {
99+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable {
105100
guard let data = try? codableHelper.jsonEncoder.encode(self) else {
106101
fatalError("Could not encode to json: \(self)")
107102
}

samples/client/petstore/swift6/alamofireLibrary/Sources/PetstoreClient/Infrastructure/Models.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import FoundationNetworking
1111
import Alamofire
1212

1313
protocol QueryStringEncodable {
14-
func encodeToQueryString(codableHelper: CodableHelper) -> String
14+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable
1515
}
1616

1717
/// An enum where the last case value can be used as a default catch-all.

samples/client/petstore/swift6/alamofireLibrary/Sources/PetstoreClient/Infrastructure/OpenAPIDateWithoutTime.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public struct OpenAPIDateWithoutTime: Sendable, Codable, Hashable, Equatable {
7777
}
7878

7979
extension OpenAPIDateWithoutTime: QueryStringEncodable {
80-
func encodeToQueryString(codableHelper: CodableHelper) -> String {
80+
func encodeToQueryString(codableHelper: CodableHelper) -> any Sendable {
8181
return OpenISO8601DateFormatter.withoutTime.string(from: self.normalizedWrappedDate())
8282
}
8383
}

0 commit comments

Comments
 (0)