Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(375)

Unified Diff: runtime/lib/mirrors.cc

Issue 21010005: Ensure FunctionTypeMirrors have a proper reflectee and implement ClassMirror.superinterfaces with i… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | runtime/lib/mirrors_impl.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/lib/mirrors.cc
===================================================================
--- runtime/lib/mirrors.cc (revision 25568)
+++ runtime/lib/mirrors.cc (working copy)
@@ -291,6 +291,7 @@
}
Dart_Handle args[] = {
+ CreateMirrorReference(target),
CreateLazyMirror(return_type),
CreateParameterMirrorListUsingApi(sig),
};
@@ -327,36 +328,6 @@
}
-static Dart_Handle CreateImplementsList(Dart_Handle intf) {
- intptr_t len = 0;
- Dart_Handle result = Dart_ClassGetInterfaceCount(intf, &len);
- if (Dart_IsError(result)) {
- return result;
- }
-
- Dart_Handle mirror_list = Dart_NewList(len);
- if (Dart_IsError(mirror_list)) {
- return mirror_list;
- }
-
- for (intptr_t i = 0; i < len; i++) {
- Dart_Handle interface = Dart_ClassGetInterfaceAt(intf, i);
- if (Dart_IsError(interface)) {
- return interface;
- }
- Dart_Handle mirror = CreateLazyMirror(interface);
- if (Dart_IsError(mirror)) {
- return mirror;
- }
- Dart_Handle result = Dart_ListSetAt(mirror_list, i, mirror);
- if (Dart_IsError(result)) {
- return result;
- }
- }
- return mirror_list;
-}
-
-
static Dart_Handle CreateTypeVariableMirrorUsingApi(Dart_Handle type_var,
Dart_Handle type_var_name,
Dart_Handle owner_mirror) {
@@ -508,10 +479,6 @@
return type;
}
- Dart_Handle super_class = Dart_Null();
- // TODO(turnidge): Simplify code, now that default classes have been removed.
- Dart_Handle default_class = Dart_Null();
-
Dart_Handle intf_mirror = CreateLazyMirror(intf);
if (Dart_IsError(intf_mirror)) {
return intf_mirror;
@@ -524,11 +491,6 @@
Dart_Handle args[] = {
CreateMirrorReference(intf),
Dart_Null(), // "name"
- Dart_NewBoolean(Dart_IsClass(intf)),
- lib_mirror,
- super_class,
- CreateImplementsList(intf),
- CreateLazyMirror(default_class),
type_var_map,
};
Dart_Handle mirror = Dart_New(type, Dart_Null(), ARRAY_SIZE(args), args);
@@ -970,6 +932,20 @@
return klass.super_type();
}
+
+DEFINE_NATIVE_ENTRY(ClassMirror_interfaces, 1) {
+ GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(0));
+ const Class& klass = Class::Handle(ref.GetClassReferent());
+
+ const Error& error = Error::Handle(klass.EnsureIsFinalized(isolate));
+ if (!error.IsNull()) {
+ ThrowInvokeError(error);
+ }
+
+ return klass.interfaces();
+}
+
+
DEFINE_NATIVE_ENTRY(ClassMirror_members, 2) {
GET_NON_NULL_NATIVE_ARGUMENT(Instance,
owner_mirror,
« no previous file with comments | « no previous file | runtime/lib/mirrors_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698