Add demangle utility to Dartium's dart:html. Demangle typedef names in UserVisibleName.

BUG=http://dartbug.com/14892
R=asiva@google.com, vsm@google.com

Review URL: https://codereview.chromium.org//79023010

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30636 260f80e4-7a28-3924-810f-c04153c831b5
This commit is contained in:
rmacnak@google.com 2013-11-25 18:31:20 +00:00
parent c4c7825bbc
commit 314da361f0
5 changed files with 13 additions and 3 deletions

View file

@ -250,7 +250,7 @@ static RawInstance* CreateTypedefMirror(const Class& cls,
const Array& args = Array::Handle(Array::New(6));
args.SetAt(0, MirrorReference::Handle(MirrorReference::New(cls)));
args.SetAt(1, type);
args.SetAt(2, String::Handle(cls.UserVisibleName()));
args.SetAt(2, String::Handle(cls.Name()));
args.SetAt(3, Bool::Get(cls.NumTypeParameters() != 0));
args.SetAt(4, cls.NumTypeParameters() == 0 ? Bool::False() : is_declaration);
args.SetAt(5, owner_mirror);

View file

@ -1578,7 +1578,7 @@ RawString* Class::UserVisibleName() const {
case kExternalTypedDataFloat64ArrayCid:
return Symbols::Float64List().raw();
default:
if (!IsSignatureClass()) {
if (!IsCanonicalSignatureClass()) {
const String& name = String::Handle(Name());
return String::IdentifierPrettyName(name);
} else {

View file

@ -36896,6 +36896,11 @@ class _Utils {
static String addTrailingDot(String str) => '${str}.';
static String demangle(String str) {
var atPos = str.indexOf('@');
return atPos == -1 ? str : str.substring(0, atPos);
}
static bool isNoSuchMethodError(obj) => obj is NoSuchMethodError;
static bool _isBuiltinType(ClassMirror cls) {

View file

@ -7,7 +7,7 @@ library test;
import 'dart:mirrors';
import 'package:expect/expect.dart';
typedef int _F(int);
typedef int _F(int i);
class _C<_T> {
get g {}

View file

@ -387,6 +387,11 @@ class _Utils {
static String addTrailingDot(String str) => '${str}.';
static String demangle(String str) {
var atPos = str.indexOf('@');
return atPos == -1 ? str : str.substring(0, atPos);
}
static bool isNoSuchMethodError(obj) => obj is NoSuchMethodError;
static bool _isBuiltinType(ClassMirror cls) {