diff --git a/CHANGELOG.md b/CHANGELOG.md index f724d13..8a78d38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,18 @@ +## 2.7.3 + +- `lib/src/reflection_factory_builder.dart`: + - `_EnumTree`: Filtered enum entries to include only those marked as `const` when generating `_valuesByName` map. + +- `pubspec.yaml`: + - Updated dependencies: + - `build`: ^4.0.3 + - `analyzer`: ^8.4.1 + - `dart_style`: ^3.1.3 + - Updated dev_dependencies: + - `build_runner`: ^2.10.4 + - `build_test`: ^3.5.4 + - `test`: ^1.29.0 + ## 2.7.2 - `BasicDartType`: added `function`. diff --git a/bump.sh b/bump.sh new file mode 100755 index 0000000..5e82efc --- /dev/null +++ b/bump.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +APIKEY=$1 +shift # remove the first argument (API key) from "$@" + +## dart pub global activate dart_bump + +dart_bump . \ + --extra-file "lib/src/reflection_factory_base.dart=String\\s+VERSION\\s+=\\s+['\"](.*)['\"]" \ + --api-key $APIKEY \ + "$@" diff --git a/example/reflection_factory_bridge_example.reflection.g.dart b/example/reflection_factory_bridge_example.reflection.g.dart index 5762dba..7c9d6ef 100644 --- a/example/reflection_factory_bridge_example.reflection.g.dart +++ b/example/reflection_factory_bridge_example.reflection.g.dart @@ -1,6 +1,6 @@ // // GENERATED CODE - DO NOT MODIFY BY HAND! -// BUILDER: reflection_factory/2.7.2 +// BUILDER: reflection_factory/2.7.3 // BUILD COMMAND: dart run build_runner build // @@ -22,7 +22,7 @@ typedef __TI = TypeInfo; typedef __PR = ParameterReflection; mixin __ReflectionMixin { - static final Version _version = Version.parse('2.7.2'); + static final Version _version = Version.parse('2.7.3'); Version get reflectionFactoryVersion => _version; diff --git a/example/reflection_factory_example.reflection.g.dart b/example/reflection_factory_example.reflection.g.dart index 7d85afd..6b40b0b 100644 --- a/example/reflection_factory_example.reflection.g.dart +++ b/example/reflection_factory_example.reflection.g.dart @@ -1,6 +1,6 @@ // // GENERATED CODE - DO NOT MODIFY BY HAND! -// BUILDER: reflection_factory/2.7.2 +// BUILDER: reflection_factory/2.7.3 // BUILD COMMAND: dart run build_runner build // @@ -22,7 +22,7 @@ typedef __TI = TypeInfo; typedef __PR = ParameterReflection; mixin __ReflectionMixin { - static final Version _version = Version.parse('2.7.2'); + static final Version _version = Version.parse('2.7.3'); Version get reflectionFactoryVersion => _version; diff --git a/lib/src/reflection_factory_base.dart b/lib/src/reflection_factory_base.dart index 67ba79f..dd903ed 100644 --- a/lib/src/reflection_factory_base.dart +++ b/lib/src/reflection_factory_base.dart @@ -20,7 +20,7 @@ import 'reflection_factory_utils.dart'; /// Class with all registered reflections ([ClassReflection]). class ReflectionFactory { // ignore: constant_identifier_names - static const String VERSION = '2.7.2'; + static const String VERSION = '2.7.3'; static final ReflectionFactory _instance = ReflectionFactory._(); diff --git a/lib/src/reflection_factory_builder.dart b/lib/src/reflection_factory_builder.dart index 25056c9..6734d1e 100644 --- a/lib/src/reflection_factory_builder.dart +++ b/lib/src/reflection_factory_builder.dart @@ -1405,6 +1405,7 @@ class _EnumTree extends RecursiveElementVisitor2 { var enumsEntries = entries.entries .where((e) => e.value.thisType == enumType) + .where((e) => e.value.isConst) .sortedBy((e) => e.key) .toList(); diff --git a/pubspec.yaml b/pubspec.yaml index 7ff44d7..43c8d5d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,15 +1,15 @@ name: reflection_factory description: Allows Dart reflection with an easy approach, even for third-party classes, using code generation portable for all Dart platforms. -version: 2.7.2 +version: 2.7.3 homepage: https://github.com/gmpassos/reflection_factory environment: sdk: '>=3.9.0 <4.0.0' dependencies: - build: ^4.0.2 - analyzer: ^8.4.0 - dart_style: ^3.1.2 + build: ^4.0.3 + analyzer: ^8.4.1 + dart_style: ^3.1.3 meta: ^1.17.0 mime: ^2.0.0 base_codecs: ^1.0.1 @@ -21,12 +21,12 @@ dependencies: logging: ^1.3.0 dev_dependencies: - build_runner: ^2.10.1 - build_test: ^3.5.1 + build_runner: ^2.10.4 + build_test: ^3.5.4 lints: ^6.0.0 pubspec_parse: ^1.5.0 data_serializer: ^1.2.1 #dependency_validator: ^5.0.2 - test: ^1.26.3 + test: ^1.29.0 coverage: ^1.15.0 benchmark: ^0.3.0 diff --git a/test/reflection_factory_build_test.dart b/test/reflection_factory_build_test.dart index 3c40a9a..45557fb 100644 --- a/test/reflection_factory_build_test.dart +++ b/test/reflection_factory_build_test.dart @@ -1490,6 +1490,81 @@ void main() { }, ); + test('EnableReflection + advanced enum', () async { + var builder = ReflectionBuilder(verbose: true); + + var sourceAssets = { + '$_pkgName|lib/status.dart': ''' + + import 'package:reflection_factory/reflection_factory.dart'; + + part 'status.reflection.g.dart'; + + @EnableReflection() + enum Status { + a(10), + b(20); + + static final defaultStatus = Status.a; + + final int id; + + const Status(this.id); + + bool get isFoo => true; + + int calc(int m) => 10 * m; + } + + ''', + }; + + final readerWriter = TestReaderWriter(rootPackage: _pkgName); + await readerWriter.testing.loadIsolateSources(); + + await testBuilder( + builder, + sourceAssets, + readerWriter: readerWriter, + generateFor: {'$_pkgName|lib/status.dart'}, + outputs: { + '$_pkgName|lib/status.reflection.g.dart': decodedMatches( + allOf( + allOf( + contains('GENERATED CODE - DO NOT MODIFY BY HAND'), + contains( + 'BUILDER: reflection_factory/${ReflectionFactory.VERSION}', + ), + contains("part of 'status.dart'"), + ), + allOf([ + contains('Status\$reflection extends EnumReflection'), + contains('Status\$reflectionExtension'), + isNot(contains('Foo\$reflection extends')), + isNot(contains('Foo\$reflectionExtension')), + ]), + allOf([ + contains( + 'final Expando _objectReflections', + ), + contains('factory Status\$reflection([Status? object]) {'), + contains( + ' _valuesByName = const {\n' + ' \'a\': Status.a,\n' + ' \'b\': Status.b,\n' + ' };\n', + ), + contains('_fieldsNames = const [\'id\', \'isFoo\'];'), + ]), + ), + ), + }, + onLog: (msg) { + _printToConsole(msg); + }, + ); + }); + test('ReflectionBridge', () async { var builder = ReflectionBuilder(verbose: true); diff --git a/test/src/reflection/user_with_reflection.g.dart b/test/src/reflection/user_with_reflection.g.dart index 0ad31d9..4cfcd7c 100644 --- a/test/src/reflection/user_with_reflection.g.dart +++ b/test/src/reflection/user_with_reflection.g.dart @@ -1,6 +1,6 @@ // // GENERATED CODE - DO NOT MODIFY BY HAND! -// BUILDER: reflection_factory/2.7.2 +// BUILDER: reflection_factory/2.7.3 // BUILD COMMAND: dart run build_runner build // @@ -22,7 +22,7 @@ typedef __TI = TypeInfo; typedef __PR = ParameterReflection; mixin __ReflectionMixin { - static final Version _version = Version.parse('2.7.2'); + static final Version _version = Version.parse('2.7.3'); Version get reflectionFactoryVersion => _version; diff --git a/test/src/user_reflection_bridge.reflection.g.dart b/test/src/user_reflection_bridge.reflection.g.dart index 0d84b07..36fb033 100644 --- a/test/src/user_reflection_bridge.reflection.g.dart +++ b/test/src/user_reflection_bridge.reflection.g.dart @@ -1,6 +1,6 @@ // // GENERATED CODE - DO NOT MODIFY BY HAND! -// BUILDER: reflection_factory/2.7.2 +// BUILDER: reflection_factory/2.7.3 // BUILD COMMAND: dart run build_runner build // @@ -22,7 +22,7 @@ typedef __TI = TypeInfo; typedef __PR = ParameterReflection; mixin __ReflectionMixin { - static final Version _version = Version.parse('2.7.2'); + static final Version _version = Version.parse('2.7.3'); Version get reflectionFactoryVersion => _version;