Skip to content

Conversation

@diastremskii
Copy link
Contributor

@diastremskii diastremskii commented Nov 13, 2025

When using kotlinx.serialization and providing a spec that has an object with no other properties except for discriminator, an empty data class was generated, later causing compilation to fail. This was happening due to logic that removed discriminator field when kotlinx.serialization was used. The suggested this is to set hasVars to false to use the logic that changes data class to a "regular" class, when there are no vars.

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package || exit
    ./bin/generate-samples.sh ./bin/configs/*.yaml || exit
    ./bin/utils/export_docs_generators.sh || exit
    
    (For Windows users, please run the script in WSL)
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
    IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
  • File the PR against the correct branch: master (upcoming 7.x.0 minor release - breaking changes with fallbacks), 8.0.x (breaking changes without fallbacks)
  • If your PR solves a reported issue, reference it using GitHub's linking syntax (e.g., having "fixes #123" present in the PR description)
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

Fixes: #22349

/cc @karismann @Zomzog @andrewemery @4brunu @yutaka0m @stefankoppier @e5l as technical committee

public void polymorphicJacksonSerialization() throws IOException {
File output = Files.createTempDirectory("test").toFile();
// output.deleteOnExit();
output.deleteOnExit();
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Noticed that some other test wasn't deleting generated code after completion

@wing328
Copy link
Member

wing328 commented Nov 16, 2025

tested with the spec provided in this PR and the output compiles without issues

Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/8.14.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD SUCCESSFUL in 3s
4 actionable tasks: 4 executed

@wing328 wing328 added this to the 7.18.0 milestone Nov 16, 2025
@wing328 wing328 merged commit 039de98 into OpenAPITools:master Nov 16, 2025
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG][Kotlin] Empty (invalid) data class generated when using discriminator and kotlinx.serialization

2 participants