summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
Diffstat (limited to 'share')
-rw-r--r--share/qtcreator/debugger/boosttypes.py9
-rw-r--r--share/qtcreator/debugger/dumper.py7
-rw-r--r--share/qtcreator/debugger/gdbbridge.py3
3 files changed, 18 insertions, 1 deletions
diff --git a/share/qtcreator/debugger/boosttypes.py b/share/qtcreator/debugger/boosttypes.py
index ccd88b3864..e61d1e4bb8 100644
--- a/share/qtcreator/debugger/boosttypes.py
+++ b/share/qtcreator/debugger/boosttypes.py
@@ -140,3 +140,12 @@ def qdump__boost__unordered__unordered_set(d, value):
yield val
p = d.extractPointer(buckets + bucketCount * d.ptrSize())
d.putItems(size, children(p), maxNumChild = 10000)
+
+
+def qdump__boost__variant(d, value):
+ allTypes = value.type.templateArguments()
+ realType = allTypes[value.split('i')[0]]
+ alignment = max([t.alignment() for t in allTypes])
+ dummy, val = value.split('%is{%s}' % (max(4, alignment), realType.name))
+ d.putItem(val)
+ d.putBetterType(value.type)
diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py
index c03f07d9e9..663015e77d 100644
--- a/share/qtcreator/debugger/dumper.py
+++ b/share/qtcreator/debugger/dumper.py
@@ -522,6 +522,9 @@ class DumperBase:
return baseType # Override in backends.
def listTemplateParameters(self, typename):
+ return self.listTemplateParametersManually(typename)
+
+ def listTemplateParametersManually(self, typename):
targs = []
if not typename.endswith('>'):
return targs
@@ -573,6 +576,10 @@ class DumperBase:
if item.find('.') > -1:
res.append(float(item))
else:
+ if item.endswith('l'):
+ item = item[:-1]
+ if item.endswith('u'):
+ item = item[:-1]
val = toInteger(item)
if val > 0x80000000:
val -= 0x100000000
diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py
index 70c8beaad4..90b76ef61a 100644
--- a/share/qtcreator/debugger/gdbbridge.py
+++ b/share/qtcreator/debugger/gdbbridge.py
@@ -382,7 +382,8 @@ class Dumper(DumperBase):
else:
error('UNKNOWN TEMPLATE PARAMETER')
pos += 1
- return targs
+ targs2 = self.listTemplateParametersManually(str(nativeType))
+ return targs if len(targs) >= len(targs2) else targs2
def nativeTypeEnumDisplay(self, nativeType, intval):
try: