diff --git a/share/qtcreator/dumper/dumper.py b/share/qtcreator/dumper/dumper.py index 5a43b347e2c23c84bda9beeea5fac1fe16922de7..edf67da3d4c3fb75716f6d4e18ff7a4e96359b93 100644 --- a/share/qtcreator/dumper/dumper.py +++ b/share/qtcreator/dumper/dumper.py @@ -1689,8 +1689,18 @@ class Dumper: nsStrippedType = self.stripNamespaceFromType(dtypeName)\ .replace("::", "__") - # The following line is only needed for D: - #nsStrippedType = nsStrippedType.replace(" ", "__") + + # The following block is only needed for D. + if nsStrippedType.startswith("_A"): + # DMD v2.058 encodes string[] as _Array_uns long long. + # With spaces. + if nsStrippedType.startswith("_Array_"): + qdump_Array(self, value) + return + if nsStrippedType.startswith("_AArray_"): + qdump_AArray(self, value) + return + #warn(" STRIPPED: %s" % nsStrippedType) #warn(" DUMPERS: %s" % (nsStrippedType in qqDumpers)) if nsStrippedType in qqDumpers: diff --git a/share/qtcreator/dumper/qttypes.py b/share/qtcreator/dumper/qttypes.py index b216ce33d07a72359dd8416b034b1c4bb7b34f1d..96bdea80d48b29ad8dc48e93d938ef5aaf2cdffa 100644 --- a/share/qtcreator/dumper/qttypes.py +++ b/share/qtcreator/dumper/qttypes.py @@ -2379,29 +2379,42 @@ def qdump__Eigen__Matrix(d, value): # ####################################################################### +def cleanDType(type): + return stripClassTag(str(type)).replace("uns long long", "string") -def qdump___Array_char(d, value): +def qdump_Array(d, value): n = value["length"] p = value["ptr"] + t = cleanDType(value.type)[7:] d.putAddress(value.address) - d.putType("char[%d]" % n) - d.putValue(encodeCharArray(p, 100), Hex2EncodedLocal8Bit) - d.putNumChild(0) + d.putType("%s[%d]" % (t, n)) + if t == "char": + d.putValue(encodeCharArray(p, 100), Hex2EncodedLocal8Bit) + d.putNumChild(0) + else: + d.putValue(" ") + d.putNumChild(n) + innerType = p.type + if d.isExpanded(): + with Children(d, n, childType=innerType): + for i in range(0, n): + d.putSubItem(i, p.dereference()) + p = p + 1 -# DMD v2.058 encodes string[] as _Array_uns long long. With spaces. -def qdump___Array_uns__long__long(d, value): - n = value["length"] + +def qdump_AArray(d, value): + #n = value["length"] + # This ends up as _AArray_<key>_<value> with a single .ptr + # member of type void *. Not much that can be done here. p = value["ptr"] + t = cleanDType(value.type)[8:] d.putAddress(value.address) - d.putType("string[%d]" % n) + d.putType("%s]" % t.replace("_", "[")) d.putValue(" ") - d.putNumChild(n) - innerType = p.type + d.putNumChild(1) if d.isExpanded(): - with Children(d, n, childType=innerType): - for i in range(0, n): - d.putSubItem(i, p.dereference()) - p = p + 1 + with Children(d, 1): + d.putSubItem("ptr", p) #######################################################################