OpenAPITools / OpenAPITools/openapi-generator
[BUG] [Dart] Enums with numeric constant values will generate syntatically incorrect Dart code
Open
Nobody has claimed this yet.
Issue: Bug
- Dominant language
- Java
- Stars
- 26.8k
- Forks
- 7.7k
- PR merge metrics
- PR metrics pending
Description
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
Numeric enums, such as:
DeviceStatus:
required:
- Online
type: object
properties:
Online:
type: integer
description: |
0 Unknown 1 Online 2 Offline
default: 0
enum:
- 0
- 1
- 2
will generate uncompilable dart files:
/// Returns a new [DeviceStatus] instance.
DeviceStatus({
this.online = const DeviceStatusOnlineEnum._(DeviceStatusOnlineEnum.number0),
});
DeviceStatusOnlineEnum? decode(dynamic data, {bool allowNull = true}) {
if (data != null) {
switch (data.toString()) {
case 0: return DeviceStatusOnlineEnum.number0;
case 1: return DeviceStatusOnlineEnum.number1;
case 2: return DeviceStatusOnlineEnum.number2;
default:
if (!allowNull) {
throw ArgumentError('Unknown enum value to decode: $data');
}
}
}
return null;
}
openapi-generator version
7.3.0-snapshot
Generation Details
Steps to reproduce
No special reproduction steps, just generate a regular dart sdk using any numeric enum definition like from above
java -jar openapi-generator-cli.jar generate -i .\errors.yaml -g dart -o with_errors
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the issue with the numeric enum definition and the provided openapi-generator CLI command using the dart generator. Inspect the generated Dart files shown in the report; done means the generated SDK compiles and correctly handles numeric enum defaults and decoding without syntactically invalid cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- dart
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100