From 7768b906b7ecd175baedc24a968538c9f71f8f1e Mon Sep 17 00:00:00 2001 From: Tobe O Date: Wed, 27 Jun 2018 01:51:21 -0400 Subject: [PATCH] Fix const bug2 --- angel_serialize_generator/CHANGELOG.md | 4 ++++ angel_serialize_generator/lib/model.dart | 3 ++- angel_serialize_generator/pubspec.yaml | 2 +- angel_serialize_generator/test/book_test.dart | 4 ++++ angel_serialize_generator/test/models/author.dart | 2 ++ 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/angel_serialize_generator/CHANGELOG.md b/angel_serialize_generator/CHANGELOG.md index 910e94b1..e58ce976 100644 --- a/angel_serialize_generator/CHANGELOG.md +++ b/angel_serialize_generator/CHANGELOG.md @@ -1,3 +1,7 @@ +# 2.0.8+2 +* Better discern when custom methods disqualify classes +from `const` protection. + # 2.0.8+1 * Fix generation of `const` constructors with iterables. diff --git a/angel_serialize_generator/lib/model.dart b/angel_serialize_generator/lib/model.dart index ad7cd81c..fbc008e9 100644 --- a/angel_serialize_generator/lib/model.dart +++ b/angel_serialize_generator/lib/model.dart @@ -68,7 +68,8 @@ class JsonModelGenerator extends GeneratorForAnnotation { bool shouldBeConstant(BuildContext ctx) { // Check if all fields are without a getter return !isAssignableToModel(ctx.clazz.type) && - ctx.clazz.fields.every((f) => f.getter == null || f.setter == null); + ctx.clazz.fields.every((f) => + f.getter?.isAbstract != false && f.setter?.isAbstract != false); } /// Generate a constructor with named parameters. diff --git a/angel_serialize_generator/pubspec.yaml b/angel_serialize_generator/pubspec.yaml index ee7b98d1..f820122b 100644 --- a/angel_serialize_generator/pubspec.yaml +++ b/angel_serialize_generator/pubspec.yaml @@ -1,5 +1,5 @@ name: angel_serialize_generator -version: 2.0.8+1 +version: 2.0.8+2 description: Model serialization generators, designed for use with Angel. Combine with angel_serialize for flexible modeling. author: Tobe O homepage: https://github.com/angel-dart/serialize diff --git a/angel_serialize_generator/test/book_test.dart b/angel_serialize_generator/test/book_test.dart index 6f0011c2..044312b9 100644 --- a/angel_serialize_generator/test/book_test.dart +++ b/angel_serialize_generator/test/book_test.dart @@ -91,6 +91,10 @@ main() { expect(library.copyWith(), library); }); + test('custom method', () { + expect(jkRowling.customMethod, 'hey!'); + }); + test('required fields fromMap', () { expect(() => AuthorSerializer.fromMap({}), throwsFormatException); }); diff --git a/angel_serialize_generator/test/models/author.dart b/angel_serialize_generator/test/models/author.dart index c3b7f437..ec955612 100644 --- a/angel_serialize_generator/test/models/author.dart +++ b/angel_serialize_generator/test/models/author.dart @@ -15,6 +15,8 @@ abstract class _Author extends Model { @required String get name; + String get customMethod => 'hey!'; + @Required('Custom message for missing `age`') int get age;