| Index: runtime/lib/mirrors_impl.dart
|
| diff --git a/runtime/lib/mirrors_impl.dart b/runtime/lib/mirrors_impl.dart
|
| index fd2d1d7589e477faa2d3b570dc560e1eaa2ceafd..ff7a0e2f61d06b1c0595902e705901145ff87073 100644
|
| --- a/runtime/lib/mirrors_impl.dart
|
| +++ b/runtime/lib/mirrors_impl.dart
|
| @@ -1075,11 +1075,34 @@ class _LocalLibraryMirror extends _LocalObjectMirror implements LibraryMirror {
|
| new _UnmodifiableMapView<Symbol, DeclarationMirror>(_members);
|
| }
|
|
|
| +
|
| + var _cachedTopLevelMembers;
|
| Map<Symbol, MethodMirror> get topLevelMembers {
|
| - throw new UnimplementedError(
|
| - 'LibraryMirror.topLevelMembers is not implemented');
|
| + 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 (decl is TypeMirror) {
|
| + // var getterName = decl.simpleName;
|
| + // result[getterName] = new _SyntheticTypeGetter(this, getterName, decl);
|
| + // }
|
| + });
|
| + return _cachedTopLevelMembers = result;
|
| }
|
|
|
| +
|
| Map<Symbol, Mirror> _cachedMembers;
|
| Map<Symbol, Mirror> get _members {
|
| if (_cachedMembers == null) {
|
|
|