| Index: runtime/lib/mirrors_impl.dart
|
| diff --git a/runtime/lib/mirrors_impl.dart b/runtime/lib/mirrors_impl.dart
|
| index 17e5d43247ef3afac9f2d29dd05789d46398a8df..3bfc2a550707ff5d404763db1b97843cf8d214ba 100644
|
| --- a/runtime/lib/mirrors_impl.dart
|
| +++ b/runtime/lib/mirrors_impl.dart
|
| @@ -9,11 +9,10 @@ import "dart:collection";
|
| final emptyList = new UnmodifiableListView([]);
|
| final emptyMap = new _UnmodifiableMapView({});
|
|
|
| -// Copied from js_mirrors, in turn copied from the package
|
| -// "unmodifiable_collection".
|
| // TODO(14314): Move to dart:collection.
|
| class _UnmodifiableMapView<K, V> implements Map<K, V> {
|
| - Map<K, V> _source;
|
| + Map<K, V> _source;
|
| +
|
| _UnmodifiableMapView(Map<K, V> source) : _source = source;
|
|
|
| static void _throw() {
|
| @@ -21,38 +20,25 @@ class _UnmodifiableMapView<K, V> implements Map<K, V> {
|
| }
|
|
|
| int get length => _source.length;
|
| -
|
| bool get isEmpty => _source.isEmpty;
|
| -
|
| bool get isNotEmpty => _source.isNotEmpty;
|
| -
|
| V operator [](K key) => _source[key];
|
| -
|
| bool containsKey(K key) => _source.containsKey(key);
|
| -
|
| bool containsValue(V value) => _source.containsValue(value);
|
| -
|
| void forEach(void f(K key, V value)) => _source.forEach(f);
|
| -
|
| Iterable<K> get keys => _source.keys;
|
| -
|
| Iterable<V> get values => _source.values;
|
| -
|
| void operator []=(K key, V value) => _throw();
|
| -
|
| V putIfAbsent(K key, V ifAbsent()) { _throw(); }
|
| -
|
| void addAll(Map<K, V> other) => _throw();
|
| -
|
| V remove(K key) { _throw(); }
|
| -
|
| void clear() => _throw();
|
| }
|
|
|
| class _InternalMirrorError {
|
| + final String _msg;
|
| const _InternalMirrorError(String this._msg);
|
| String toString() => _msg;
|
| - final String _msg;
|
| }
|
|
|
| Map _filterMap(Map<Symbol, dynamic> old_map, bool filter(Symbol key, value)) {
|
| @@ -120,17 +106,16 @@ String _makeSignatureString(TypeMirror returnType,
|
| }
|
|
|
| List _metadata(reflectee)
|
| - native 'DeclarationMirror_metadata';
|
| + native 'DeclarationMirror_metadata';
|
|
|
| class _LocalMirrorSystem extends MirrorSystem {
|
| - // Change parameter back to "this.libraries" when native code is changed.
|
| + final Map<Uri, LibraryMirror> libraries;
|
| + final IsolateMirror isolate;
|
| +
|
| _LocalMirrorSystem(List<LibraryMirror> libraries, this.isolate)
|
| : this.libraries = new Map<Uri, LibraryMirror>.fromIterable(
|
| libraries, key: (e) => e.uri);
|
|
|
| - final Map<Uri, LibraryMirror> libraries;
|
| - final IsolateMirror isolate;
|
| -
|
| TypeMirror _dynamicType = null;
|
| TypeMirror get dynamicType {
|
| if (_dynamicType == null) {
|
| @@ -153,18 +138,19 @@ class _LocalMirrorSystem extends MirrorSystem {
|
| abstract class _LocalMirror implements Mirror {}
|
|
|
| class _LocalIsolateMirror extends _LocalMirror implements IsolateMirror {
|
| - _LocalIsolateMirror (this.debugName, this.rootLibrary);
|
| -
|
| final String debugName;
|
| - final bool isCurrent = true;
|
| final LibraryMirror rootLibrary;
|
|
|
| + _LocalIsolateMirror(this.debugName, this.rootLibrary);
|
| +
|
| + bool get isCurrent => true;
|
| +
|
| String toString() => "IsolateMirror on '$debugName'";
|
| }
|
|
|
| class _InvocationTrampoline implements Function {
|
| - ObjectMirror _receiver;
|
| - Symbol _selector;
|
| + final ObjectMirror _receiver;
|
| + final Symbol _selector;
|
| _InvocationTrampoline(this._receiver, this._selector);
|
| noSuchMethod(Invocation msg) {
|
| if (msg.memberName != #call) return super.noSuchMethod(msg);
|
| @@ -175,14 +161,13 @@ class _InvocationTrampoline implements Function {
|
| }
|
|
|
| abstract class _LocalObjectMirror extends _LocalMirror implements ObjectMirror {
|
| - _LocalObjectMirror(this._reflectee);
|
| -
|
| final _reflectee; // May be a MirrorReference or an ordinary object.
|
|
|
| + _LocalObjectMirror(this._reflectee);
|
| +
|
| InstanceMirror invoke(Symbol memberName,
|
| List positionalArguments,
|
| [Map<Symbol, dynamic> namedArguments]) {
|
| -
|
| int numPositionalArguments = positionalArguments.length;
|
| int numNamedArguments = namedArguments != null ? namedArguments.length : 0;
|
| int numArguments = numPositionalArguments + numNamedArguments;
|
| @@ -198,21 +183,15 @@ abstract class _LocalObjectMirror extends _LocalMirror implements ObjectMirror {
|
| });
|
| }
|
|
|
| - return reflect(this._invoke(_reflectee,
|
| - _n(memberName),
|
| - arguments,
|
| - names));
|
| + return reflect(this._invoke(_reflectee, _n(memberName), arguments, names));
|
| }
|
|
|
| InstanceMirror getField(Symbol memberName) {
|
| - return reflect(this._invokeGetter(_reflectee,
|
| - _n(memberName)));
|
| + return reflect(this._invokeGetter(_reflectee, _n(memberName)));
|
| }
|
|
|
| InstanceMirror setField(Symbol memberName, Object value) {
|
| - this._invokeSetter(_reflectee,
|
| - _n(memberName),
|
| - value);
|
| + this._invokeSetter(_reflectee, _n(memberName), value);
|
| return reflect(value);
|
| }
|
| }
|
| @@ -303,10 +282,7 @@ class _LocalInstanceMirror extends _LocalObjectMirror
|
| });
|
| }
|
|
|
| - return reflect(this._invoke(_reflectee,
|
| - _n(memberName),
|
| - arguments,
|
| - names));
|
| + return reflect(this._invoke(_reflectee, _n(memberName), arguments, names));
|
| }
|
|
|
| _invoke(reflectee, functionName, arguments, argumentNames)
|
| @@ -399,6 +375,14 @@ class _LocalClosureMirror extends _LocalInstanceMirror
|
|
|
| class _LocalClassMirror extends _LocalObjectMirror
|
| implements ClassMirror {
|
| + final Type _reflectedType;
|
| + Symbol _simpleName;
|
| + DeclarationMirror _owner;
|
| + final bool _isGeneric;
|
| + final bool _isMixinAlias;
|
| + final bool _isGenericDeclaration;
|
| + Type _instantiator;
|
| +
|
| _LocalClassMirror(reflectee,
|
| reflectedType,
|
| String simpleName,
|
| @@ -411,11 +395,6 @@ class _LocalClassMirror extends _LocalObjectMirror
|
| this._instantiator = reflectedType,
|
| super(reflectee);
|
|
|
| - final Type _reflectedType;
|
| - final bool _isGeneric;
|
| - final bool _isMixinAlias;
|
| - final bool _isGenericDeclaration;
|
| - Type _instantiator;
|
|
|
| bool get hasReflectedType => !_isGenericDeclaration;
|
| Type get reflectedType {
|
| @@ -426,7 +405,6 @@ class _LocalClassMirror extends _LocalObjectMirror
|
| return _reflectedType;
|
| }
|
|
|
| - Symbol _simpleName;
|
| Symbol get simpleName {
|
| // All but anonymous mixin applications have their name set at construction.
|
| if(_simpleName == null) {
|
| @@ -443,7 +421,6 @@ class _LocalClassMirror extends _LocalObjectMirror
|
| return _qualifiedName;
|
| }
|
|
|
| - var _owner;
|
| DeclarationMirror get owner {
|
| if (_owner == null) {
|
| _owner = _library(_reflectee);
|
| @@ -816,11 +793,11 @@ class _LocalFunctionTypeMirror extends _LocalClassMirror
|
|
|
| abstract class _LocalDeclarationMirror extends _LocalMirror
|
| implements DeclarationMirror {
|
| - _LocalDeclarationMirror(this._reflectee, this._simpleName);
|
| -
|
| final _reflectee;
|
| -
|
| Symbol _simpleName;
|
| +
|
| + _LocalDeclarationMirror(this._reflectee, this._simpleName);
|
| +
|
| Symbol get simpleName => _simpleName;
|
|
|
| Symbol _qualifiedName = null;
|
| @@ -862,8 +839,7 @@ class _LocalTypeVariableMirror extends _LocalDeclarationMirror
|
|
|
| bool get isPrivate => false;
|
| bool get isStatic => false;
|
| -
|
| - final bool isTopLevel = false;
|
| + bool get isTopLevel => false;
|
|
|
| SourceLocation get location {
|
| throw new UnimplementedError(
|
| @@ -906,6 +882,10 @@ class _LocalTypeVariableMirror extends _LocalDeclarationMirror
|
|
|
| class _LocalTypedefMirror extends _LocalDeclarationMirror
|
| implements TypedefMirror {
|
| + final Type _reflectedType;
|
| + final bool _isGeneric;
|
| + final bool _isGenericDeclaration;
|
| +
|
| _LocalTypedefMirror(reflectee,
|
| this._reflectedType,
|
| String simpleName,
|
| @@ -914,10 +894,6 @@ class _LocalTypedefMirror extends _LocalDeclarationMirror
|
| this._owner)
|
| : super(reflectee, _s(simpleName));
|
|
|
| - final Type _reflectedType;
|
| - final bool _isGeneric;
|
| - final bool _isGenericDeclaration;
|
| -
|
| bool get isTopLevel => true;
|
| bool get isPrivate => false;
|
|
|
| @@ -992,6 +968,9 @@ class _LocalTypedefMirror extends _LocalDeclarationMirror
|
|
|
| class _LocalLibraryMirror extends _LocalObjectMirror
|
| implements LibraryMirror {
|
| + final Symbol simpleName;
|
| + final Uri uri;
|
| +
|
| _LocalLibraryMirror(reflectee,
|
| String simpleName,
|
| String url)
|
| @@ -999,19 +978,13 @@ class _LocalLibraryMirror extends _LocalObjectMirror
|
| this.uri = Uri.parse(url),
|
| super(reflectee);
|
|
|
| - final Symbol simpleName;
|
| -
|
| // The simple name and the qualified name are the same for a library.
|
| Symbol get qualifiedName => simpleName;
|
|
|
| - // Always null for libraries.
|
| - final DeclarationMirror owner = null;
|
| -
|
| - // Always false for libraries.
|
| - final bool isPrivate = false;
|
| + DeclarationMirror get owner => null;
|
|
|
| - // Always false for libraries.
|
| - final bool isTopLevel = false;
|
| + bool get isPrivate => false;
|
| + bool get isTopLevel => false;
|
|
|
| Type get _instantiator => null;
|
|
|
| @@ -1019,8 +992,6 @@ class _LocalLibraryMirror extends _LocalObjectMirror
|
| throw new UnimplementedError('LibraryMirror.location is not implemented');
|
| }
|
|
|
| - final Uri uri;
|
| -
|
| Map<Symbol, DeclarationMirror> _declarations;
|
| Map<Symbol, DeclarationMirror> get declarations {
|
| if (_declarations != null) return _declarations;
|
| @@ -1125,6 +1096,20 @@ class _LocalLibraryMirror extends _LocalObjectMirror
|
|
|
| class _LocalMethodMirror extends _LocalDeclarationMirror
|
| implements MethodMirror {
|
| + final bool isStatic;
|
| + final bool isAbstract;
|
| + final bool isGetter;
|
| + final bool isSetter;
|
| + final bool isConstructor;
|
| + final bool isConstConstructor;
|
| + final bool isGenerativeConstructor;
|
| + final bool isRedirectingConstructor;
|
| + final bool isFactoryConstructor;
|
| + final bool isOperator;
|
| +
|
| + static const _operators = const ["%", "&", "*", "+", "-", "/", "<", "<<",
|
| + "<=", "==", ">", ">=", ">>", "[]", "[]=", "^", "|", "~", "unary-", "~/"];
|
| +
|
| _LocalMethodMirror(reflectee,
|
| String simpleName,
|
| this._owner,
|
| @@ -1140,20 +1125,6 @@ class _LocalMethodMirror extends _LocalDeclarationMirror
|
| : this.isOperator = _operators.contains(simpleName),
|
| super(reflectee, _s(simpleName));
|
|
|
| - static const _operators = const ["%", "&", "*", "+", "-", "/", "<", "<<",
|
| - "<=", "==", ">", ">=", ">>", "[]", "[]=", "^", "|", "~", "unary-", "~/"];
|
| -
|
| - final bool isStatic;
|
| - final bool isAbstract;
|
| - final bool isGetter;
|
| - final bool isSetter;
|
| - final bool isConstructor;
|
| - final bool isConstConstructor;
|
| - final bool isGenerativeConstructor;
|
| - final bool isRedirectingConstructor;
|
| - final bool isFactoryConstructor;
|
| - final bool isOperator;
|
| -
|
| DeclarationMirror _owner;
|
| DeclarationMirror get owner {
|
| // For nested closures it is possible, that the mirror for the owner has not
|
| @@ -1167,7 +1138,7 @@ class _LocalMethodMirror extends _LocalDeclarationMirror
|
| bool get isPrivate => _n(simpleName).startsWith('_') ||
|
| _n(constructorName).startsWith('_');
|
|
|
| - bool get isTopLevel => owner is LibraryMirror;
|
| + bool get isTopLevel => owner is LibraryMirror;
|
|
|
| SourceLocation get location {
|
| throw new UnimplementedError('MethodMirror.location is not implemented');
|
| @@ -1260,6 +1231,11 @@ class _LocalMethodMirror extends _LocalDeclarationMirror
|
|
|
| class _LocalVariableMirror extends _LocalDeclarationMirror
|
| implements VariableMirror {
|
| + final DeclarationMirror owner;
|
| + final bool isStatic;
|
| + final bool isFinal;
|
| + final bool isConst;
|
| +
|
| _LocalVariableMirror(reflectee,
|
| String simpleName,
|
| this.owner,
|
| @@ -1269,11 +1245,6 @@ class _LocalVariableMirror extends _LocalDeclarationMirror
|
| this.isConst)
|
| : super(reflectee, _s(simpleName));
|
|
|
| - final DeclarationMirror owner;
|
| - final bool isStatic;
|
| - final bool isFinal;
|
| - final bool isConst;
|
| -
|
| bool get isPrivate => _n(simpleName).startsWith('_');
|
|
|
| bool get isTopLevel => owner is LibraryMirror;
|
| @@ -1302,6 +1273,11 @@ class _LocalVariableMirror extends _LocalDeclarationMirror
|
|
|
| class _LocalParameterMirror extends _LocalVariableMirror
|
| implements ParameterMirror {
|
| + final int _position;
|
| + final bool isOptional;
|
| + final bool isNamed;
|
| + final List _unmirroredMetadata;
|
| +
|
| _LocalParameterMirror(reflectee,
|
| String simpleName,
|
| DeclarationMirror owner,
|
| @@ -1320,11 +1296,6 @@ class _LocalParameterMirror extends _LocalVariableMirror
|
| false // Not const.
|
| );
|
|
|
| - final int _position;
|
| - final bool isOptional;
|
| - final bool isNamed;
|
| - final List _unmirroredMetadata;
|
| -
|
| Object _defaultValueReflectee;
|
| InstanceMirror _defaultValue;
|
| InstanceMirror get defaultValue {
|
| @@ -1367,13 +1338,16 @@ class _LocalParameterMirror extends _LocalVariableMirror
|
|
|
| class _SpecialTypeMirror extends _LocalMirror
|
| implements TypeMirror, DeclarationMirror {
|
| + final Symbol simpleName;
|
| +
|
| _SpecialTypeMirror(String name) : simpleName = _s(name);
|
|
|
| - final bool isPrivate = false;
|
| - final DeclarationMirror owner = null;
|
| - final Symbol simpleName;
|
| - final bool isTopLevel = true;
|
| - final List<InstanceMirror> metadata = emptyList;
|
| + bool get isPrivate => false;
|
| + bool get isTopLevel => true;
|
| +
|
| + DeclarationMirror get owner => null;
|
| +
|
| + List<InstanceMirror> get metadata => emptyList;
|
|
|
| List<TypeVariableMirror> get typeVariables => emptyList;
|
| List<TypeMirror> get typeArguments => emptyList;
|
|
|