From 99f3714eae29e0076941335ed91f079577580ae1 Mon Sep 17 00:00:00 2001 From: Anthony BONNEMAIRE Date: Tue, 16 Sep 2025 10:26:05 +0200 Subject: [PATCH 1/9] fix --- packages/nameof/example/bin/example.dart | 2 +- .../nameof/lib/src/model/property_info.dart | 18 +- packages/nameof/lib/src/nameof_generator.dart | 2 +- packages/nameof/lib/src/nameof_visitor.dart | 157 ++++++++++++++++-- .../lib/src/util/element_extensions.dart | 2 +- packages/nameof/pubspec.yaml | 20 +-- packages/nameof/test/nameof_test.dart | 9 +- 7 files changed, 167 insertions(+), 43 deletions(-) diff --git a/packages/nameof/example/bin/example.dart b/packages/nameof/example/bin/example.dart index 91739ba..f75f5e3 100644 --- a/packages/nameof/example/bin/example.dart +++ b/packages/nameof/example/bin/example.dart @@ -1,5 +1,5 @@ import 'models/sample.dart'; void main(List arguments) { - print('Hello nameof! ' + NameofSample.className); + print('Hello nameof! ${NameofSample.className}'); } diff --git a/packages/nameof/lib/src/model/property_info.dart b/packages/nameof/lib/src/model/property_info.dart index 063f51a..d054806 100644 --- a/packages/nameof/lib/src/model/property_info.dart +++ b/packages/nameof/lib/src/model/property_info.dart @@ -5,20 +5,14 @@ class PropertyInfo extends ElementInfo { final bool isGetter; PropertyInfo({ - required String name, - required String originalName, - required bool isPrivate, - required bool isAnnotated, - required bool isIgnore, + required super.name, + required super.originalName, + required super.isPrivate, + required super.isAnnotated, + required super.isIgnore, required this.isSetter, required this.isGetter, - }) : assert(isGetter ^ isSetter), - super( - name: name, - originalName: originalName, - isIgnore: isIgnore, - isPrivate: isPrivate, - isAnnotated: isAnnotated); + }) : assert(isGetter ^ isSetter); factory PropertyInfo.fromElementInfo(ElementInfo based, {required bool isGetter, required bool isSetter}) { diff --git a/packages/nameof/lib/src/nameof_generator.dart b/packages/nameof/lib/src/nameof_generator.dart index b09921a..47eecff 100644 --- a/packages/nameof/lib/src/nameof_generator.dart +++ b/packages/nameof/lib/src/nameof_generator.dart @@ -51,7 +51,7 @@ class NameofGenerator extends GeneratorForAnnotation { return NameofOptions( coverage: coverageAnnotation ?? coverageConfig ?? Coverage.includeImplicit, - scope: NameofScope.onlyPublic); + scope: NameofScope.all); } T? enumValueForDartObject( diff --git a/packages/nameof/lib/src/nameof_visitor.dart b/packages/nameof/lib/src/nameof_visitor.dart index a38ecc2..0c1ef8e 100644 --- a/packages/nameof/lib/src/nameof_visitor.dart +++ b/packages/nameof/lib/src/nameof_visitor.dart @@ -1,4 +1,3 @@ -import 'package:analyzer/dart/element/visitor.dart'; import 'package:analyzer/dart/element/element.dart'; import 'package:nameof/src/model/element_info.dart'; import 'package:nameof/src/util/element_extensions.dart'; @@ -8,7 +7,7 @@ import 'package:nameof_annotation/nameof_annotation.dart'; import 'model/property_info.dart'; /// Class for collect info about inner elements of class (or mixin) -class NameofVisitor extends SimpleElementVisitor { +class NameofVisitor extends ElementVisitor2 { late String className; final constructors = {}; @@ -20,7 +19,11 @@ class NameofVisitor extends SimpleElementVisitor { @override void visitConstructorElement(ConstructorElement element) { - constructors[element.name] = _getElementInfo(element); + if (element.name == null) { + throw UnsupportedError('Element does not have a name!'); + } + + constructors[element.name!] = _getElementInfo(element); } @override @@ -29,24 +32,20 @@ class NameofVisitor extends SimpleElementVisitor { return; } - fields[element.name] = _getElementInfo(element); - } - - @override - void visitPropertyAccessorElement(PropertyAccessorElement element) { - if (element.isSynthetic) { - return; + if (element.name == null) { + throw UnsupportedError('Element does not have a name!'); } - properties[element.name] = PropertyInfo.fromElementInfo( - _getElementInfo(element), - isGetter: element.isGetter, - isSetter: element.isSetter); + fields[element.name!] = _getElementInfo(element); } @override void visitMethodElement(MethodElement element) { - functions[element.name] = _getElementInfo(element); + if (element.name == null) { + throw UnsupportedError('Element does not have a name!'); + } + + functions[element.name!] = _getElementInfo(element); } ElementInfo _getElementInfo(Element element) { @@ -57,6 +56,8 @@ class NameofVisitor extends SimpleElementVisitor { final isPrivate = element.name!.startsWith('_'); final isAnnotated = element.hasAnnotation(NameofKey); final isIgnore = element.hasAnnotation(NameofIgnore); + print(' ${element.name} : $isAnnotated'); + String? name = (isAnnotated ? element @@ -66,8 +67,10 @@ class NameofVisitor extends SimpleElementVisitor { element.name : element.name)! .cleanFromServiceSymbols(); + print('name : $name'); String originalName = element.name!.cleanFromServiceSymbols(); + print('originalName : $originalName'); return ElementInfo( name: name, @@ -76,4 +79,128 @@ class NameofVisitor extends SimpleElementVisitor { isAnnotated: isAnnotated, isIgnore: isIgnore); } + + @override + void visitClassElement(ClassElement element) { + } + + @override + void visitEnumElement(EnumElement element) { + } + + @override + void visitExtensionElement(ExtensionElement element) { + } + + @override + void visitExtensionTypeElement(ExtensionTypeElement element) { + } + + @override + void visitFieldFormalParameterElement(FieldFormalParameterElement element) { + } + + @override + void visitFormalParameterElement(FormalParameterElement element) { + } + + @override + void visitGenericFunctionTypeElement(GenericFunctionTypeElement element) { + } + + @override + void visitGetterElement(GetterElement element) { + if (element.isSynthetic) { + return; + } + + if (element.name == null) { + throw UnsupportedError('Element does not have a name!'); + } + + if (properties.containsKey(element.name!)) { + properties[element.name!] = PropertyInfo.fromElementInfo( + _getElementInfo(element), + isGetter: true, isSetter: properties[element.name!]!.isSetter); + } else { + properties[element.name!] = PropertyInfo.fromElementInfo( + _getElementInfo(element), + isGetter: true, isSetter: false); + } + } + + @override + void visitLabelElement(LabelElement element) { + } + + @override + void visitLibraryElement(LibraryElement element) { + } + + @override + void visitLocalFunctionElement(LocalFunctionElement element) { + if (element.name == null) { + throw UnsupportedError('Element does not have a name!'); + } + + functions[element.name!] = _getElementInfo(element); + } + + @override + void visitLocalVariableElement(LocalVariableElement element) { + } + + @override + void visitMixinElement(MixinElement element) { + } + + @override + void visitMultiplyDefinedElement(MultiplyDefinedElement element) { + } + + @override + void visitPrefixElement(PrefixElement element) { + + } + + @override + void visitSetterElement(SetterElement element) { + if (element.isSynthetic) { + return; + } + + if (element.name == null) { + throw UnsupportedError('Element does not have a name!'); + } + + if (properties.containsKey(element.name!)) { + properties[element.name!] = PropertyInfo.fromElementInfo( + _getElementInfo(element), + isGetter: properties[element.name!]!.isGetter, isSetter: true); + } else { + properties[element.name!] = PropertyInfo.fromElementInfo( + _getElementInfo(element), + isGetter: false, isSetter: true); + } + } + + @override + void visitSuperFormalParameterElement(SuperFormalParameterElement element) { + } + + @override + void visitTopLevelFunctionElement(TopLevelFunctionElement element) { + } + + @override + void visitTopLevelVariableElement(TopLevelVariableElement element) { + } + + @override + void visitTypeAliasElement(TypeAliasElement element) { + } + + @override + void visitTypeParameterElement(TypeParameterElement element) { + } } diff --git a/packages/nameof/lib/src/util/element_extensions.dart b/packages/nameof/lib/src/util/element_extensions.dart index 137e871..f203112 100644 --- a/packages/nameof/lib/src/util/element_extensions.dart +++ b/packages/nameof/lib/src/util/element_extensions.dart @@ -2,7 +2,7 @@ import 'package:analyzer/dart/constant/value.dart'; import 'package:analyzer/dart/element/element.dart'; import 'package:source_gen/source_gen.dart'; -TypeChecker _typeChecker(final Type type) => TypeChecker.fromRuntime(type); +TypeChecker _typeChecker(final Type type) => TypeChecker.typeNamed(type); extension AnnotationChecker on Element { bool hasAnnotation(final Type type) { diff --git a/packages/nameof/pubspec.yaml b/packages/nameof/pubspec.yaml index ac8e01d..ecdc10f 100644 --- a/packages/nameof/pubspec.yaml +++ b/packages/nameof/pubspec.yaml @@ -1,21 +1,21 @@ name: nameof description: Generator for Dart class member's names, such as fields, properties, methods, constructors -version: 0.2.2 +version: 0.2.3 homepage: https://github.com/flankb/nameof environment: - sdk: '>=2.16.0 <4.0.0' + sdk: ">=3.8.0 <4.0.0" dependencies: - analyzer: '>=5.2.0 <7.0.0' - build: ^2.1.0 - source_gen: ^1.4.0 - build_config: '>=0.4.4 <2.0.0' - nameof_annotation: ^0.2.0 + analyzer: ">=7.5.9 <9.0.0" + build: ">=3.0.0 <5.0.0" + source_gen: ">=3.0.0 <5.0.0" + build_config: ^1.2.0 + nameof_annotation: ^0.2.1 dev_dependencies: - build_runner: ^2.1.11 - build_test: ^2.2.2 - source_gen_test: ^1.0.6 + build_runner: ^2.3.3 + build_test: ^3.3.0 + source_gen_test: ^1.2.0 lints: ^3.0.0 test: ^1.24.0 diff --git a/packages/nameof/test/nameof_test.dart b/packages/nameof/test/nameof_test.dart index 541bac1..bb2ada5 100644 --- a/packages/nameof/test/nameof_test.dart +++ b/packages/nameof/test/nameof_test.dart @@ -6,20 +6,23 @@ void main() { group('A group of tests for check generation code', () { test('test generate code for model one', () { expect(NameofModelOne.className, 'ModelOne'); - expect(NameofModelOne.constructor, ''); + expect(NameofModelOne.constructorNew, 'new'); expect(NameofModelOne.fieldName, 'name'); expect(NameofModelOne.fieldId, 'id'); expect(NameofModelOne.functionBuildValue, 'buildValue'); + expect(NameofModelOne.fieldPrivateBehindProp, '_behindProp'); + expect(NameofModelOne.functionPrivateCalculateAge, '_calculateAge'); + expect(NameofModelOne.propertySetBehindProp, 'behindProp'); }); test('test generate code for base class', () { expect(NameofBaseClass.className, 'BaseClass'); expect(NameofBaseClass.fieldPrice, 'price'); - expect(NameofBaseClass.constructor, ''); + expect(NameofBaseClass.constructorNew, 'new'); }); test('test generate code for mixin', () { - expect(NameofMixinOne.propertyGetHameleon, 'hameleon'); + expect(NameofMixinOne.propertyGetNameVinage, 'hameleon'); expect(NameofMixinOne.className, 'MixinOne'); }); }); From fd963157af450f00f7589568f0de9fb8403b1fd8 Mon Sep 17 00:00:00 2001 From: Anthony BONNEMAIRE Date: Tue, 16 Sep 2025 10:54:52 +0200 Subject: [PATCH 2/9] fix --- packages/nameof/lib/src/nameof_generator.dart | 30 ++++++++++++++++--- packages/nameof/lib/src/nameof_visitor.dart | 3 -- packages/nameof/pubspec.yaml | 2 +- packages/nameof/test/nameof_test.dart | 2 -- packages/nameof/test/source_gen_src.dart | 29 ++++++++++++++++-- .../lib/nameof_annotation.dart | 3 +- packages/nameof_annotation/pubspec.yaml | 2 +- 7 files changed, 56 insertions(+), 15 deletions(-) diff --git a/packages/nameof/lib/src/nameof_generator.dart b/packages/nameof/lib/src/nameof_generator.dart index 47eecff..0fa9a67 100644 --- a/packages/nameof/lib/src/nameof_generator.dart +++ b/packages/nameof/lib/src/nameof_generator.dart @@ -33,7 +33,7 @@ class NameofGenerator extends GeneratorForAnnotation { return code; } - NameofOptions _parseConfig(ConstantReader annotation) { + Coverage _parseCoverage(ConstantReader annotation) { final coverageConfigString = config['coverage']?.toString(); bool covTest(Coverage coverage) => @@ -47,11 +47,33 @@ class NameofGenerator extends GeneratorForAnnotation { annotation.read('coverage'), Coverage.values, ); + return coverageAnnotation ?? coverageConfig ?? Coverage.includeImplicit; + } + + NameofScope _parseScope(ConstantReader annotation) { + final scopeConfigString = config.containsKey('scope') ? config['scope']?.toString() : ''; + + bool scopeTest(NameofScope scope) => + scopeConfigString == scope.toShortString(); + + final scopeConfig = NameofScope.values.any(scopeTest) + ? NameofScope.values.firstWhere(scopeTest) + : null; + + final scopeConstantReader = annotation.peek('scope'); + final scopeAnnotation = scopeConstantReader != null ? enumValueForDartObject( + scopeConstantReader, + NameofScope.values, + ) : null; + + return scopeAnnotation ?? scopeConfig ?? NameofScope.onlyPublic; + } + + NameofOptions _parseConfig(ConstantReader annotation) { return NameofOptions( - coverage: - coverageAnnotation ?? coverageConfig ?? Coverage.includeImplicit, - scope: NameofScope.all); + coverage: _parseCoverage(annotation), + scope: _parseScope(annotation)); } T? enumValueForDartObject( diff --git a/packages/nameof/lib/src/nameof_visitor.dart b/packages/nameof/lib/src/nameof_visitor.dart index 0c1ef8e..415ffdf 100644 --- a/packages/nameof/lib/src/nameof_visitor.dart +++ b/packages/nameof/lib/src/nameof_visitor.dart @@ -56,7 +56,6 @@ class NameofVisitor extends ElementVisitor2 { final isPrivate = element.name!.startsWith('_'); final isAnnotated = element.hasAnnotation(NameofKey); final isIgnore = element.hasAnnotation(NameofIgnore); - print(' ${element.name} : $isAnnotated'); String? name = (isAnnotated @@ -67,10 +66,8 @@ class NameofVisitor extends ElementVisitor2 { element.name : element.name)! .cleanFromServiceSymbols(); - print('name : $name'); String originalName = element.name!.cleanFromServiceSymbols(); - print('originalName : $originalName'); return ElementInfo( name: name, diff --git a/packages/nameof/pubspec.yaml b/packages/nameof/pubspec.yaml index ecdc10f..0ce034d 100644 --- a/packages/nameof/pubspec.yaml +++ b/packages/nameof/pubspec.yaml @@ -11,7 +11,7 @@ dependencies: build: ">=3.0.0 <5.0.0" source_gen: ">=3.0.0 <5.0.0" build_config: ^1.2.0 - nameof_annotation: ^0.2.1 + nameof_annotation: ^0.2.2 dev_dependencies: build_runner: ^2.3.3 diff --git a/packages/nameof/test/nameof_test.dart b/packages/nameof/test/nameof_test.dart index bb2ada5..96fdc76 100644 --- a/packages/nameof/test/nameof_test.dart +++ b/packages/nameof/test/nameof_test.dart @@ -10,8 +10,6 @@ void main() { expect(NameofModelOne.fieldName, 'name'); expect(NameofModelOne.fieldId, 'id'); expect(NameofModelOne.functionBuildValue, 'buildValue'); - expect(NameofModelOne.fieldPrivateBehindProp, '_behindProp'); - expect(NameofModelOne.functionPrivateCalculateAge, '_calculateAge'); expect(NameofModelOne.propertySetBehindProp, 'behindProp'); }); diff --git a/packages/nameof/test/source_gen_src.dart b/packages/nameof/test/source_gen_src.dart index 45355d7..b1e8cf0 100644 --- a/packages/nameof/test/source_gen_src.dart +++ b/packages/nameof/test/source_gen_src.dart @@ -6,7 +6,7 @@ import 'package:source_gen_test/annotations.dart'; abstract class NameofModelTest { static const String className = 'ModelTest'; - static const String constructor = ''; + static const String constructorNew = 'new'; static const String fieldName = 'name'; static const String fieldId = 'id'; @@ -34,7 +34,7 @@ class ModelTest { abstract class NameofModelTest2 { static const String className = 'ModelTest2'; - static const String constructor = ''; + static const String constructorNew = 'new'; static const String fieldName = 'name'; static const String fieldId = 'id'; @@ -53,6 +53,29 @@ class ModelTest2 { ModelTest2(this.name, this.id); } +@ShouldGenerate(r''' +/// Container for names of elements belonging to the [ModelTest2] class +abstract class NameofModelTest2 { + static const String className = 'ModelTest2'; + + static const String constructorNew = 'new'; + + static const String fieldName = 'name'; + static const String fieldId = 'id'; + + static const String propertyGetDescription = 'description'; +} +''') +@Nameof(scope : NameofScope.all) +class ModelTest3 { + final String name; + final int id; + + void _setCal() {} + + ModelTest3(this.name, this.id); +} + @ShouldGenerate(r''' /// Container for names of elements belonging to the [MixinTest3] class abstract class NameofMixinTest3 { @@ -75,7 +98,7 @@ mixin MixinTest3 { abstract class NameofCinema { static const String className = 'Cinema'; - static const String constructor = ''; + static const String constructorNew = 'new'; static const String fieldStreet = 'street'; static const String fieldValue = 'value'; diff --git a/packages/nameof_annotation/lib/nameof_annotation.dart b/packages/nameof_annotation/lib/nameof_annotation.dart index a85d3f8..2296352 100644 --- a/packages/nameof_annotation/lib/nameof_annotation.dart +++ b/packages/nameof_annotation/lib/nameof_annotation.dart @@ -6,8 +6,9 @@ library nameof_annotation; class Nameof { /// This setting response for including and excluding elements of class final Coverage? coverage; + final NameofScope? scope; - const Nameof({this.coverage}); + const Nameof({this.coverage, this.scope}); } /// Annotation for ignore inner elements of class (or mixin) diff --git a/packages/nameof_annotation/pubspec.yaml b/packages/nameof_annotation/pubspec.yaml index d0a35ac..6944a76 100644 --- a/packages/nameof_annotation/pubspec.yaml +++ b/packages/nameof_annotation/pubspec.yaml @@ -1,6 +1,6 @@ name: nameof_annotation description: Annotations for nameof package, that is Generator for Dart class member's names, such as fields, properties, methods, constructors -version: 0.2.1 +version: 0.2.2 homepage: https://github.com/flankb/nameof environment: From f5db0a26bf321e335ef6e57fd1ff2bc29c0d2810 Mon Sep 17 00:00:00 2001 From: Anthony BONNEMAIRE Date: Tue, 16 Sep 2025 10:57:08 +0200 Subject: [PATCH 3/9] fix --- packages/nameof/test/source_gen_src.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/nameof/test/source_gen_src.dart b/packages/nameof/test/source_gen_src.dart index b1e8cf0..52214b3 100644 --- a/packages/nameof/test/source_gen_src.dart +++ b/packages/nameof/test/source_gen_src.dart @@ -55,8 +55,8 @@ class ModelTest2 { @ShouldGenerate(r''' /// Container for names of elements belonging to the [ModelTest2] class -abstract class NameofModelTest2 { - static const String className = 'ModelTest2'; +abstract class NameofModelTest3 { + static const String className = 'ModelTest3'; static const String constructorNew = 'new'; @@ -64,6 +64,7 @@ abstract class NameofModelTest2 { static const String fieldId = 'id'; static const String propertyGetDescription = 'description'; + static const String functionPrivateSetCal = '_setCal'; } ''') @Nameof(scope : NameofScope.all) From 5caa52181442079cb9df543864d7cd0a318f9b4e Mon Sep 17 00:00:00 2001 From: Anthony BONNEMAIRE Date: Tue, 16 Sep 2025 11:43:33 +0200 Subject: [PATCH 4/9] fix --- packages/nameof/example/pubspec.yaml | 3 ++- packages/nameof/pubspec.yaml | 4 +++- packages/nameof/test/source_gen_src.dart | 5 ++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/nameof/example/pubspec.yaml b/packages/nameof/example/pubspec.yaml index f6c7702..7685fcc 100644 --- a/packages/nameof/example/pubspec.yaml +++ b/packages/nameof/example/pubspec.yaml @@ -8,7 +8,8 @@ environment: dependencies: - nameof_annotation: ^0.2.0 + nameof_annotation: + path: ../../nameof_annotation/ dev_dependencies: lints: ^3.0.0 diff --git a/packages/nameof/pubspec.yaml b/packages/nameof/pubspec.yaml index 0ce034d..996104b 100644 --- a/packages/nameof/pubspec.yaml +++ b/packages/nameof/pubspec.yaml @@ -11,7 +11,9 @@ dependencies: build: ">=3.0.0 <5.0.0" source_gen: ">=3.0.0 <5.0.0" build_config: ^1.2.0 - nameof_annotation: ^0.2.2 + nameof_annotation: + path: ../nameof_annotation/ + dev_dependencies: build_runner: ^2.3.3 diff --git a/packages/nameof/test/source_gen_src.dart b/packages/nameof/test/source_gen_src.dart index 52214b3..d10f7c3 100644 --- a/packages/nameof/test/source_gen_src.dart +++ b/packages/nameof/test/source_gen_src.dart @@ -54,7 +54,7 @@ class ModelTest2 { } @ShouldGenerate(r''' -/// Container for names of elements belonging to the [ModelTest2] class +/// Container for names of elements belonging to the [ModelTest3] class abstract class NameofModelTest3 { static const String className = 'ModelTest3'; @@ -63,11 +63,10 @@ abstract class NameofModelTest3 { static const String fieldName = 'name'; static const String fieldId = 'id'; - static const String propertyGetDescription = 'description'; static const String functionPrivateSetCal = '_setCal'; } ''') -@Nameof(scope : NameofScope.all) +@Nameof(scope: NameofScope.all,) class ModelTest3 { final String name; final int id; From 4ac5fb332fa918fc4e17d9b36c8d2e98b175f021 Mon Sep 17 00:00:00 2001 From: Anthony BONNEMAIRE Date: Tue, 16 Sep 2025 13:48:59 +0200 Subject: [PATCH 5/9] fix --- packages/nameof/pubspec.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/nameof/pubspec.yaml b/packages/nameof/pubspec.yaml index 996104b..b3e4773 100644 --- a/packages/nameof/pubspec.yaml +++ b/packages/nameof/pubspec.yaml @@ -16,8 +16,8 @@ dependencies: dev_dependencies: - build_runner: ^2.3.3 - build_test: ^3.3.0 - source_gen_test: ^1.2.0 - lints: ^3.0.0 - test: ^1.24.0 + build_runner: ^2.8.0 + build_test: ^3.4.0 + source_gen_test: ^1.3.2 + lints: ^6.0.0 + test: ^1.26.3 From 72dba5ff9ddec785133c20410e5a9e8fff750a76 Mon Sep 17 00:00:00 2001 From: Anthony BONNEMAIRE Date: Tue, 16 Sep 2025 13:55:10 +0200 Subject: [PATCH 6/9] fix --- packages/nameof/pubspec.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/nameof/pubspec.yaml b/packages/nameof/pubspec.yaml index b3e4773..bbee73e 100644 --- a/packages/nameof/pubspec.yaml +++ b/packages/nameof/pubspec.yaml @@ -7,7 +7,7 @@ environment: sdk: ">=3.8.0 <4.0.0" dependencies: - analyzer: ">=7.5.9 <9.0.0" + analyzer: ">=8.0.0 < 9.0.0" build: ">=3.0.0 <5.0.0" source_gen: ">=3.0.0 <5.0.0" build_config: ^1.2.0 @@ -16,8 +16,8 @@ dependencies: dev_dependencies: - build_runner: ^2.8.0 - build_test: ^3.4.0 - source_gen_test: ^1.3.2 - lints: ^6.0.0 - test: ^1.26.3 + build_runner: ^2.3.3 + build_test: ^3.3.0 + source_gen_test: ^1.2.0 + lints: ^3.0.0 + test: ^1.24.0 From 43adab5a88e9f5a307f5345f3e0a3043c47ef13b Mon Sep 17 00:00:00 2001 From: Anthony BONNEMAIRE Date: Tue, 16 Sep 2025 14:23:18 +0200 Subject: [PATCH 7/9] fix --- packages/nameof/lib/src/nameof_generator.dart | 7 +- packages/nameof/lib/src/nameof_visitor.dart | 98 +++++++++---------- .../lib/src/util/element_extensions.dart | 4 +- packages/nameof/pubspec.yaml | 6 +- 4 files changed, 58 insertions(+), 57 deletions(-) diff --git a/packages/nameof/lib/src/nameof_generator.dart b/packages/nameof/lib/src/nameof_generator.dart index 0fa9a67..a5f5d79 100644 --- a/packages/nameof/lib/src/nameof_generator.dart +++ b/packages/nameof/lib/src/nameof_generator.dart @@ -1,4 +1,5 @@ import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:build/build.dart'; import 'package:nameof/src/nameof_code_processor.dart'; import 'package:nameof/src/util/enum_extensions.dart'; @@ -14,19 +15,19 @@ class NameofGenerator extends GeneratorForAnnotation { @override String generateForAnnotatedElement( - Element element, ConstantReader annotation, BuildStep buildStep) { + Element2 element, ConstantReader annotation, BuildStep buildStep) { if (element.kind != ElementKind.CLASS && element.kind.name != 'MIXIN') { throw UnsupportedError("This is not a class (or mixin)!"); } final options = _parseConfig(annotation); - final visitor = NameofVisitor(element.name ?? + final visitor = NameofVisitor(element.name3 ?? () { throw UnsupportedError( 'Class or mixin element does not have a name!'); }()); - element.visitChildren(visitor); + element.visitChildren2(visitor); final code = NameofCodeProcessor(options, visitor).process(); diff --git a/packages/nameof/lib/src/nameof_visitor.dart b/packages/nameof/lib/src/nameof_visitor.dart index 415ffdf..eb0d1fe 100644 --- a/packages/nameof/lib/src/nameof_visitor.dart +++ b/packages/nameof/lib/src/nameof_visitor.dart @@ -1,4 +1,4 @@ -import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:nameof/src/model/element_info.dart'; import 'package:nameof/src/util/element_extensions.dart'; import 'package:nameof/src/util/string_extensions.dart'; @@ -18,42 +18,42 @@ class NameofVisitor extends ElementVisitor2 { NameofVisitor(this.className); @override - void visitConstructorElement(ConstructorElement element) { - if (element.name == null) { + void visitConstructorElement(ConstructorElement2 element) { + if (element.name3 == null) { throw UnsupportedError('Element does not have a name!'); } - constructors[element.name!] = _getElementInfo(element); + constructors[element.name3!] = _getElementInfo(element); } @override - void visitFieldElement(FieldElement element) { + void visitFieldElement(FieldElement2 element) { if (element.isSynthetic) { return; } - if (element.name == null) { + if (element.name3 == null) { throw UnsupportedError('Element does not have a name!'); } - fields[element.name!] = _getElementInfo(element); + fields[element.name3!] = _getElementInfo(element); } @override - void visitMethodElement(MethodElement element) { - if (element.name == null) { + void visitMethodElement(MethodElement2 element) { + if (element.name3 == null) { throw UnsupportedError('Element does not have a name!'); } - functions[element.name!] = _getElementInfo(element); + functions[element.name3!] = _getElementInfo(element); } - ElementInfo _getElementInfo(Element element) { - if (element.name == null) { + ElementInfo _getElementInfo(Element2 element) { + if (element.name3 == null) { throw UnsupportedError('Element does not have a name!'); } - final isPrivate = element.name!.startsWith('_'); + final isPrivate = element.name3!.startsWith('_'); final isAnnotated = element.hasAnnotation(NameofKey); final isIgnore = element.hasAnnotation(NameofIgnore); @@ -63,11 +63,11 @@ class NameofVisitor extends ElementVisitor2 { .getAnnotation(NameofKey) ?.getField('name') ?.toStringValue() ?? - element.name - : element.name)! + element.name3 + : element.name3)! .cleanFromServiceSymbols(); - String originalName = element.name!.cleanFromServiceSymbols(); + String originalName = element.name3!.cleanFromServiceSymbols(); return ElementInfo( name: name, @@ -78,31 +78,27 @@ class NameofVisitor extends ElementVisitor2 { } @override - void visitClassElement(ClassElement element) { + void visitClassElement(ClassElement2 element) { } @override - void visitEnumElement(EnumElement element) { + void visitEnumElement(EnumElement2 element) { } @override - void visitExtensionElement(ExtensionElement element) { + void visitExtensionElement(ExtensionElement2 element) { } @override - void visitExtensionTypeElement(ExtensionTypeElement element) { + void visitExtensionTypeElement(ExtensionTypeElement2 element) { } @override - void visitFieldFormalParameterElement(FieldFormalParameterElement element) { + void visitFieldFormalParameterElement(FieldFormalParameterElement2 element) { } @override - void visitFormalParameterElement(FormalParameterElement element) { - } - - @override - void visitGenericFunctionTypeElement(GenericFunctionTypeElement element) { + void visitGenericFunctionTypeElement(GenericFunctionTypeElement2 element) { } @override @@ -111,52 +107,52 @@ class NameofVisitor extends ElementVisitor2 { return; } - if (element.name == null) { + if (element.name3 == null) { throw UnsupportedError('Element does not have a name!'); } - if (properties.containsKey(element.name!)) { - properties[element.name!] = PropertyInfo.fromElementInfo( + if (properties.containsKey(element.name3!)) { + properties[element.name3!] = PropertyInfo.fromElementInfo( _getElementInfo(element), - isGetter: true, isSetter: properties[element.name!]!.isSetter); + isGetter: true, isSetter: properties[element.name3!]!.isSetter); } else { - properties[element.name!] = PropertyInfo.fromElementInfo( + properties[element.name3!] = PropertyInfo.fromElementInfo( _getElementInfo(element), isGetter: true, isSetter: false); } } @override - void visitLabelElement(LabelElement element) { + void visitLabelElement(LabelElement2 element) { } @override - void visitLibraryElement(LibraryElement element) { + void visitLibraryElement(LibraryElement2 element) { } @override void visitLocalFunctionElement(LocalFunctionElement element) { - if (element.name == null) { + if (element.name3 == null) { throw UnsupportedError('Element does not have a name!'); } - functions[element.name!] = _getElementInfo(element); + functions[element.name3!] = _getElementInfo(element); } @override - void visitLocalVariableElement(LocalVariableElement element) { + void visitLocalVariableElement(LocalVariableElement2 element) { } @override - void visitMixinElement(MixinElement element) { + void visitMixinElement(MixinElement2 element) { } @override - void visitMultiplyDefinedElement(MultiplyDefinedElement element) { + void visitMultiplyDefinedElement(MultiplyDefinedElement2 element) { } @override - void visitPrefixElement(PrefixElement element) { + void visitPrefixElement(PrefixElement2 element) { } @@ -166,38 +162,42 @@ class NameofVisitor extends ElementVisitor2 { return; } - if (element.name == null) { + if (element.name3 == null) { throw UnsupportedError('Element does not have a name!'); } - if (properties.containsKey(element.name!)) { - properties[element.name!] = PropertyInfo.fromElementInfo( + if (properties.containsKey(element.name3!)) { + properties[element.name3!] = PropertyInfo.fromElementInfo( _getElementInfo(element), - isGetter: properties[element.name!]!.isGetter, isSetter: true); + isGetter: properties[element.name3!]!.isGetter, isSetter: true); } else { - properties[element.name!] = PropertyInfo.fromElementInfo( + properties[element.name3!] = PropertyInfo.fromElementInfo( _getElementInfo(element), isGetter: false, isSetter: true); } } @override - void visitSuperFormalParameterElement(SuperFormalParameterElement element) { + void visitSuperFormalParameterElement(SuperFormalParameterElement2 element) { } @override - void visitTopLevelFunctionElement(TopLevelFunctionElement element) { + void visitTopLevelVariableElement(TopLevelVariableElement2 element) { } @override - void visitTopLevelVariableElement(TopLevelVariableElement element) { + void visitTypeAliasElement(TypeAliasElement2 element) { } @override - void visitTypeAliasElement(TypeAliasElement element) { + void visitTypeParameterElement(TypeParameterElement2 element) { } @override - void visitTypeParameterElement(TypeParameterElement element) { + void visitFormalParameterElement(FormalParameterElement element) { + } + + @override + void visitTopLevelFunctionElement(TopLevelFunctionElement element) { } } diff --git a/packages/nameof/lib/src/util/element_extensions.dart b/packages/nameof/lib/src/util/element_extensions.dart index f203112..01097d3 100644 --- a/packages/nameof/lib/src/util/element_extensions.dart +++ b/packages/nameof/lib/src/util/element_extensions.dart @@ -1,10 +1,10 @@ import 'package:analyzer/dart/constant/value.dart'; -import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:source_gen/source_gen.dart'; TypeChecker _typeChecker(final Type type) => TypeChecker.typeNamed(type); -extension AnnotationChecker on Element { +extension AnnotationChecker on Element2 { bool hasAnnotation(final Type type) { return _typeChecker(type).hasAnnotationOfExact(this); } diff --git a/packages/nameof/pubspec.yaml b/packages/nameof/pubspec.yaml index bbee73e..1cebe9b 100644 --- a/packages/nameof/pubspec.yaml +++ b/packages/nameof/pubspec.yaml @@ -7,9 +7,9 @@ environment: sdk: ">=3.8.0 <4.0.0" dependencies: - analyzer: ">=8.0.0 < 9.0.0" - build: ">=3.0.0 <5.0.0" - source_gen: ">=3.0.0 <5.0.0" + analyzer: ^7.7.0 + build: ^3.0.0 + source_gen: ^3.0.0 build_config: ^1.2.0 nameof_annotation: path: ../nameof_annotation/ From 9c025909f24489c97820a18f02938675eb201226 Mon Sep 17 00:00:00 2001 From: Anthony BONNEMAIRE Date: Tue, 10 Mar 2026 16:40:07 +0100 Subject: [PATCH 8/9] Update Nameof --- .../nameof/example/bin/models/sample.dart | 2 +- packages/nameof/example/pubspec.yaml | 4 ++-- packages/nameof/pubspec.yaml | 20 +++++++++---------- packages/nameof_annotation/pubspec.yaml | 6 +++--- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/nameof/example/bin/models/sample.dart b/packages/nameof/example/bin/models/sample.dart index affa1a8..e68816c 100644 --- a/packages/nameof/example/bin/models/sample.dart +++ b/packages/nameof/example/bin/models/sample.dart @@ -33,7 +33,7 @@ class Car { : this(price, weigth, year, 'Sedan'); } -@Nameof(coverage: Coverage.excludeImplicit) +@Nameof(coverage: Coverage.excludeImplicit, scope: NameofScope.all) class Sample extends BaseClass with VinilMixin { final String name; String _behind = ''; diff --git a/packages/nameof/example/pubspec.yaml b/packages/nameof/example/pubspec.yaml index 7685fcc..990bf65 100644 --- a/packages/nameof/example/pubspec.yaml +++ b/packages/nameof/example/pubspec.yaml @@ -4,7 +4,7 @@ version: 1.1.0 # homepage: https://www.example.com environment: - sdk: ^3.0.0 + sdk: ^3.8.0 dependencies: @@ -12,7 +12,7 @@ dependencies: path: ../../nameof_annotation/ dev_dependencies: - lints: ^3.0.0 + lints: ^6.1.0 build_runner: # nameof: ^0.2.0 nameof: diff --git a/packages/nameof/pubspec.yaml b/packages/nameof/pubspec.yaml index 1cebe9b..543ac2d 100644 --- a/packages/nameof/pubspec.yaml +++ b/packages/nameof/pubspec.yaml @@ -1,23 +1,23 @@ name: nameof description: Generator for Dart class member's names, such as fields, properties, methods, constructors -version: 0.2.3 +version: 0.3.0 homepage: https://github.com/flankb/nameof environment: sdk: ">=3.8.0 <4.0.0" dependencies: - analyzer: ^7.7.0 - build: ^3.0.0 - source_gen: ^3.0.0 - build_config: ^1.2.0 + analyzer: ^8.1.1 + build: ^4.0.4 + source_gen: ^4.2.0 + build_config: ^1.3.0 nameof_annotation: path: ../nameof_annotation/ dev_dependencies: - build_runner: ^2.3.3 - build_test: ^3.3.0 - source_gen_test: ^1.2.0 - lints: ^3.0.0 - test: ^1.24.0 + build_runner: ^2.10.5 + build_test: ^3.5.10 + source_gen_test: ^1.3.2 + lints: ^6.1.0 + test: ^1.29.0 diff --git a/packages/nameof_annotation/pubspec.yaml b/packages/nameof_annotation/pubspec.yaml index 6944a76..610e28c 100644 --- a/packages/nameof_annotation/pubspec.yaml +++ b/packages/nameof_annotation/pubspec.yaml @@ -1,6 +1,6 @@ name: nameof_annotation description: Annotations for nameof package, that is Generator for Dart class member's names, such as fields, properties, methods, constructors -version: 0.2.2 +version: 0.3.0 homepage: https://github.com/flankb/nameof environment: @@ -10,5 +10,5 @@ environment: # path: ^1.8.0 dev_dependencies: - lints: ^3.0.0 - test: ^1.24.0 + lints: ^6.1.0 + test: ^1.29.0 From 224b1083d9a5af79f25ec1315ad59e501384190c Mon Sep 17 00:00:00 2001 From: Anthony BONNEMAIRE Date: Wed, 11 Mar 2026 08:50:52 +0100 Subject: [PATCH 9/9] Update Nameof --- packages/nameof/lib/src/nameof_generator.dart | 7 +- packages/nameof/lib/src/nameof_visitor.dart | 88 +++++++++---------- .../lib/src/util/element_extensions.dart | 4 +- packages/nameof/pubspec.yaml | 12 +-- packages/nameof/test/integration/models.dart | 4 + packages/nameof_annotation/pubspec.yaml | 2 +- 6 files changed, 60 insertions(+), 57 deletions(-) diff --git a/packages/nameof/lib/src/nameof_generator.dart b/packages/nameof/lib/src/nameof_generator.dart index a5f5d79..0fa9a67 100644 --- a/packages/nameof/lib/src/nameof_generator.dart +++ b/packages/nameof/lib/src/nameof_generator.dart @@ -1,5 +1,4 @@ import 'package:analyzer/dart/element/element.dart'; -import 'package:analyzer/dart/element/element2.dart'; import 'package:build/build.dart'; import 'package:nameof/src/nameof_code_processor.dart'; import 'package:nameof/src/util/enum_extensions.dart'; @@ -15,19 +14,19 @@ class NameofGenerator extends GeneratorForAnnotation { @override String generateForAnnotatedElement( - Element2 element, ConstantReader annotation, BuildStep buildStep) { + Element element, ConstantReader annotation, BuildStep buildStep) { if (element.kind != ElementKind.CLASS && element.kind.name != 'MIXIN') { throw UnsupportedError("This is not a class (or mixin)!"); } final options = _parseConfig(annotation); - final visitor = NameofVisitor(element.name3 ?? + final visitor = NameofVisitor(element.name ?? () { throw UnsupportedError( 'Class or mixin element does not have a name!'); }()); - element.visitChildren2(visitor); + element.visitChildren(visitor); final code = NameofCodeProcessor(options, visitor).process(); diff --git a/packages/nameof/lib/src/nameof_visitor.dart b/packages/nameof/lib/src/nameof_visitor.dart index eb0d1fe..1493ffd 100644 --- a/packages/nameof/lib/src/nameof_visitor.dart +++ b/packages/nameof/lib/src/nameof_visitor.dart @@ -1,4 +1,4 @@ -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:nameof/src/model/element_info.dart'; import 'package:nameof/src/util/element_extensions.dart'; import 'package:nameof/src/util/string_extensions.dart'; @@ -18,42 +18,42 @@ class NameofVisitor extends ElementVisitor2 { NameofVisitor(this.className); @override - void visitConstructorElement(ConstructorElement2 element) { - if (element.name3 == null) { + void visitConstructorElement(ConstructorElement element) { + if (element.name == null) { throw UnsupportedError('Element does not have a name!'); } - constructors[element.name3!] = _getElementInfo(element); + constructors[element.name!] = _getElementInfo(element); } @override - void visitFieldElement(FieldElement2 element) { + void visitFieldElement(FieldElement element) { if (element.isSynthetic) { return; } - if (element.name3 == null) { + if (element.name == null) { throw UnsupportedError('Element does not have a name!'); } - fields[element.name3!] = _getElementInfo(element); + fields[element.name!] = _getElementInfo(element); } @override - void visitMethodElement(MethodElement2 element) { - if (element.name3 == null) { + void visitMethodElement(MethodElement element) { + if (element.name == null) { throw UnsupportedError('Element does not have a name!'); } - functions[element.name3!] = _getElementInfo(element); + functions[element.name!] = _getElementInfo(element); } - ElementInfo _getElementInfo(Element2 element) { - if (element.name3 == null) { + ElementInfo _getElementInfo(Element element) { + if (element.name == null) { throw UnsupportedError('Element does not have a name!'); } - final isPrivate = element.name3!.startsWith('_'); + final isPrivate = element.name!.startsWith('_'); final isAnnotated = element.hasAnnotation(NameofKey); final isIgnore = element.hasAnnotation(NameofIgnore); @@ -63,11 +63,11 @@ class NameofVisitor extends ElementVisitor2 { .getAnnotation(NameofKey) ?.getField('name') ?.toStringValue() ?? - element.name3 - : element.name3)! + element.name + : element.name)! .cleanFromServiceSymbols(); - String originalName = element.name3!.cleanFromServiceSymbols(); + String originalName = element.name!.cleanFromServiceSymbols(); return ElementInfo( name: name, @@ -78,27 +78,27 @@ class NameofVisitor extends ElementVisitor2 { } @override - void visitClassElement(ClassElement2 element) { + void visitClassElement(ClassElement element) { } @override - void visitEnumElement(EnumElement2 element) { + void visitEnumElement(EnumElement element) { } @override - void visitExtensionElement(ExtensionElement2 element) { + void visitExtensionElement(ExtensionElement element) { } @override - void visitExtensionTypeElement(ExtensionTypeElement2 element) { + void visitExtensionTypeElement(ExtensionTypeElement element) { } @override - void visitFieldFormalParameterElement(FieldFormalParameterElement2 element) { + void visitFieldFormalParameterElement(FieldFormalParameterElement element) { } @override - void visitGenericFunctionTypeElement(GenericFunctionTypeElement2 element) { + void visitGenericFunctionTypeElement(GenericFunctionTypeElement element) { } @override @@ -107,52 +107,52 @@ class NameofVisitor extends ElementVisitor2 { return; } - if (element.name3 == null) { + if (element.name == null) { throw UnsupportedError('Element does not have a name!'); } - if (properties.containsKey(element.name3!)) { - properties[element.name3!] = PropertyInfo.fromElementInfo( + if (properties.containsKey(element.name!)) { + properties[element.name!] = PropertyInfo.fromElementInfo( _getElementInfo(element), - isGetter: true, isSetter: properties[element.name3!]!.isSetter); + isGetter: true, isSetter: properties[element.name!]!.isSetter); } else { - properties[element.name3!] = PropertyInfo.fromElementInfo( + properties[element.name!] = PropertyInfo.fromElementInfo( _getElementInfo(element), isGetter: true, isSetter: false); } } @override - void visitLabelElement(LabelElement2 element) { + void visitLabelElement(LabelElement element) { } @override - void visitLibraryElement(LibraryElement2 element) { + void visitLibraryElement(LibraryElement element) { } @override void visitLocalFunctionElement(LocalFunctionElement element) { - if (element.name3 == null) { + if (element.name == null) { throw UnsupportedError('Element does not have a name!'); } - functions[element.name3!] = _getElementInfo(element); + functions[element.name!] = _getElementInfo(element); } @override - void visitLocalVariableElement(LocalVariableElement2 element) { + void visitLocalVariableElement(LocalVariableElement element) { } @override - void visitMixinElement(MixinElement2 element) { + void visitMixinElement(MixinElement element) { } @override - void visitMultiplyDefinedElement(MultiplyDefinedElement2 element) { + void visitMultiplyDefinedElement(MultiplyDefinedElement element) { } @override - void visitPrefixElement(PrefixElement2 element) { + void visitPrefixElement(PrefixElement element) { } @@ -162,35 +162,35 @@ class NameofVisitor extends ElementVisitor2 { return; } - if (element.name3 == null) { + if (element.name == null) { throw UnsupportedError('Element does not have a name!'); } - if (properties.containsKey(element.name3!)) { - properties[element.name3!] = PropertyInfo.fromElementInfo( + if (properties.containsKey(element.name!)) { + properties[element.name!] = PropertyInfo.fromElementInfo( _getElementInfo(element), - isGetter: properties[element.name3!]!.isGetter, isSetter: true); + isGetter: properties[element.name!]!.isGetter, isSetter: true); } else { - properties[element.name3!] = PropertyInfo.fromElementInfo( + properties[element.name!] = PropertyInfo.fromElementInfo( _getElementInfo(element), isGetter: false, isSetter: true); } } @override - void visitSuperFormalParameterElement(SuperFormalParameterElement2 element) { + void visitSuperFormalParameterElement(SuperFormalParameterElement element) { } @override - void visitTopLevelVariableElement(TopLevelVariableElement2 element) { + void visitTopLevelVariableElement(TopLevelVariableElement element) { } @override - void visitTypeAliasElement(TypeAliasElement2 element) { + void visitTypeAliasElement(TypeAliasElement element) { } @override - void visitTypeParameterElement(TypeParameterElement2 element) { + void visitTypeParameterElement(TypeParameterElement element) { } @override diff --git a/packages/nameof/lib/src/util/element_extensions.dart b/packages/nameof/lib/src/util/element_extensions.dart index 01097d3..f203112 100644 --- a/packages/nameof/lib/src/util/element_extensions.dart +++ b/packages/nameof/lib/src/util/element_extensions.dart @@ -1,10 +1,10 @@ import 'package:analyzer/dart/constant/value.dart'; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:source_gen/source_gen.dart'; TypeChecker _typeChecker(final Type type) => TypeChecker.typeNamed(type); -extension AnnotationChecker on Element2 { +extension AnnotationChecker on Element { bool hasAnnotation(final Type type) { return _typeChecker(type).hasAnnotationOfExact(this); } diff --git a/packages/nameof/pubspec.yaml b/packages/nameof/pubspec.yaml index 543ac2d..6fa9483 100644 --- a/packages/nameof/pubspec.yaml +++ b/packages/nameof/pubspec.yaml @@ -1,13 +1,13 @@ name: nameof description: Generator for Dart class member's names, such as fields, properties, methods, constructors -version: 0.3.0 +version: 0.3.1 homepage: https://github.com/flankb/nameof environment: - sdk: ">=3.8.0 <4.0.0" + sdk: ">=3.9.0 <4.0.0" dependencies: - analyzer: ^8.1.1 + analyzer: ^10.0.0 build: ^4.0.4 source_gen: ^4.2.0 build_config: ^1.3.0 @@ -16,8 +16,8 @@ dependencies: dev_dependencies: - build_runner: ^2.10.5 + build_runner: ^2.12.2 build_test: ^3.5.10 - source_gen_test: ^1.3.2 + source_gen_test: ^1.3.4 lints: ^6.1.0 - test: ^1.29.0 + test: ^1.30.0 diff --git a/packages/nameof/test/integration/models.dart b/packages/nameof/test/integration/models.dart index fcc2d8c..1ccd847 100644 --- a/packages/nameof/test/integration/models.dart +++ b/packages/nameof/test/integration/models.dart @@ -2,6 +2,10 @@ import 'package:nameof_annotation/nameof_annotation.dart'; part 'models.nameof.dart'; +void main() { + +} + @nameof class BaseClass { final double price; diff --git a/packages/nameof_annotation/pubspec.yaml b/packages/nameof_annotation/pubspec.yaml index 610e28c..e838ae9 100644 --- a/packages/nameof_annotation/pubspec.yaml +++ b/packages/nameof_annotation/pubspec.yaml @@ -1,6 +1,6 @@ name: nameof_annotation description: Annotations for nameof package, that is Generator for Dart class member's names, such as fields, properties, methods, constructors -version: 0.3.0 +version: 0.3.1 homepage: https://github.com/flankb/nameof environment: