Skip to content

Commit 66e7078

Browse files
committed
Merge pull request #1 from davidmorgan/minor-fixes
Fix error message for missing builder class. Allow non-abstract getters, don't count them as fields.
2 parents be574c2 + 3ff5444 commit 66e7078

File tree

6 files changed

+24
-14
lines changed

6 files changed

+24
-14
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## 0.0.2
4+
5+
- Fix error message for missing builder class.
6+
- Allow non-abstract getters in value class.
7+
38
## 0.0.1
49

510
- Generator, tests and example.

built_value/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: built_value
2-
version: 0.0.1
2+
version: 0.0.2
33
description: >
44
Value types with builders. This library is the runtime dependency.
55
authors:

built_value_generator/lib/built_value_generator.dart

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class BuiltValueGenerator extends Generator {
2020
return null;
2121
}
2222
final classElement = element as ClassElement;
23+
final className = classElement.displayName;
2324

2425
// TODO(davidmorgan): more exact type check.
2526
if (!classElement.allSupertypes
@@ -39,7 +40,7 @@ class BuiltValueGenerator extends Generator {
3940
final errors = concat([
4041
checkPart(classElement),
4142
checkValueClass(classElement),
42-
checkBuilderClass(builderClassElement),
43+
checkBuilderClass(className, builderClassElement),
4344
checkFields(fields, builderFields),
4445
]);
4546

@@ -49,7 +50,7 @@ class BuiltValueGenerator extends Generator {
4950
todo: errors.join(' '));
5051
}
5152

52-
return generateCode(classElement.displayName, fields, builderFields);
53+
return generateCode(className, fields, builderFields);
5354
}
5455

5556
Iterable<String> checkPart(ClassElement classElement) {
@@ -91,9 +92,10 @@ class BuiltValueGenerator extends Generator {
9192
return result;
9293
}
9394

94-
Iterable<String> checkBuilderClass(ClassElement classElement) {
95+
Iterable<String> checkBuilderClass(
96+
String className, ClassElement classElement) {
9597
if (classElement == null) {
96-
return <String>['Add abstract class ValueBuilder'];
98+
return <String>['Add abstract class ${className}Builder'];
9799
}
98100

99101
final result = <String>[];
@@ -128,7 +130,8 @@ class BuiltValueGenerator extends Generator {
128130
List<FieldElement> getFields(ClassElement classElement) {
129131
final result = <FieldElement>[];
130132
for (final field in classElement.fields) {
131-
if (!field.isStatic) result.add(field);
133+
if (!field.isStatic && field.getter.isAbstract ||
134+
field.getter.isSynthetic) result.add(field);
132135
}
133136
return result;
134137
}
@@ -148,13 +151,15 @@ class BuiltValueGenerator extends Generator {
148151
Iterable<FieldElement> fields, Iterable<FieldElement> builderFields) {
149152
final result = <String>[];
150153
var checkFieldTypes = true;
154+
151155
for (final field in fields) {
152156
final fieldName = field.displayName;
153-
if (field.getter == null || !field.getter.isAbstract) {
157+
if (field.getter == null || field.getter.isSynthetic) {
154158
checkFieldTypes = false;
155-
result.add('Make field $fieldName an abstract getter');
159+
result.add('Make field $fieldName a getter');
156160
}
157161
}
162+
158163
for (final field in builderFields) {
159164
final fieldName = field.displayName;
160165
if (field.getter == null ||

built_value_generator/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: built_value_generator
2-
version: 0.0.1
2+
version: 0.0.2
33
description: >
44
Value types with builders. This library is the dev dependency.
55
authors:
@@ -12,7 +12,7 @@ environment:
1212
dependencies:
1313
analyzer: '>=0.26.1 <1.0.0'
1414
built_collection: '^1.0.0'
15-
built_value: '^0.0.1'
15+
built_value: '^0.0.2'
1616
source_gen: '>=0.4.3 <1.0.0'
1717
quiver: '>=0.21.0 <0.22.0'
1818

built_value_generator/test/built_value_generator_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ abstract class ValueBuilder extends Builder<Value, ValueBuilder> {
141141
factory ValueBuilder() = _\$ValueBuilder;
142142
int foo;
143143
}'''),
144-
contains("TODO: Make field foo an abstract getter"));
144+
contains("TODO: Make field foo a getter"));
145145
});
146146

147147
test('suggests builder fields must be getters', () async {

example/pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: example
2-
version: 0.0.1
2+
version: 0.0.2
33
description: >
44
Just an example, not for publishing.
55
authors:
@@ -11,8 +11,8 @@ environment:
1111

1212
dependencies:
1313
built_collection: '^1.0.0'
14-
built_value: '^0.0.1'
14+
built_value: '^0.0.2'
1515

1616
dev_dependencies:
17-
built_value_generator: '^0.0.1'
17+
built_value_generator: '^0.0.2'
1818
test: any

0 commit comments

Comments
 (0)