Chromium Code Reviews| Index: lib/src/observable_transform.dart |
| diff --git a/lib/src/observable_transform.dart b/lib/src/observable_transform.dart |
| index 938b4da9a573a858a8f9e4905de3fb60c13e130d..397f92c828d1a6422cf03138b2bee147d7f630e9 100644 |
| --- a/lib/src/observable_transform.dart |
| +++ b/lib/src/observable_transform.dart |
| @@ -86,6 +86,36 @@ void transformClass(ClassDeclaration cls, TextEditTransaction code, |
| _getSpan(file, cls)); |
| } |
| + var declaresObservable = false; |
| + if (cls.extendsClause != null) { |
| + var id = cls.extendsClause.superclass.name; |
| + if (id is PrefixedIdentifier) { |
|
Jennifer Messerly
2013/07/30 00:56:12
it's only used in 2 places but this might be a goo
Siggi Cherem (dart-lang)
2013/07/30 23:32:04
Done.
|
| + id = id.identifier; |
| + } |
| + if (id.name == "ObservableBase") { |
| + code.edit(id.offset, id.end, "ChangeNotifierBase"); |
| + declaresObservable = true; |
| + } else if (id.name == "ChangeNotifierBase") { |
| + declaresObservable = true; |
| + } |
| + } |
| + if (!declaresObservable && cls.withClause != null) { |
| + for (var type in cls.withClause.mixinTypes) { |
| + var id = type.name; |
| + if (id is PrefixedIdentifier) { |
| + id = id.identifier; |
| + } |
| + if (id.name == "ObservableMixin") { |
| + code.edit(id.offset, id.end, "ChangeNotifierMixin"); |
| + declaresObservable = true; |
| + break; |
| + } else if (id.name == "ChangeNotifierMixin") { |
| + declaresObservable = true; |
| + break; |
| + } |
| + } |
| + } |
| + |
| // Track fields that were transformed. |
| var instanceFields = new Set<String>(); |
| var getters = new List<String>(); |
| @@ -103,6 +133,13 @@ void transformClass(ClassDeclaration cls, TextEditTransaction code, |
| continue; |
| } |
| if (hasObservable(member)) { |
| + if (!declaresObservable) { |
|
Jennifer Messerly
2013/07/30 00:56:12
I'm not sure this warning is correct. What if Obse
Siggi Cherem (dart-lang)
2013/07/30 23:32:04
Good point. Since we are not going to do a type an
Jennifer Messerly
2013/07/31 00:59:51
Hmm, sounds a little better, but I get nervous any
Siggi Cherem (dart-lang)
2013/07/31 01:39:17
good ideas, I'll think more about them. For now I
|
| + messages.warning('Observable fields should be put in an observable' |
| + ' objects. Please declare that this class extends from ' |
| + 'ObservableBase or includes ObservableMixin.', |
| + _getSpan(file, member)); |
| + |
| + } |
| transformFields(member.fields, code, member.offset, member.end); |
| var names = member.fields.variables.map((v) => v.name.name); |