fix(generation): Don't require all Lists on input structures #21
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.
This was originally intended as a convenience feature around output types, because our XML parser will always supply a value for lists and maps, even if it's empty. But sometimes the same interface is used as both an Input and Output, and requiring all lists for Inputs is effectively a bug.
The fix is to disable our output structure upgrade logic on any interface that is also used as an input in the specific API being generated. So you just need to do a null check when reading lists off those specific outputs, something the official SDK makes you do all the time.
Fixes #16
When using an action filter it's less likely that this kill-switch will kick in, but with whole modules it's actually pretty common.
backwards compat
codegens v0.1 and v0.2 are retaining old behavior as otherwise this would introduce typecheck errors in existing user code.