@@ -120,11 +120,13 @@ class JsClassMirror implements ClassMirror {
120
120
}
121
121
122
122
List <ClassMirror > get superinterfaces {
123
- var interfaces = JS ('Function' , '#[dart.implements]' , _cls);
124
- if (interfaces == null ) {
123
+ var interfaceThunk = JS ('Function' , '#[dart.implements]' , _cls);
124
+ if (interfaceThunk == null ) {
125
125
return [];
126
+ } else {
127
+ List <Type > interfaces = interfaceThunk ();
128
+ return interfaces.map ((t) => new JsClassMirror ._(t)).toList ();
126
129
}
127
- throw new UnimplementedError ("ClassMirror.superinterfaces unimplemented" );
128
130
}
129
131
130
132
// TODO(vsm): Implement
@@ -159,18 +161,25 @@ class JsClassMirror implements ClassMirror {
159
161
throw new UnimplementedError ("ClassMirror.location unimplemented" );
160
162
ClassMirror get mixin =>
161
163
throw new UnimplementedError ("ClassMirror.mixin unimplemented" );
162
- TypeMirror get originalDeclaration => throw new UnimplementedError (
163
- "ClassMirror.originalDeclaration unimplemented" );
164
+ TypeMirror get originalDeclaration {
165
+ // TODO(vsm): Handle generic case. How should we represent an original
166
+ // declaration for a generic class?
167
+ return this ;
168
+ }
164
169
DeclarationMirror get owner =>
165
170
throw new UnimplementedError ("ClassMirror.owner unimplemented" );
166
171
Symbol get qualifiedName =>
167
172
throw new UnimplementedError ("ClassMirror.qualifiedName unimplemented" );
168
- Type get reflectedType =>
169
- throw new UnimplementedError ("ClassMirror.reflectedType unimplemented" );
173
+ Type get reflectedType { return _cls; }
170
174
Map <Symbol , MethodMirror > get staticMembers =>
171
175
throw new UnimplementedError ("ClassMirror.staticMembers unimplemented" );
172
- ClassMirror get superclass =>
173
- throw new UnimplementedError ("ClassMirror.superclass unimplemented" );
176
+ ClassMirror get superclass {
177
+ if (_cls == Object ) {
178
+ return null ;
179
+ } else {
180
+ return new JsClassMirror ._(JS ('Type' , '#.__proto__' , _cls));
181
+ }
182
+ }
174
183
List <TypeMirror > get typeArguments =>
175
184
throw new UnimplementedError ("ClassMirror.typeArguments unimplemented" );
176
185
List <TypeVariableMirror > get typeVariables =>
@@ -329,8 +338,10 @@ class JsMethodMirror implements MethodMirror {
329
338
throw new UnimplementedError ("MethodMirror.isTopLevel unimplemented" );
330
339
SourceLocation get location =>
331
340
throw new UnimplementedError ("MethodMirror.location unimplemented" );
332
- List <InstanceMirror > get metadata =>
333
- throw new UnimplementedError ("MethodMirror.metadata unimplemented" );
341
+ List <InstanceMirror > get metadata {
342
+ // TODO(vsm): Parse and store method metadata
343
+ return < InstanceMirror > [];
344
+ }
334
345
DeclarationMirror get owner =>
335
346
throw new UnimplementedError ("MethodMirror.owner unimplemented" );
336
347
Symbol get qualifiedName =>
0 commit comments