[Swift][client] fix parameters encoding#20934
Conversation
|
@x-sheep if you could help to review this PR, since it's related to a previous one you opened, I would appreciate. Thanks 👍 |
|
My bad, I think this is what happens when the unit tests don't work 🙈 I'm not sure we need the Codable override for QueryStringEncodable at all, but otherwise the changes look good to me 👍 |
|
No problem, your PR was a big improvement, that made the Alamofire integration work again. |
|
@x-sheep I just noticed that Array, Set and Dictionary no longer conform to the protocol, I'm not sure if that's a problem or not. Maybe not because the method is still there? |
|
Could we return any Sendable instead of a String? |
|
While you could change it back to |
|
Thanks for the help. The thing that is making me uncomfortable is that the tests are flaky, sometimes they pass, sometimes they fail, and I'm not sure if everything it now fixed, because of the big changes that were made. |
#20906 introduced two issues related to the parameters encoding.
The first problem is the following.
The default overload is disfavored and this is correct, this overload should be the last option to execute, if no other overload is compatible.
openapi-generator/modules/openapi-generator/src/main/resources/swift6/Extensions.mustache
Lines 25 to 28 in 6e3b199
Those protocol conformance should execute the previous default implementation, but actually those are codable, so it will execute the overload of the codable.
openapi-generator/modules/openapi-generator/src/main/resources/swift6/Extensions.mustache
Lines 14 to 23 in 6e3b199
openapi-generator/modules/openapi-generator/src/main/resources/swift6/Extensions.mustache
Lines 76 to 83 in 6e3b199
To fix this, I created an implementation to the basic types.
The second problem is that the
Anyparameter should beany Sendableopenapi-generator/modules/openapi-generator/src/main/resources/swift6/APIHelper.mustache
Line 74 in 6e3b199
Otherwise it will always prefer this overload.
openapi-generator/modules/openapi-generator/src/main/resources/swift6/APIHelper.mustache
Line 103 in 6e3b199
PR checklist
Commit all changed files.
This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
These must match the expectations made by your contribution.
You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example
./bin/generate-samples.sh bin/configs/java*.IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
master(upcoming7.x.0minor release - breaking changes with fallbacks),8.0.x(breaking changes without fallbacks)@jgavris (2017/07) @ehyche (2017/08) @Edubits (2017/09) @jaz-ah (2017/09) @4brunu (2019/11) @dydus0x14 (2023/06)