Debugger: fix QJSValue dumper for Qt >= 6.5

and disable the QV4::Value dumper for that version.

Change-Id: I31a0ddba2bdab3b196e4fc5298fd8e7c10f9dc92
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2023-02-27 14:33:57 +01:00
parent 8288a4c563
commit fb8182ca7c
2 changed files with 69 additions and 30 deletions

View File

@@ -2854,12 +2854,12 @@ def qdump_32__QJSValue(d, value):
def qdump_64__QJSValue_6(d, value): def qdump_64__QJSValue_6(d, value):
dd = value.split('Q')[0] dd = value.split('Q')[0]
typ = dd >> 47
if dd == 0: if dd == 0:
d.putValue('(undefined)') d.putValue('(undefined)')
d.putType(value.type.name + ' (undefined)') d.putType(value.type.name + ' (undefined)')
elif typ == 5: if d.qtVersion() < 0x60500:
typ = dd >> 47
if typ == 5:
d.putValue('(null)') d.putValue('(null)')
d.putType(value.type.name + ' (null)') d.putType(value.type.name + ' (null)')
elif typ == 6: elif typ == 6:
@@ -2892,6 +2892,45 @@ def qdump_64__QJSValue_6(d, value):
d.putPlainChildren(value) d.putPlainChildren(value)
return return
else:
typ = dd & 7
isPointer = typ & 1
if typ == 0:
d.putValue('(undefined)')
d.putType(value.type.name + ' (undefined)')
elif typ == 2:
d.putValue('(null)')
d.putType(value.type.name + ' (null)')
elif typ == 4:
d.putValue(dd >> 32)
d.putType(value.type.name + ' (int)')
elif typ == 6:
d.putValue('true' if dd >> 32 & 1 else 'false')
d.putType(value.type.name + ' (bool)')
elif isPointer:
pointer = dd >> 3
pointer = pointer << 3
val = d.Value(d)
val.ldata = struct.pack('q', pointer)
if typ == 1:
val._type = d.createType('double*')
d.putItem(val)
d.putType(value.type.name + ' (double)')
elif typ == 3:
val._type = d.createType('@QV4::Value*')
d.putItem(val)
d.putType(value.type.name + ' (QV4::Value)')
elif typ == 5:
val._type = d.createType('@QString*')
d.putItem(val)
d.putType(value.type.name + ' (QString)')
else:
d.putEmptyValue()
d.putItemCount(1)
d.putPlainChildren(value)
return
if d.isExpanded(): if d.isExpanded():
with Children(d): with Children(d):
with SubItem(d, '[raw]'): with SubItem(d, '[raw]'):

View File

@@ -7910,7 +7910,7 @@ void tst_Dumpers::dumper_data()
+ QmlPrivateProfile() + QmlPrivateProfile()
+ QtVersion(0x50000) + QtVersion(0x50000)
+ Check("q2", FloatValue("2.5"), "@QV4::Value (double)") + Check("q2", FloatValue("2.5"), "@QV4::Value (double)") % QtVersion(0, 0x604ff)
//+ Check("v10", "(null)", "@QJSValue (null)") # Works in GUI. Why? //+ Check("v10", "(null)", "@QJSValue (null)") # Works in GUI. Why?
+ Check("v11", "true", "@QJSValue (bool)") + Check("v11", "true", "@QJSValue (bool)")
+ Check("v12", "1", "@QJSValue (int)") + Check("v12", "1", "@QJSValue (int)")