Index: lib/runtime/dart/_js_mirrors.js |
diff --git a/lib/runtime/dart/_js_mirrors.js b/lib/runtime/dart/_js_mirrors.js |
index 7488d5461cc5063c3732dd27f4fe923ad33fd2a3..030fc10a8231fc56e509aeff40c8f159b0e47569 100644 |
--- a/lib/runtime/dart/_js_mirrors.js |
+++ b/lib/runtime/dart/_js_mirrors.js |
@@ -132,11 +132,13 @@ dart_library.library('dart/_js_mirrors', null, /* Imports */[ |
return new JsInstanceMirror._(instance); |
} |
get superinterfaces() { |
- let interfaces = this[_cls][dart.implements]; |
- if (interfaces == null) { |
+ let interfaceThunk = this[_cls][dart.implements]; |
+ if (interfaceThunk == null) { |
return dart.list([], mirrors.ClassMirror); |
+ } else { |
+ let interfaces = dart.as(dart.dcall(interfaceThunk), core.List$(core.Type)); |
+ return interfaces[dartx.map](dart.fn(t => new JsClassMirror._(dart.as(t, core.Type)), JsClassMirror, [dart.dynamic]))[dartx.toList](); |
} |
- dart.throw(new core.UnimplementedError("ClassMirror.superinterfaces unimplemented")); |
} |
getField(fieldName) { |
return dart.throw(new core.UnimplementedError("ClassMirror.getField unimplemented")); |
@@ -186,7 +188,7 @@ dart_library.library('dart/_js_mirrors', null, /* Imports */[ |
return dart.throw(new core.UnimplementedError("ClassMirror.mixin unimplemented")); |
} |
get originalDeclaration() { |
- return dart.throw(new core.UnimplementedError("ClassMirror.originalDeclaration unimplemented")); |
+ return this; |
} |
get owner() { |
return dart.throw(new core.UnimplementedError("ClassMirror.owner unimplemented")); |
@@ -195,13 +197,17 @@ dart_library.library('dart/_js_mirrors', null, /* Imports */[ |
return dart.throw(new core.UnimplementedError("ClassMirror.qualifiedName unimplemented")); |
} |
get reflectedType() { |
- return dart.throw(new core.UnimplementedError("ClassMirror.reflectedType unimplemented")); |
+ return this[_cls]; |
} |
get staticMembers() { |
return dart.throw(new core.UnimplementedError("ClassMirror.staticMembers unimplemented")); |
} |
get superclass() { |
- return dart.throw(new core.UnimplementedError("ClassMirror.superclass unimplemented")); |
+ if (dart.equals(this[_cls], core.Object)) { |
+ return null; |
+ } else { |
+ return new JsClassMirror._(this[_cls].__proto__); |
+ } |
} |
get typeArguments() { |
return dart.throw(new core.UnimplementedError("ClassMirror.typeArguments unimplemented")); |
@@ -414,7 +420,7 @@ dart_library.library('dart/_js_mirrors', null, /* Imports */[ |
return dart.throw(new core.UnimplementedError("MethodMirror.location unimplemented")); |
} |
get metadata() { |
- return dart.throw(new core.UnimplementedError("MethodMirror.metadata unimplemented")); |
+ return dart.list([], mirrors.InstanceMirror); |
} |
get owner() { |
return dart.throw(new core.UnimplementedError("MethodMirror.owner unimplemented")); |