Debugger: Re-enable access to dumper.Value by integral index

Task-number: QTCREATORBUG-17220
Change-Id: I63632a90e2518151b3bf20b1241c24f9808ec39c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2016-11-03 10:36:23 +01:00
parent beec36c7d3
commit 77bd581f49
3 changed files with 19 additions and 0 deletions

View File

@@ -2862,6 +2862,9 @@ class DumperBase:
elif isinstance(index, self.dumper.Field):
field = index
elif self.dumper.isInt(index):
if self.type.code in (TypeCodeArray, TypeCodePointer):
itemAddress = self.laddress + int(index) * self.type.ltarget.size()
return self.dumper.createValue(itemAddress, self.type.ltarget)
return self.members(False)[index]
else:
error('BAD INDEX TYPE %s' % type(index))

View File

@@ -315,3 +315,14 @@ def qdump__WTF__String(d, value):
charSize = 2
d.putCharArrayHelper(bufferPtr, stringLength, charSize)
#######################################################################
#
# Internal test
#
#######################################################################
def qdump__QtcDumperTest_FieldAccessByIndex(d, value):
d.putValue(value["d"][2].integer())

View File

@@ -6239,6 +6239,11 @@ void tst_Dumpers::dumper_data()
+ Check("v15", "\"utf16\"", "@QJSValue (QString)")
+ Check("v15.1", "[1]", "116", "@QChar");
QTest::newRow("Internal1")
<< Data("struct QtcDumperTest_FieldAccessByIndex { int d[3] = { 10, 11, 12 }; };\n",
"QtcDumperTest_FieldAccessByIndex d; unused(&d);\n")
+ Check("d", "12", "QtcDumperTest_FieldAccessByIndex");
#if 0
#ifdef Q_OS_LINUX
// Hint: To open a failing test in Creator, do: