Debugger: Fix QPair dumping

Task-number: QTCREATORBUG-30538
Change-Id: Iee17aec458d9ab69cd4349bedb26b1a2270ca41c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
hjk
2024-03-19 15:00:27 +01:00
parent c2b94568d9
commit 87ca7882c1
2 changed files with 30 additions and 1 deletions

View File

@@ -453,6 +453,10 @@ class DumperBase():
return self.listTemplateParametersManually(typename)
def listTemplateParametersManually(self, typename):
# Undo id mangling for template typedefs. Relevant for QPair.
if typename.endswith('}'):
typename = typename[typename.find('{') + 1 : -1]
targs = []
if not typename.endswith('>'):
return targs
@@ -3629,7 +3633,7 @@ class DumperBase():
def templateArgument(self, position):
#DumperBase.warn('TDATA: %s' % self.tdata)
#DumperBase.warn('ID: %s' % self.typeId)
if self.tdata is None:
if self.tdata is None or self.tdata.templateArguments is None:
# Native lookups didn't help. Happens for 'wrong' placement of 'const'
# etc. with LLDB. But not all is lost:
ta = self.dumper.listTemplateParameters(self.typeId)

View File

@@ -3338,6 +3338,31 @@ void tst_Dumpers::dumper_data()
+ Check("sf0", "(-1.0, -1.0)", "@QSizeF")
+ Check("sf", "(100.5, 200.5)", "@QSizeF");
QTest::newRow("QPair")
<< Data("#include <QPair>\n"
"#include <QString>\n",
"QString s = \"sss\";\n"
"QString t = \"ttt\";\n"
"QPair<int, int> pii(1, 2);\n"
"QPair<int, QString> pis(1, t);\n"
"QPair<QString, int> psi(s, 2);\n"
"QPair<QString, QString> pss(s, t);\n",
"&pii, &pis, &psi, &pss")
+ CoreProfile()
+ Check("pii", "(1, 2)", "@QPair")
+ Check("pii.first", "1", "int")
+ Check("pii.second", "2", "int")
+ Check("pis", "(1, ...)", "@QPair")
+ Check("pis.first", "1", "int")
+ Check("pis.second", "\"ttt\"", "@QString")
+ Check("psi", "(..., 2)", "@QPair")
+ Check("psi.first", "\"sss\"", "@QString")
+ Check("psi.second", "2", "int")
+ Check("pss", "(..., ...)", "@QPair")
+ Check("pss.first", "\"sss\"", "@QString")
+ Check("pss.second", "\"ttt\"", "@QString");
QTest::newRow("QRegion")
<< Data("#include <QRegion>\n"