| 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>();
|
|
|