Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More accurate tuple types #1139

Closed
jonaslagoni opened this issue Feb 21, 2023 · 5 comments
Closed

More accurate tuple types #1139

jonaslagoni opened this issue Feb 21, 2023 · 5 comments
Labels
enhancement New feature or request stale

Comments

@jonaslagoni
Copy link
Member

Reason/Context

Say we have this:

    "tags": {
      "type": "array",
      "items": [{type: string}, {type: boolean}],
      "additionalItems": true
    },

It would currently generate this:

private _tags?: (string | boolean | any)[];

But the more accurate type would be this:

private _tags?: [string, boolean, ...any[]];

I think we should be able to define tuple models with additionalItems, so that each output can decide the most accurate representation it can do. For example, in most languages, it would probably be just a generic array type, but in others where possible, they can be as precise as possible.

@janachinna
Copy link

Hey @jonaslagoni , Currently when i try to generate the List using KotlinFileGenerator it always generates with List. Does this enhancement fixes that issue?

@jonaslagoni
Copy link
Member Author

jonaslagoni commented Feb 24, 2023

What types are you expecting for tuples in Kotlin @janachinna?

@janachinna
Copy link

janachinna commented Feb 27, 2023

@jonaslagoni Instead of Any, it should use the type mentioned in the async spec file. Eventhough the items spec is referring to a schema object it always generates List<Any> Where as It should generate List<T> Where T is the type of object mentioned in the spec file.

        Foo:
          type: array
          items:
            $ref: '#/components/schemas/Bar'
         Bar:
          type: object
          properties:
             id:
               type: number
             name:
               type: string

This should generate List<Bar> inside Foo. But it generates List<Any> inside Foo.

@jonaslagoni
Copy link
Member Author

jonaslagoni commented Feb 27, 2023

@janachinna ahh, yea that's a bug that #1140 is fixing, it will be released as part of v2.

To work around this bug you could do this:

        Foo:
          type: array
          additionalItems: false
          items:
            $ref: '#/components/schemas/Bar'

@github-actions
Copy link
Contributor

This issue has been automatically marked as stale because it has not had recent activity 😴

It will be closed in 120 days if no further activity occurs. To unstale this issue, add a comment with a detailed explanation.

There can be many reasons why some specific issue has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under open governance model.

Let us figure out together how to push this issue forward. Connect with us through one of many communication channels we established here.

Thank you for your patience ❤️

@github-actions github-actions bot added the stale label Jun 29, 2023
@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Jan 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request stale
Projects
None yet
Development

No branches or pull requests

2 participants