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

Unified Diff: dart/sdk/lib/_internal/lib/js_mirrors.dart

Issue 64033002: Version 0.8.10.8 (Closed) Base URL: http://dart.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 1 month 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
« no previous file with comments | « dart/sdk/lib/_internal/dartdoc/lib/dartdoc.dart ('k') | dart/sdk/lib/convert/utf.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dart/sdk/lib/_internal/lib/js_mirrors.dart
===================================================================
--- dart/sdk/lib/_internal/lib/js_mirrors.dart (revision 30037)
+++ dart/sdk/lib/_internal/lib/js_mirrors.dart (working copy)
@@ -204,6 +204,8 @@
String get _prettyName => 'TypeVariableMirror';
+ bool get isTopLevel => false;
+
TypeMirror get upperBound {
if (_cachedUpperBound != null) return _cachedUpperBound;
return _cachedUpperBound = typeMirrorFromRuntimeTypeRepresentation(
@@ -555,6 +557,16 @@
return result;
}
+Map<Symbol, MethodMirror> filterConstructors(methods) {
+ var result = new Map();
+ for (JsMethodMirror method in methods) {
+ if (method.isConstructor) {
+ result[method.simpleName] = method;
+ }
+ }
+ return result;
+}
+
Map<Symbol, MethodMirror> filterGetters(List<MethodMirror> methods,
Map<Symbol, VariableMirror> fields) {
var result = new Map();
@@ -571,7 +583,7 @@
}
Map<Symbol, MethodMirror> filterSetters(List<MethodMirror> methods,
- Map<Symbol, VariableMirror> fields) {
+ Map<Symbol, VariableMirror> fields) {
var result = new Map();
for (JsMethodMirror method in methods) {
if (method.isSetter) {
@@ -587,6 +599,24 @@
return result;
}
+Map<Symbol, Mirror> filterMembers(List<MethodMirror> methods,
+ Map<Symbol, VariableMirror> variables) {
+ Map<Symbol, Mirror> result = new Map.from(variables);
+ for (JsMethodMirror method in methods) {
+ if (method.isSetter) {
+ String name = n(method.simpleName);
+ name = name.substring(0, name.length - 1);
+ // Filter-out setters corresponding to variables.
+ if (result[s(name)] is VariableMirror) continue;
+ }
+ // Constructors aren't 'members'.
+ if (method.isConstructor) continue;
+ // Use putIfAbsent to filter-out getters corresponding to variables.
+ result.putIfAbsent(method.simpleName, () => method);
+ }
+ return result;
+}
+
int counter = 0;
ClassMirror reflectMixinApplication(mixinNames, String mangledName) {
@@ -861,6 +891,9 @@
String _typeArguments;
UnmodifiableListView<TypeMirror> _cachedTypeArguments;
+ UnmodifiableMapView<Symbol, DeclarationMirror> _cachedDeclarations;
+ UnmodifiableMapView<Symbol, DeclarationMirror> _cachedMembers;
+ UnmodifiableMapView<Symbol, MethodMirror> _cachedConstructors;
Map<Symbol, VariableMirror> _cachedVariables;
Map<Symbol, MethodMirror> _cachedGetters;
Map<Symbol, MethodMirror> _cachedSetters;
@@ -927,8 +960,6 @@
return _cachedTypeArguments = new UnmodifiableListView(result);
}
- Map<Symbol, MethodMirror> get constructors => _class.constructors;
-
List<JsMethodMirror> get _methods {
if (_cachedMethods != null) return _cachedMethods;
return _cachedMethods =_class._getMethodsWithOwner(this);
@@ -940,6 +971,13 @@
filterMethods(_methods));
}
+ Map<Symbol, MethodMirror> get constructors {
+ if (_cachedConstructors != null) return _cachedConstructors;
+ return _cachedConstructors =
+ new UnmodifiableMapView<Symbol, MethodMirror>(
+ filterConstructors(_methods));
+ }
+
Map<Symbol, MethodMirror> get getters {
if (_cachedGetters != null) return _cachedGetters;
return _cachedGetters = new UnmodifiableMapView<Symbol, MethodMirror>(
@@ -962,8 +1000,23 @@
new UnmodifiableMapView<Symbol, VariableMirror>(result);
}
- Map<Symbol, Mirror> get members => _class.members;
+ Map<Symbol, DeclarationMirror> get members {
+ if (_cachedMembers != null) return _cachedMembers;
+ return _cachedMembers = new UnmodifiableMapView<Symbol, DeclarationMirror>(
+ filterMembers(_methods, variables));
+ }
+ Map<Symbol, DeclarationMirror> get declarations {
+ if (_cachedDeclarations != null) return _cachedDeclarations;
+ Map<Symbol, DeclarationMirror> result =
+ new Map<Symbol, DeclarationMirror>();
+ result.addAll(members);
+ result.addAll(constructors);
+ typeVariables.forEach((tv) => result[tv.simpleName] = tv);
+ return _cachedDeclarations =
+ new UnmodifiableMapView<Symbol, DeclarationMirror>(result);
+ }
+
InstanceMirror setField(Symbol fieldName, Object arg) {
return _class.setField(fieldName, arg);
}
@@ -1068,14 +1121,9 @@
Map<Symbol, MethodMirror> get constructors {
if (_cachedConstructors != null) return _cachedConstructors;
- var result = new Map();
- for (JsMethodMirror method in _methods) {
- if (method.isConstructor) {
- result[method.simpleName] = method;
- }
- }
return _cachedConstructors =
- new UnmodifiableMapView<Symbol, MethodMirror>(result);
+ new UnmodifiableMapView<Symbol, MethodMirror>(
+ filterConstructors(_methods));
}
List<JsMethodMirror> _getMethodsWithOwner(DeclarationMirror methodOwner) {
@@ -1189,20 +1237,8 @@
Map<Symbol, Mirror> get members {
if (_cachedMembers != null) return _cachedMembers;
- Map<Symbol, Mirror> result = new Map.from(variables);
- for (JsMethodMirror method in _methods) {
- if (method.isSetter) {
- String name = n(method.simpleName);
- name = name.substring(0, name.length - 1);
- // Filter-out setters corresponding to variables.
- if (result[s(name)] is VariableMirror) continue;
- }
- // Constructors aren't 'members'.
- if (method.isConstructor) continue;
- // Use putIfAbsent to filter-out getters corresponding to variables.
- result.putIfAbsent(method.simpleName, () => method);
- }
- return _cachedMembers = new UnmodifiableMapView<Symbol, Mirror>(result);
+ return _cachedMembers = new UnmodifiableMapView<Symbol, Mirror>(
+ filterMembers(_methods, variables));
}
Map<Symbol, DeclarationMirror> get declarations {
« no previous file with comments | « dart/sdk/lib/_internal/dartdoc/lib/dartdoc.dart ('k') | dart/sdk/lib/convert/utf.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698