diff --git a/share/qtcreator/debugger/creatortypes.py b/share/qtcreator/debugger/creatortypes.py index 207625718e00f29da4c8ccc6c757cc23060babf3..29efb46728dbb629776fdb24e25a2d669525e44a 100644 --- a/share/qtcreator/debugger/creatortypes.py +++ b/share/qtcreator/debugger/creatortypes.py @@ -30,6 +30,21 @@ from dumper import * +def stripTypeName(value): + type = value.type + try: + type = type.target() + except: + pass + return str(type.unqualified()) + +def extractPointerType(d, value): + postfix = "" + while stripTypeName(value) == "CPlusPlus::PointerType": + postfix += "*" + value = d.downcast(value["_elementType"]["_type"]) + return readLiteral(d, value["_name"]) + postfix + def readTemplateName(d, value): name = readLiteral(d, value["_identifier"]) + "<" args = value["_templateArguments"] @@ -39,12 +54,7 @@ def readTemplateName(d, value): for i in range(size): if i > 0: name += ", " - typeVal = d.downcast(start[i]["_type"]) - postfix = "" - while str(typeVal.type.target().unqualified()) == "CPlusPlus::PointerType": - postfix += "*" - typeVal = d.downcast(typeVal["_elementType"]["_type"]) - name += readLiteral(d, typeVal["_name"]) + postfix + name += extractPointerType(d, d.downcast(start[i]["_type"])) name += ">" return name @@ -126,6 +136,10 @@ def qdump__CPlusPlus__NamedType(d, value): d.putBetterType(value.type) d.putPlainChildren(value) +def qdump__CPlusPlus__PointerType(d, value): + d.putValue(d.hexencode(extractPointerType(d, value)), Hex2EncodedLatin1) + d.putPlainChildren(value) + def qdump__CPlusPlus__TemplateNameId(d, value): dumpLiteral(d, value) d.putBetterType(value.type)