From 241cdde2275ac95b5d8649bc5ca0b40eaad0df06 Mon Sep 17 00:00:00 2001 From: xin Date: Thu, 24 Oct 2024 16:41:17 +0800 Subject: [PATCH 1/4] Fix: Allow 'value' to be used outside of enums by separating exception words. --- lib/src/code_generators/swagger_models_generator.dart | 3 ++- lib/src/exception_words.dart | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/src/code_generators/swagger_models_generator.dart b/lib/src/code_generators/swagger_models_generator.dart index 5620913d..876dd909 100644 --- a/lib/src/code_generators/swagger_models_generator.dart +++ b/lib/src/code_generators/swagger_models_generator.dart @@ -348,7 +348,8 @@ abstract class SwaggerModelsGenerator extends SwaggerGeneratorBase { return 'enums.$result'; } - if (exceptionWords.contains(result.camelCase) || + if ((isEnum ? exceptionWordsInEnum : exceptionWords) + .contains(result.camelCase) || kBasicTypes.contains(result.camelCase)) { return '\$$result'; } diff --git a/lib/src/exception_words.dart b/lib/src/exception_words.dart index bca978c6..12606ea1 100644 --- a/lib/src/exception_words.dart +++ b/lib/src/exception_words.dart @@ -55,6 +55,7 @@ List exceptionWords = [ 'try', 'client', 'hashCode', - 'value', 'override', ]; + +List exceptionWordsInEnum = [...exceptionWords, 'value']; From d3b725f90cd22c05ae9eba00bd4de70abe6ae631 Mon Sep 17 00:00:00 2001 From: xin Date: Thu, 24 Oct 2024 17:21:51 +0800 Subject: [PATCH 2/4] Fix: Allow 'value' to be used outside of enums by separating exception words. --- lib/src/code_generators/enum_model.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/code_generators/enum_model.dart b/lib/src/code_generators/enum_model.dart index 03f4689e..d0a5da03 100644 --- a/lib/src/code_generators/enum_model.dart +++ b/lib/src/code_generators/enum_model.dart @@ -89,7 +89,7 @@ const $name(this.value); result = result.lower; - if (exceptionWords.contains(result)) { + if (exceptionWordsInEnum.contains(result)) { result = '\$$result'; } From c620325252ead6acefd65d6c72532494364b9e47 Mon Sep 17 00:00:00 2001 From: xin Date: Fri, 25 Oct 2024 09:15:57 +0800 Subject: [PATCH 3/4] Test: Add cases for handling 'value' in enum and model field name generation --- test/generator_tests/enums_generator_test.dart | 13 +++++++++++++ test/generator_tests/models_generator_test.dart | 11 +++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/test/generator_tests/enums_generator_test.dart b/test/generator_tests/enums_generator_test.dart index 071be261..216f475c 100644 --- a/test/generator_tests/enums_generator_test.dart +++ b/test/generator_tests/enums_generator_test.dart @@ -38,6 +38,19 @@ void main() { expect(result, contains(output)); }); + + test('Should return \$value if name is value', () { + const name = 'value'; + const output = '\$value'; + final result = EnumModel.getValidatedEnumFieldName( + name, + name, + false, + [], + ); + expect(result, contains(output)); + }); + }); group('getOriginalOrOverriddenRequestParameter', () { diff --git a/test/generator_tests/models_generator_test.dart b/test/generator_tests/models_generator_test.dart index ec0fe8f0..e60fef28 100644 --- a/test/generator_tests/models_generator_test.dart +++ b/test/generator_tests/models_generator_test.dart @@ -134,10 +134,10 @@ void main() { inputFolder: '', outputFolder: '', importPaths: [ - 'package:uuid/uuid.dart', + 'package:uuid/uuid.dart', ], scalars: { - 'uuid': CustomScalar(type: 'Uuid', deserialize: 'parse') + 'uuid': CustomScalar(type: 'Uuid', deserialize: 'parse') } ), ); @@ -184,6 +184,13 @@ void main() { expect(result, contains(expectedResult)); }); + + test('Should NOT return \$value', () { + const name = 'value'; + const output = 'value'; + final result = generator.generateFieldName(name); + expect(result, contains(output)); + }); }); group('generatePropertyContentByDefault', () { From eaa59db79a8a4d874d48ece7eff60a44cef0f7a2 Mon Sep 17 00:00:00 2001 From: xin Date: Fri, 25 Oct 2024 13:11:14 +0800 Subject: [PATCH 4/4] Fix: Allow 'value' to be used outside of enums by separating exception words. --- lib/src/code_generators/swagger_models_generator.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/src/code_generators/swagger_models_generator.dart b/lib/src/code_generators/swagger_models_generator.dart index 876dd909..5620913d 100644 --- a/lib/src/code_generators/swagger_models_generator.dart +++ b/lib/src/code_generators/swagger_models_generator.dart @@ -348,8 +348,7 @@ abstract class SwaggerModelsGenerator extends SwaggerGeneratorBase { return 'enums.$result'; } - if ((isEnum ? exceptionWordsInEnum : exceptionWords) - .contains(result.camelCase) || + if (exceptionWords.contains(result.camelCase) || kBasicTypes.contains(result.camelCase)) { return '\$$result'; }