Debugger: Adapt QVariant dumper and tests to Qt 6

Task-number: QTCREATORBUG-24098
Change-Id: I9543bad098bb11d21079c1e2711b639bde3873b7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2020-12-01 09:40:20 +01:00
parent 6c14b4dfaf
commit 25a89250f6
2 changed files with 46 additions and 6 deletions

View File

@@ -1997,7 +1997,49 @@ qdumpHelper_QVariants_F = [
def qdump__QVariant(d, value):
(data, typeStuff) = d.split('8sI', value)
if d.qtVersion() >= 0x060000:
qdumpHelper__QVariant6(d, value)
else:
qdumpHelper__QVariant45(d, value)
def qdumpHelper__QVariant6(d, value):
data, typeStuff = d.split('24sp', value)
packedType = typeStuff >> 2
metaTypeInterface = typeStuff - (typeStuff & 3)
if metaTypeInterface == 0:
qdumpHelper_QVariant_0(d, value)
return
revision, alignment, size, flags, variantType, metaObjectPtr, name = \
d.split('HHIIIpp', metaTypeInterface)
# Well-known simple type.
if variantType <= 6:
qdumpHelper_QVariants_A[variantType](d, value)
return None
# Extended Core type (Qt 5+)
if variantType >= 31 and variantType <= 38:
qdumpHelper_QVariants_D[variantType - 31](d, value)
return None
typeName = d.extractCString(name).decode('utf8')
isShared = bool(typeStuff & 0x1)
if isShared:
# indirectly stored items (QRectF, ...)
ptr = d.extractPointer(value)
_, data = d.split('8s{%s}' % typeName, ptr)
d.putItem(data)
else:
d.putItem(d.createValue(data, typeName))
d.putBetterType('%sQVariant (%s)' % (d.qtNamespace(), typeName))
def qdumpHelper__QVariant45(d, value):
data, typeStuff = d.split('8sI', value)
variantType = typeStuff & 0x3fffffff
isShared = bool(typeStuff & 0x40000000)

View File

@@ -4003,7 +4003,7 @@ void tst_Dumpers::dumper_data()
//+ Check("this.@1.@1", "[@QObject]", "\"This is thread #3\"", "@QObject");
QTest::newRow("QVariant")
QTest::newRow("QVariant1")
<< Data("#include <QMap>\n"
"#include <QStringList>\n"
"#include <QVariant>\n"
@@ -4017,9 +4017,7 @@ void tst_Dumpers::dumper_data()
"QVariant v0;\n\n"
"QVariant::Type t1 = QVariant::String;\n"
"QVariant v1 = QVariant(t1, (void*)0);\n"
//"*(QString*)v1.data() = QString(\"Some string\");\n\n"
"QVariant v1 = QVariant(QString(\"A string\"));\n"
"MyType my;\n"
"my[1] = (QStringList() << \"Hello\");\n"
@@ -4033,7 +4031,7 @@ void tst_Dumpers::dumper_data()
"list << 1 << 2 << 3;\n"
"QVariant v3 = QVariant::fromValue(list);",
"&my, &v0, &v1, &v2, &t, &s, &list, &v3, &t1")
"&my, &v0, &v1, &v2, &t, &s, &list, &v3")
+ CoreProfile()