Skip to content

[BUG] [Dart] Enums with numeric constant values will generate syntatically incorrect Dart code #17547

@0xNF

Description

@0xNF

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

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