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

Unified Diff: runtime/vm/object.cc

Issue 199363002: Rework library and class view pages. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: merge Created 6 years, 9 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 | « runtime/bin/vmservice/client/lib/src/service/service.dart ('k') | runtime/vm/service.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/object.cc
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index c098da3fde92bc9898d0d57de683bbaa740caa3b..380565bc664165f06ac37d35032b30488288b1c4 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -3773,37 +3773,79 @@ void Class::PrintToJSONStream(JSONStream* stream, bool ref) const {
jsobj.AddPropertyF("id", "classes/%" Pd "", id());
jsobj.AddProperty("name", internal_class_name);
jsobj.AddProperty("user_name", user_visible_class_name);
- if (!ref) {
- const Error& err = Error::Handle(EnsureIsFinalized(Isolate::Current()));
- if (!err.IsNull()) {
- jsobj.AddProperty("error", err);
- }
- jsobj.AddProperty("implemented", is_implemented());
- jsobj.AddProperty("abstract", is_abstract());
- jsobj.AddProperty("patch", is_patch());
- jsobj.AddProperty("finalized", is_finalized());
- jsobj.AddProperty("const", is_const());
- jsobj.AddProperty("super", Class::Handle(SuperClass()));
- jsobj.AddProperty("library", Object::Handle(library()));
- {
- JSONArray fields_array(&jsobj, "fields");
- const Array& field_array = Array::Handle(fields());
- Field& field = Field::Handle();
- if (!field_array.IsNull()) {
- for (intptr_t i = 0; i < field_array.Length(); ++i) {
- field ^= field_array.At(i);
- fields_array.AddValue(field);
+ if (ref) {
+ return;
+ }
+
+ const Error& err = Error::Handle(EnsureIsFinalized(Isolate::Current()));
+ if (!err.IsNull()) {
+ jsobj.AddProperty("error", err);
+ }
+ jsobj.AddProperty("implemented", is_implemented());
+ jsobj.AddProperty("abstract", is_abstract());
+ jsobj.AddProperty("patch", is_patch());
+ jsobj.AddProperty("finalized", is_finalized());
+ jsobj.AddProperty("const", is_const());
+ jsobj.AddProperty("super", Class::Handle(SuperClass()));
+ jsobj.AddProperty("library", Object::Handle(library()));
+ const Script& script = Script::Handle(this->script());
+ intptr_t line_number = 0;
+ intptr_t column_number = 0;
+ script.GetTokenLocation(token_pos(), &line_number, &column_number);
+ jsobj.AddProperty("script", script);
+ jsobj.AddProperty("line", line_number);
+ jsobj.AddProperty("col", column_number);
+ {
+ JSONArray interfaces_array(&jsobj, "interfaces");
+ const Array& interface_array = Array::Handle(interfaces());
+ Type& interface_type = Type::Handle();
+ Class& interface_cls = Class::Handle();
+ if (!interface_array.IsNull()) {
+ for (intptr_t i = 0; i < interface_array.Length(); ++i) {
+ // TODO(turnidge): Use the Type directly once regis has added
+ // types to the vmservice.
+ interface_type ^= interface_array.At(i);
+ if (interface_type.HasResolvedTypeClass()) {
+ interface_cls = interface_type.type_class();
+ interfaces_array.AddValue(interface_cls);
}
}
}
- {
- JSONArray functions_array(&jsobj, "functions");
- const Array& function_array = Array::Handle(functions());
- Function& function = Function::Handle();
- if (!function_array.IsNull()) {
- for (intptr_t i = 0; i < function_array.Length(); i++) {
- function ^= function_array.At(i);
- functions_array.AddValue(function);
+ }
+ {
+ JSONArray fields_array(&jsobj, "fields");
+ const Array& field_array = Array::Handle(fields());
+ Field& field = Field::Handle();
+ if (!field_array.IsNull()) {
+ for (intptr_t i = 0; i < field_array.Length(); ++i) {
+ field ^= field_array.At(i);
+ fields_array.AddValue(field);
+ }
+ }
+ }
+ {
+ JSONArray functions_array(&jsobj, "functions");
+ const Array& function_array = Array::Handle(functions());
+ Function& function = Function::Handle();
+ if (!function_array.IsNull()) {
+ for (intptr_t i = 0; i < function_array.Length(); i++) {
+ function ^= function_array.At(i);
+ functions_array.AddValue(function);
+ }
+ }
+ }
+ {
+ JSONArray subclasses_array(&jsobj, "subclasses");
+ const GrowableObjectArray& subclasses =
+ GrowableObjectArray::Handle(direct_subclasses());
+ if (!subclasses.IsNull()) {
+ Class& subclass = Class::Handle();
+ if (!subclasses.IsNull()) {
+ for (intptr_t i = 0; i < subclasses.Length(); ++i) {
+ // TODO(turnidge): Use the Type directly once regis has added
+ // types to the vmservice.
+ subclass ^= subclasses.At(i);
+ subclasses_array.AddValue(subclass);
}
}
}
@@ -6083,7 +6125,7 @@ const char* Function::ToCString() const {
void Function::PrintToJSONStream(JSONStream* stream, bool ref) const {
const char* internal_name = String::Handle(name()).ToCString();
const char* user_name =
- String::Handle(QualifiedUserVisibleName()).ToCString();
+ String::Handle(UserVisibleName()).ToCString();
Class& cls = Class::Handle(Owner());
ASSERT(!cls.IsNull());
Error& err = Error::Handle();
@@ -6112,9 +6154,15 @@ void Function::PrintToJSONStream(JSONStream* stream, bool ref) const {
jsobj.AddProperty("name", internal_name);
jsobj.AddProperty("user_name", user_name);
jsobj.AddProperty("class", cls);
+ const Function& parent = Function::Handle(parent_function());
+ if (!parent.IsNull()) {
+ jsobj.AddProperty("parent", parent);
+ }
const char* kind_string = Function::KindToCString(kind());
jsobj.AddProperty("kind", kind_string);
- if (ref) return;
+ if (ref) {
+ return;
+ }
jsobj.AddProperty("is_static", is_static());
jsobj.AddProperty("is_const", is_const());
jsobj.AddProperty("is_optimizable", is_optimizable());
@@ -8768,15 +8816,18 @@ const char* Library::ToCString() const {
void Library::PrintToJSONStream(JSONStream* stream, bool ref) const {
const char* library_name = String::Handle(name()).ToCString();
- const char* library_url = String::Handle(url()).ToCString();
intptr_t id = index();
ASSERT(id >= 0);
JSONObject jsobj(stream);
jsobj.AddProperty("type", JSONType(ref));
jsobj.AddPropertyF("id", "libraries/%" Pd "", id);
+ jsobj.AddProperty("user_name", library_name);
jsobj.AddProperty("name", library_name);
- jsobj.AddProperty("user_name", library_url);
- if (ref) return;
+ if (ref) {
+ return;
+ }
+ const char* library_url = String::Handle(url()).ToCString();
+ jsobj.AddProperty("url", library_url);
{
JSONArray jsarr(&jsobj, "classes");
ClassDictionaryIterator class_iter(*this);
@@ -8790,7 +8841,7 @@ void Library::PrintToJSONStream(JSONStream* stream, bool ref) const {
}
}
{
- JSONArray jsarr(&jsobj, "libraries");
+ JSONArray jsarr(&jsobj, "imports");
Library& lib = Library::Handle();
for (intptr_t i = 0; i < num_imports(); i++) {
lib = ImportLibraryAt(i);
« no previous file with comments | « runtime/bin/vmservice/client/lib/src/service/service.dart ('k') | runtime/vm/service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698