| Index: vm/dart_api_impl.cc
|
| ===================================================================
|
| --- vm/dart_api_impl.cc (revision 10396)
|
| +++ vm/dart_api_impl.cc (working copy)
|
| @@ -77,81 +77,7 @@
|
| } \
|
| } while (0)
|
|
|
| -// Takes a vm internal name and makes it suitable for external user.
|
| -//
|
| -// Examples:
|
| -//
|
| -// Internal getter and setter prefices are removed:
|
| -//
|
| -// get:foo -> foo
|
| -// set:foo -> foo
|
| -//
|
| -// Private name mangling is removed, possibly twice:
|
| -//
|
| -// _ReceivePortImpl@6be832b -> _ReceivePortImpl
|
| -// _ReceivePortImpl@6be832b._internal@6be832b -> +ReceivePortImpl._internal
|
| -//
|
| -// The trailing . on the default constructor name is dropped:
|
| -//
|
| -// List. -> List
|
| -//
|
| -// And so forth:
|
| -//
|
| -// get:foo@6be832b -> foo
|
| -// _MyClass@6b3832b. -> _MyClass
|
| -// _MyClass@6b3832b.named -> _MyClass.named
|
| -//
|
| -static RawString* IdentifierPrettyName(Isolate* isolate, const String& name) {
|
| - intptr_t len = name.Length();
|
| - intptr_t start = 0;
|
| - intptr_t at_pos = len; // Position of '@' in the name.
|
| - intptr_t dot_pos = len; // Position of '.' in the name.
|
|
|
| - for (int i = 0; i < name.Length(); i++) {
|
| - if (name.CharAt(i) == ':') {
|
| - ASSERT(start == 0);
|
| - start = i + 1;
|
| - } else if (name.CharAt(i) == '@') {
|
| - ASSERT(at_pos == len);
|
| - at_pos = i;
|
| - } else if (name.CharAt(i) == '.') {
|
| - dot_pos = i;
|
| - break;
|
| - }
|
| - }
|
| - intptr_t limit = (at_pos < dot_pos ? at_pos : dot_pos);
|
| - if (start == 0 && limit == len) {
|
| - // This name is fine as it is.
|
| - return name.raw();
|
| - }
|
| -
|
| - String& result = String::Handle(isolate);
|
| - result = String::SubString(name, start, (limit - start));
|
| -
|
| - // Look for a second '@' now to correctly handle names like
|
| - // "_ReceivePortImpl@6be832b._internal@6be832b".
|
| - at_pos = len;
|
| - for (int i = dot_pos; i < name.Length(); i++) {
|
| - if (name.CharAt(i) == '@') {
|
| - ASSERT(at_pos == len);
|
| - at_pos = i;
|
| - }
|
| - }
|
| -
|
| - intptr_t suffix_len = at_pos - dot_pos;
|
| - if (suffix_len <= 1) {
|
| - // The constructor name is of length 0 or 1. That means that
|
| - // either this isn't a constructor or that this is an unnamed
|
| - // constructor. In either case, we're done.
|
| - return result.raw();
|
| - }
|
| -
|
| - const String& suffix =
|
| - String::Handle(isolate, String::SubString(name, dot_pos, suffix_len));
|
| - return String::Concat(result, suffix);
|
| -}
|
| -
|
| -
|
| // Return error if isolate is in an inconsistent state.
|
| // Return NULL when no error condition exists.
|
| //
|
| @@ -2483,8 +2409,7 @@
|
| if (cls.IsNull()) {
|
| RETURN_TYPE_ERROR(isolate, clazz, Class);
|
| }
|
| - const String& cls_name = String::Handle(isolate, cls.Name());
|
| - return Api::NewHandle(isolate, IdentifierPrettyName(isolate, cls_name));
|
| + return Api::NewHandle(isolate, cls.UserVisibleName());
|
| }
|
|
|
|
|
| @@ -2591,12 +2516,6 @@
|
| }
|
|
|
|
|
| -static RawString* AddExternalSetterSuffix(const String& name) {
|
| - const String& equals = String::Handle(Symbols::New("="));
|
| - return String::Concat(name, equals);
|
| -}
|
| -
|
| -
|
| static RawString* RemoveExternalSetterSuffix(const String& name) {
|
| ASSERT(HasExternalSetterSuffix(name));
|
| return String::SubString(name, 0, name.Length() - 1);
|
| @@ -2632,13 +2551,7 @@
|
| continue;
|
| }
|
|
|
| - name = func.name();
|
| - bool is_setter = Field::IsSetterName(name);
|
| - name = IdentifierPrettyName(isolate, name);
|
| -
|
| - if (is_setter) {
|
| - name = AddExternalSetterSuffix(name);
|
| - }
|
| + name = func.UserVisibleName();
|
| names.Add(name);
|
| }
|
| }
|
| @@ -2650,12 +2563,7 @@
|
| obj = it.GetNext();
|
| if (obj.IsFunction()) {
|
| func ^= obj.raw();
|
| - name = func.name();
|
| - bool is_setter = Field::IsSetterName(name);
|
| - name = IdentifierPrettyName(isolate, name);
|
| - if (is_setter) {
|
| - name = AddExternalSetterSuffix(name);
|
| - }
|
| + name = func.UserVisibleName();
|
| names.Add(name);
|
| }
|
| }
|
| @@ -2763,14 +2671,7 @@
|
| if (func.IsNull()) {
|
| RETURN_TYPE_ERROR(isolate, function, Function);
|
| }
|
| - String& func_name = String::Handle(isolate);
|
| - func_name = func.name();
|
| - bool is_setter = Field::IsSetterName(func_name);
|
| - func_name = IdentifierPrettyName(isolate, func_name);
|
| - if (is_setter) {
|
| - func_name = AddExternalSetterSuffix(func_name);
|
| - }
|
| - return Api::NewHandle(isolate, func_name.raw());
|
| + return Api::NewHandle(isolate, func.UserVisibleName());
|
| }
|
|
|
|
|
| @@ -2939,8 +2840,7 @@
|
| if (!field_array.IsNull()) {
|
| for (intptr_t i = 0; i < field_array.Length(); ++i) {
|
| field ^= field_array.At(i);
|
| - name = field.name();
|
| - name = IdentifierPrettyName(isolate, name);
|
| + name = field.UserVisibleName();
|
| names.Add(name);
|
| }
|
| }
|
| @@ -2952,8 +2852,7 @@
|
| obj = it.GetNext();
|
| if (obj.IsField()) {
|
| field ^= obj.raw();
|
| - name = field.name();
|
| - name = IdentifierPrettyName(isolate, name);
|
| + name = field.UserVisibleName();
|
| names.Add(name);
|
| }
|
| }
|
| @@ -3004,8 +2903,7 @@
|
| if (var.IsNull()) {
|
| RETURN_TYPE_ERROR(isolate, variable, Field);
|
| }
|
| - const String& var_name = String::Handle(var.name());
|
| - return Api::NewHandle(isolate, IdentifierPrettyName(isolate, var_name));
|
| + return Api::NewHandle(isolate, var.UserVisibleName());
|
| }
|
|
|
|
|
| @@ -4018,8 +3916,7 @@
|
| // TODO(turnidge): Add this to the unit test.
|
| const Function& signature_func = Function::Handle(cls.signature_function());
|
| if (signature_func.IsNull()) {
|
| - name = cls.Name();
|
| - name = IdentifierPrettyName(isolate, name);
|
| + name = cls.UserVisibleName();
|
| names.Add(name);
|
| }
|
| }
|
|
|