| Index: runtime/lib/mirrors_impl.dart
|
| diff --git a/runtime/lib/mirrors_impl.dart b/runtime/lib/mirrors_impl.dart
|
| index 81bd6bcde4505a2b5e0d0bce6118c596f2f224cd..7a337304068e4ec82e16bfa2bbc5b2286a68145b 100644
|
| --- a/runtime/lib/mirrors_impl.dart
|
| +++ b/runtime/lib/mirrors_impl.dart
|
| @@ -222,6 +222,7 @@ class _SyntheticSetterParameter implements ParameterMirror {
|
| bool get isPrivate => false;
|
| bool get hasDefaultValue => false;
|
| InstanceMirror get defaultValue => null;
|
| + List<InstanceMirror> get metadata => emptyList;
|
| }
|
|
|
| abstract class _LocalObjectMirror extends _LocalMirror implements ObjectMirror {
|
| @@ -581,7 +582,8 @@ class _LocalClassMirror extends _LocalObjectMirror
|
| }
|
| }
|
| });
|
| - _cachedStaticMembers = result;
|
| + _cachedStaticMembers =
|
| + new _UnmodifiableMapView<Symbol, MethodMirror>(result);
|
| }
|
| return _cachedStaticMembers;
|
| }
|
| @@ -609,7 +611,8 @@ class _LocalClassMirror extends _LocalObjectMirror
|
| }
|
| }
|
| });
|
| - _cachedInstanceMembers = result;
|
| + _cachedInstanceMembers =
|
| + new _UnmodifiableMapView<Symbol, MethodMirror>(result);
|
| }
|
| return _cachedInstanceMembers;
|
| }
|
| @@ -1080,28 +1083,27 @@ class _LocalLibraryMirror extends _LocalObjectMirror implements LibraryMirror {
|
|
|
| var _cachedTopLevelMembers;
|
| Map<Symbol, MethodMirror> get topLevelMembers {
|
| - if (_cachedTopLevelMembers != null) return _cachedTopLevelMembers;
|
| - var result = new Map<Symbol, MethodMirror>();
|
| - declarations.values.forEach((decl) {
|
| - if (decl is MethodMirror && !decl.isAbstract) {
|
| - result[decl.simpleName] = decl;
|
| - }
|
| - if (decl is VariableMirror) {
|
| - var getterName = decl.simpleName;
|
| - result[getterName] =
|
| - new _SyntheticAccessor(this, getterName, true, true, true, decl);
|
| - if (!decl.isFinal) {
|
| - var setterName = _asSetter(decl.simpleName, this);
|
| - result[setterName] = new _SyntheticAccessor(
|
| - this, setterName, false, true, true, decl);
|
| + if (_cachedTopLevelMembers == null) {
|
| + var result = new Map<Symbol, MethodMirror>();
|
| + declarations.values.forEach((decl) {
|
| + if (decl is MethodMirror && !decl.isAbstract) {
|
| + result[decl.simpleName] = decl;
|
| }
|
| - }
|
| - // if (decl is TypeMirror) {
|
| - // var getterName = decl.simpleName;
|
| - // result[getterName] = new _SyntheticTypeGetter(this, getterName, decl);
|
| - // }
|
| - });
|
| - return _cachedTopLevelMembers = result;
|
| + if (decl is VariableMirror) {
|
| + var getterName = decl.simpleName;
|
| + result[getterName] =
|
| + new _SyntheticAccessor(this, getterName, true, true, true, decl);
|
| + if (!decl.isFinal) {
|
| + var setterName = _asSetter(decl.simpleName, this);
|
| + result[setterName] = new _SyntheticAccessor(
|
| + this, setterName, false, true, true, decl);
|
| + }
|
| + }
|
| + });
|
| + _cachedTopLevelMembers =
|
| + new _UnmodifiableMapView<Symbol, MethodMirror>(result);
|
| + }
|
| + return _cachedTopLevelMembers;
|
| }
|
|
|
|
|
|
|