Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(244)

Unified Diff: lib/src/observable_transform.dart

Issue 20863002: Introduce boot.js: this finally makes it possible to load and run Todomvc (Closed) Base URL: git@github.com:dart-lang/web-ui.git@master
Patch Set: review comments, fixed build.dart Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
« lib/src/emitters.dart ('K') | « lib/src/emitters.dart ('k') | pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698