Skip to content

[BUG][Go] Generator results in missing objects when defining inline anyOf, or oneOf #14801

@phegyi81

Description

@phegyi81

Bug Report Checklist

  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator (example)?
  • Have you tested with the latest master to confirm the issue still exists?
  • Have you searched for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description

If an inline oneOf or anyOf definition is used below an allOf or oneOf, the generated code will contain the name of the inline defined structure, but the structure itself will not be generated.

If the schema is rearranged to avoid using the inline definition, the missing part is also generated.
One possible way to do this is to define the inline oneOf or anyOf at the top level and reference it from below allOf or oneOf.

openapi-generator version

6.4.0

OpenAPI declaration file content or url
oneOf below allOf

Inline version
Referenced version

anyOf below oneOf

Inline version
Referenced version

Generation Details

Nothing special is needed beyond the steps specified in the next section. That is, download the 4 samples and compile them with the linked generator. Two of the samples are the wrongly compilable inline version, while two of them are the properly compilable referenced version.

Steps to reproduce
  • Download the gists linked above
  • Download the generator script also
  • Run the script generate.sh
  • Recognise that
    • AnyOfstringstring is missing from go-anyOf-below-oneOf-inline directory, while it is referenced in model_b.go
    • OneOfDE and NullableOneOfDE are missing from go-oneOf-below-allOf-inline directory, while it is referenced in model_a_all_of_attributes.go
    • The generated openapi.yaml files are not the same by byte, but they cover practically the same structure
Related issues/PRs

#11842
#6161

Suggest a fix

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions