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

Unified Diff: runtime/lib/mirrors_impl.dart

Issue 21010005: Ensure FunctionTypeMirrors have a proper reflectee and implement ClassMirror.superinterfaces with i… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: 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
« no previous file with comments | « runtime/lib/mirrors.cc ('k') | runtime/vm/bootstrap_natives.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/lib/mirrors_impl.dart
===================================================================
--- runtime/lib/mirrors_impl.dart (revision 25568)
+++ runtime/lib/mirrors_impl.dart (working copy)
@@ -125,12 +125,13 @@
final Map<String, FunctionTypeMirror> _functionTypes;
FunctionTypeMirror _lookupFunctionTypeMirror(
+ reflectee,
TypeMirror returnType,
List<ParameterMirror> parameters) {
var sigString = _makeSignatureString(returnType, parameters);
var mirror = _functionTypes[sigString];
if (mirror == null) {
- mirror = new _LocalFunctionTypeMirrorImpl(null,
+ mirror = new _LocalFunctionTypeMirrorImpl(reflectee,
sigString,
returnType,
parameters);
@@ -396,11 +397,6 @@
implements ClassMirror {
_LocalClassMirrorImpl(reflectee,
String simpleName,
- this.isClass,
- this._owner,
- this._superclass,
- this._superinterfaces,
- this._defaultFactory,
Map<String, Mirror> typeVariables)
: this._simpleName = _s(simpleName),
this.typeVariables = _convertStringToSymbolMap(typeVariables),
@@ -429,9 +425,6 @@
if (_owner == null) {
_owner = _library(_reflectee);
}
- if (_owner is! Mirror) {
- _owner = _owner.resolve(mirrors);
- }
return _owner;
}
@@ -444,7 +437,10 @@
'ClassMirror.location is not implemented');
}
- final bool isClass;
+ // TODO(rmacnak): Remove these left-overs from the days of separate interfaces
+ // once we send out a breaking change.
+ bool get isClass => true;
+ ClassMirror get defaultFactory => null;
var _superclass;
ClassMirror get superclass {
@@ -464,25 +460,13 @@
var _superinterfaces;
List<ClassMirror> get superinterfaces {
- if (_superinterfaces.length > 0 &&
- _superinterfaces[0] is! Mirror) {
- List<ClassMirror> resolved = new List<ClassMirror>();
- for (int i = 0; i < _superinterfaces.length; i++) {
- resolved.add(_superinterfaces[i].resolve(mirrors));
- }
- _superinterfaces = resolved;
+ if (_superinterfaces == null) {
+ _superinterfaces = _interfaces(_reflectee)
+ .map((i) => reflectClass(i)).toList(growable:false);
}
return _superinterfaces;
}
- var _defaultFactory;
- ClassMirror get defaultFactory {
- if (_defaultFactory != null && _defaultFactory is! Mirror) {
- _defaultFactory = _defaultFactory.resolve(mirrors);
- }
- return _defaultFactory;
- }
-
Map<Symbol, Mirror> _members;
Map<Symbol, Mirror> get members {
@@ -560,8 +544,7 @@
}
String toString() {
- String prettyName = isClass ? 'ClassMirror' : 'TypeMirror';
- return "$prettyName on '${_n(simpleName)}'";
+ return "ClassMirror on '${_n(simpleName)}'";
}
InstanceMirror newInstance(Symbol constructorName,
@@ -609,6 +592,9 @@
static _supertype(reflectee)
native "ClassMirror_supertype";
+ static _interfaces(reflectee)
+ native "ClassMirror_interfaces";
+
_computeMembers(reflectee)
native "ClassMirror_members";
@@ -629,13 +615,15 @@
}
class _LazyFunctionTypeMirror {
- _LazyFunctionTypeMirror(this.returnType, this.parameters) {}
+ _LazyFunctionTypeMirror(this.reflectee, this.returnType, this.parameters) {}
ClassMirror resolve(MirrorSystem mirrors) {
- return mirrors._lookupFunctionTypeMirror(returnType.resolve(mirrors),
+ return mirrors._lookupFunctionTypeMirror(reflectee,
+ returnType.resolve(mirrors),
parameters);
}
+ final reflectee;
final returnType;
final List<ParameterMirror> parameters;
}
@@ -648,11 +636,6 @@
this.parameters)
: super(reflectee,
simpleName,
- true,
- null,
- new _LazyTypeMirror('dart:core', 'Object'),
- [ new _LazyTypeMirror('dart:core', 'Function') ],
- null,
const {});
Map<Symbol, Mirror> get members => new Map<Symbol,Mirror>();
« no previous file with comments | « runtime/lib/mirrors.cc ('k') | runtime/vm/bootstrap_natives.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698