[typescript-fetch] Fixed issue where unique arrays (sets) of primitive values aren't initialized properly #19521
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #19520
This PR aims to fix the above bug, by ensuring that set properties from API responses are correctly initialized as sets instead of being passed directly as arrays.
Explanation of the
modelGeneric.mustache
changeisPrimitiveType
appears to be true for arrays which contain primitives, not just for primitives themselves. Because of the template conditions, this means that arrays of primitives were being passed verbatim from the API response.This logic is fine for regular arrays, but for sets this causes a problem, as the values aren't being converted to a
Set
after being retrieved from the API. This leads to issues where the client thinks the property is aSet
, but it's actually an array. The outcome of this is that accessingSet
members such assize
won't work at runtime, but trying to accesslength
will cause a TypeScript compilation error.This PR aims to fix this problem by adjusting the logic in
modelGeneric.mustache
to correctly handle arrays of primitives which contain unique items.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
(upcoming 7.6.0 minor release - breaking changes with fallbacks),8.0.x
(breaking changes without fallbacks)