-
-
Notifications
You must be signed in to change notification settings - Fork 7.1k
Description
Bug Report Checklist
- Have you provided a full/minimal spec to reproduce the issue?
- Have you validated the input using an OpenAPI validator?
- 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?
Description
I use the dart-dio generator with config options:
useEnumExtension: 'true',
enumUnknownDefaultCase: 'true'
When the config option useEnumExtension is activated, the enumUnknownDefaultCase option is ignored and no enum case unknownDefaultOpenApi is generated.
openapi-generator version
I'm using version 7.13.0 (no regression).
OpenAPI declaration file content or url
Example with an enum:
openapi: 3.0.0
info:
title: test
version: 0.0.1
paths:
/test:
get:
description: test
responses:
"200":
description: test
content:
application/json:
schema:
$ref: "#/components/schemas/MyEnum"
components:
schemas:
MyEnum:
type: integer
x-enum-values:
- identifier: case1
numericValue: 1
- identifier: case2
numericValue: 2
enum:
- 1
- 2
with both config options useEnumExtension and enumUnknownDefaultCase on we get:
java -jar openapi-generator-cli-7.14.0-20250602.083235-44.jar generate -i api.yaml -g dart-dio -o generate -p useEnumExtension=true,enumUnknownDefaultCase=true
class MyEnum extends EnumClass {
@BuiltValueEnumConst(wireNumber: 1)
static const MyEnum case1 = _$case1;
@BuiltValueEnumConst(wireNumber: 2, fallback: true)
static const MyEnum case2 = _$case2;
static Serializer<MyEnum> get serializer => _$myEnumSerializer;
const MyEnum._(String name): super(name);
static BuiltSet<MyEnum> get values => _$values;
static MyEnum valueOf(String name) => _$valueOf(name);
}
When only enumUnknownDefaultCase is active, the unknownDefaultOpenApi case is generated:
java -jar openapi-generator-cli-7.14.0-20250602.083235-44.jar generate -i api.yaml -g dart-dio -o generate -p enumUnknownDefaultCase=true
class MyEnum extends EnumClass {
@BuiltValueEnumConst(wireNumber: 1)
static const MyEnum number1 = _$number1;
@BuiltValueEnumConst(wireNumber: 2)
static const MyEnum number2 = _$number2;
@BuiltValueEnumConst(wireNumber: 11184809, fallback: true)
static const MyEnum unknownDefaultOpenApi = _$unknownDefaultOpenApi;
static Serializer<MyEnum> get serializer => _$myEnumSerializer;
const MyEnum._(String name): super(name);
static BuiltSet<MyEnum> get values => _$values;
static MyEnum valueOf(String name) => _$valueOf(name);
}
Expected generated enum contains both the named cases and the unknownDefault case:
class MyEnum extends EnumClass {
@BuiltValueEnumConst(wireNumber: 1)
static const MyEnum case1 = _$case1;
@BuiltValueEnumConst(wireNumber: 2, fallback: true)
static const MyEnum case2 = _$case2;
@BuiltValueEnumConst(wireNumber: 11184809, fallback: true)
static const MyEnum unknownDefaultOpenApi = _$unknownDefaultOpenApi;
static Serializer<MyEnum> get serializer => _$myEnumSerializer;
const MyEnum._(String name): super(name);
static BuiltSet<MyEnum> get values => _$values;
static MyEnum valueOf(String name) => _$valueOf(name);
}
Generation Details
- Language: Dart
- Generator: dart-dio
- Version: 7.13.0
- Generator options:
- useEnumExtension: true,
- enumUnknownDefaultCase: true
Steps to reproduce
Define an enum with x-enum-values.
Use generator language dart-dio and activate options useEnumExtension, enumUnknownDefaultCase
IS:
Enums are generated without unknown default case.
SHOULD:
Enums are generated with Unknown default case and named cases.