Skip to content

Commit 5ad6437

Browse files
committed
fix getters included in mappable fields
1 parent 1a0a529 commit 5ad6437

4 files changed

Lines changed: 163 additions & 6 deletions

File tree

packages/dart_mappable/test/initializer/init_package_test.init.dart

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import 'package:dart_mappable/dart_mappable.dart';
2+
import 'package:test/test.dart';
3+
4+
part 'with_getters_test.mapper.dart';
5+
6+
@MappableClass()
7+
class ClassWithGetters with ClassWithGettersMappable {
8+
final String name;
9+
final int count;
10+
11+
ClassWithGetters(this.name, this.count);
12+
13+
String get message => 'Hello, $name!';
14+
bool get hasItems => count > 0;
15+
}
16+
17+
void main() {
18+
group('basic class with getters', () {
19+
test('encodes only fields', () {
20+
var obj = ClassWithGetters('Kilian', 3);
21+
expect(obj.toMap(), {'name': 'Kilian', 'count': 3});
22+
});
23+
});
24+
}

packages/dart_mappable/test/serialization/with_getters_test.mapper.dart

Lines changed: 133 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/dart_mappable_builder/lib/src/elements/class/class_mapper_element.dart

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -155,19 +155,17 @@ abstract class ClassMapperElement extends InterfaceMapperElement<ClassElement2>
155155
yield* extendsElement?._allFields ?? [];
156156

157157
for (var getter in element.getters2) {
158-
if (getter.isStatic) continue;
158+
if (getter.isStatic || getter.isSynthetic) continue;
159159

160-
if (getter.isPublic || fieldChecker.hasAnnotationOf(getter)) {
160+
if (fieldChecker.hasAnnotationOf(getter)) {
161161
yield getter.variable3!;
162162
}
163163
}
164164

165165
for (var field in element.fields2) {
166-
if (field.isStatic) continue;
166+
if (field.isStatic || field.isSynthetic) continue;
167167

168-
if (field.isPublic && field.isSynthetic) {
169-
yield field;
170-
} else if (fieldChecker.hasAnnotationOf(field)) {
168+
if (field.isPublic || fieldChecker.hasAnnotationOf(field)) {
171169
yield field;
172170
}
173171
}

0 commit comments

Comments
 (0)