Skip to content

[BUG][kotlin-spring] Doesn't create valid model when inheritance is used ($allOf) #3587

@d0x

Description

@d0x
Description

When using inheritance, the generated code won't compile. It fails with this error:

'xxx' hides member of supertype 'YYY' and needs 'override' modifier

You can see it in this example:

data class Pet(
        @JsonProperty("name") val name: kotlin.String? = null,
        @JsonProperty("weight") val weight: java.math.BigDecimal? = null
                                 // ^^^^^^ 'weight' hides member of supertype 'Animal' and needs 'override' modifier
) : Animal {}
openapi-generator version

Generator Version 4.0.3
Spec Version 3.0.1

OpenAPI declaration file content or url
openapi: 3.0.1
info:
  title: example
  version: 1.0.0
paths:
  /test:
    get:
      responses:
        200:
          description: successful operation
components:
  schemas:
    Animal:
      type: object
      properties:
        weight:
          type: number
      discriminator:
        propertyName: animalType
      required:
        - animalType
    Pet:
      allOf:
        - $ref: "#/components/schemas/Animal"
        - type: object
          properties:
            name:
              type: string
Command line used for generation
openapi-generator generate -i myspec.yml -g kotlin-spring \
        -Dmodels \
        -Dapis \
        --additional-properties=interfaceOnly=true \
        --additional-properties=gradleBuildFile=false \
        --additional-properties=exceptionHandler=false \
        --additional-properties=sourceFolder=src/gen/kotlin
Steps to reproduce

Generate the spec above and check the Pet class.

Related issues/PRs

There is a similar issue which was fixed in 4.0.0.beta and openapi version 2.
But it seems like openapi version 3 breaks it.

#1205

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