Make arrays use concrete types, not aliases.#1246
Merged
jamietanna merged 1 commit intooapi-codegen:masterfrom Jan 25, 2024
jkj:unaliased-types-for-arrays
Merged
Make arrays use concrete types, not aliases.#1246jamietanna merged 1 commit intooapi-codegen:masterfrom jkj:unaliased-types-for-arrays
jamietanna merged 1 commit intooapi-codegen:masterfrom
jkj:unaliased-types-for-arrays
Conversation
Member
|
Thanks for raising this @jkj - this will be a breaking change, so we'd need to mark this behind an |
I have this same exact use case, too. my workaround is:
|
As noted in #1247, in some cases it can be useful to have arrays defined as a concrete type, not a type alias, so you are able to extend them with methods. This produces a new opt-in output-option, `disable-type-aliases-for-type`, which can be used to control this behaviour Right now, we only want to add support for `array`s, but the configuration is extensible in the future. This also introduces a test case to demonstrate the capabilities. We need to introduce a `sliceContains` method to simplify this lookup, as we don't yet have `slices.Contains` due to the Go versions we're targeting.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Currently when you create an array type using something like:
the generator produces a type alias for the array:
This causes problems, particularly for defining methods. This patch ensures that when arrays are generated, they use a concrete type and not a type alias. For example:
The following example indicates why aliases are bad:
This is especially problematic if you need to create methods for things like a JSON
Scan()method or an SQLValue()method for the type.