From 9ed36db854288ec6b0eab8e85e427b0ea0bc7be7 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 19 Aug 2018 08:41:46 +0300 Subject: [PATCH] Dumpers: Add a dumper for QPointer It has an internal QWeakPointer, which is not helpful. Cast to the QPointer's template argument instead. Change-Id: I9308c5eb9ea3867a682c4e4cba5d8041547981d1 Reviewed-by: Christian Stenger Reviewed-by: Orgad Shaneh --- share/qtcreator/debugger/qttypes.py | 8 ++++++-- tests/auto/debugger/tst_dumpers.cpp | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index fa36d1f3dee..2bd9adeaa34 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -1806,7 +1806,10 @@ def qdump__QSharedPointer(d, value): def qdump__QWeakPointer(d, value): qdump_QWeakPointerHelper(d, value, True) -def qdump_QWeakPointerHelper(d, value, isWeak): +def qdump__QPointer(d, value): + qdump_QWeakPointerHelper(d, value['wp'], True, value.type[0]) + +def qdump_QWeakPointerHelper(d, value, isWeak, innerType = None): if isWeak: (d_ptr, val) = value.split('pp') else: @@ -1828,7 +1831,8 @@ def qdump_QWeakPointerHelper(d, value, isWeak): d.check(strongref <= weakref) d.check(weakref <= 10*1000*1000) - innerType = value.type[0] + if innerType is None: + innerType = value.type[0] with Children(d): short = d.putSubItem('data', d.createValue(val, innerType)) d.putIntItem('weakref', weakref) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 06414bff075..b62a0d31c18 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -3110,6 +3110,20 @@ void tst_Dumpers::dumper_data() + Check("ppp.a", "1", "int"); + QTest::newRow("QPointer") + << Data("#include \n" + "#include \n", + + "QTimer timer; unused(&timer);\n" + "QPointer ptr0; unused(&ptr0);\n" + "QPointer ptr1(&timer); unused(&ptr1);\n\n") + + + CoreProfile() + + + Check("ptr0", "(null)", "@QPointer") + + Check("ptr1", "", "@QPointer"); + + QTest::newRow("QScopedPointer") << Data("#include \n" "#include \n",