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

Unified Diff: dart/pkg/serialization/lib/src/mirrors_helpers.dart

Issue 23455028: Mirrors overhaul. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Merged with r29550. Created 7 years, 2 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: dart/pkg/serialization/lib/src/mirrors_helpers.dart
diff --git a/dart/pkg/serialization/lib/src/mirrors_helpers.dart b/dart/pkg/serialization/lib/src/mirrors_helpers.dart
index fe211aa485b7d2082af6adea5071a459b3d12a32..b36a1a914628ed50a06371fa7a93446cf49195d0 100644
--- a/dart/pkg/serialization/lib/src/mirrors_helpers.dart
+++ b/dart/pkg/serialization/lib/src/mirrors_helpers.dart
@@ -26,13 +26,13 @@ _getSuperclass(ClassMirror mirror) {
* fields.
*/
Iterable<VariableMirror> publicFields(ClassMirror mirror) {
- var mine = mirror.variables.values.where(
- (x) => !(x.isPrivate || x.isStatic));
+ var mine = mirror.declarations.values.where(
+ (x) => x is VariableMirror && !(x.isPrivate || x.isStatic));
var mySuperclass = _getSuperclass(mirror);
if (mySuperclass != null) {
return append(publicFields(mySuperclass), mine);
} else {
- return mine;
+ return new List<VariableMirror>.from(mine);
}
}
@@ -40,8 +40,8 @@ Iterable<VariableMirror> publicFields(ClassMirror mirror) {
* includes private fields, but excludes statics. */
bool hasField(Symbol name, ClassMirror mirror) {
if (name == null) return false;
- var field = mirror.variables[name];
- if (field != null && !field.isStatic) return true;
+ var field = mirror.declarations[name];
+ if (field is VariableMirror && !field.isStatic) return true;
var superclass = _getSuperclass(mirror);
if (superclass == null) return false;
return hasField(name, superclass);
@@ -52,20 +52,23 @@ bool hasField(Symbol name, ClassMirror mirror) {
* getters. Note that this allows private getters, but excludes statics.
*/
Iterable<MethodMirror> publicGetters(ClassMirror mirror) {
- var mine = mirror.getters.values.where((x) => !(x.isPrivate || x.isStatic));
+ var mine = mirror.declarations.values.where(
+ (x) => x is MethodMirror && x.isGetter && !(x.isPrivate || x.isStatic));
var mySuperclass = _getSuperclass(mirror);
if (mySuperclass != null) {
return append(publicGetters(mySuperclass), mine);
} else {
- return mine.toList();
+ return new List<MethodMirror>.from(mine);
}
}
/** Return true if the class has a getter named [name] */
bool hasGetter(Symbol name, ClassMirror mirror) {
if (name == null) return false;
- var getter = mirror.getters[name];
- if (getter != null && !getter.isStatic) return true;
+ var getter = mirror.declarations[name];
+ if (getter is MethodMirror && getter.isGetter && !getter.isStatic) {
+ return true;
+ }
var superclass = _getSuperclass(mirror);
if (superclass == null) return false;
return hasField(name, superclass);
@@ -76,9 +79,10 @@ bool hasGetter(Symbol name, ClassMirror mirror) {
* setters.
*/
Iterable<MethodMirror> publicGettersWithMatchingSetters(ClassMirror mirror) {
- var setters = mirror.setters;
+ var declarations = mirror.declarations;
return publicGetters(mirror).where((each) =>
- setters["${each.simpleName}="] != null);
+ // TODO(alanknight): Use new Symbol here?
+ declarations["${each.simpleName}="] != null);
}
/**
« no previous file with comments | « dart/pkg/serialization/lib/src/basic_rule.dart ('k') | dart/pkg/serialization/lib/src/serialization_rule.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698