diff options
author | hjk <hjk@qt.io> | 2016-11-16 11:29:57 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2016-11-16 13:34:04 +0000 |
commit | 82818cb90bde1dcc4dd1fa6c0c2c9608e61429c2 (patch) | |
tree | fa01e0066bea400de4f398c1e8bbd766242fbe3b | |
parent | ab16549024c67f55f61e1c2f2d4b8a9f5e48b37a (diff) | |
download | qt-creator-82818cb90bde1dcc4dd1fa6c0c2c9608e61429c2.tar.gz |
Debugger: Improve QAtomicPointer dumper
More compact display and arbitrary inner types.
Change-Id: I68bc1f5cc88f51e993e6e8a91556d9d745a2574a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r-- | share/qtcreator/debugger/qttypes.py | 10 | ||||
-rw-r--r-- | tests/auto/debugger/tst_dumpers.cpp | 25 |
2 files changed, 28 insertions, 7 deletions
diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index ed94f51ad3..65f4e1fbdd 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -38,13 +38,9 @@ def qdump__QBasicAtomicInt(d, value): def qdump__QAtomicPointer(d, value): - d.putType(value.type) - p = value.extractPointer() - d.putValue('@0x%x' % p) - d.putNumChild(1 if p else 0) - if d.isExpanded(): - with Children(d): - d.putSubItem('[pointee]', value.dereference()) + d.putItem(value.cast(value.type[0].pointer())) + d.putBetterType(value.type) + def qform__QByteArray(): return [Latin1StringFormat, SeparateLatin1StringFormat, diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 5bf80148b6..0c78e88ff6 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -2935,6 +2935,31 @@ void tst_Dumpers::dumper_data() " QSharedDataPointer<EmployeeData> d;\n" " };\n"; + QTest::newRow("QAtomicPointer") + << Data("#include <QAtomicPointer>\n" + "#include <QStringList>\n\n" + "template <class T> struct Pointer : QAtomicPointer<T> {\n" + " Pointer(T *value = 0) : QAtomicPointer<T>(value) {}\n" + "};\n\n" + "struct SomeStruct {\n" + " int a = 1;\n" + " long b = 2;\n" + " double c = 3.0;\n" + " QString d = \"4\";\n" + " QList<QString> e = {\"5\", \"6\" };\n" + "};\n\n" + "typedef Pointer<SomeStruct> SomeStructPointer;\n\n", + + "SomeStruct *s = new SomeStruct; unused(s);\n" + "SomeStructPointer p(s); unused(p);\n" + "Pointer<SomeStruct> pp(s); unused(pp);\n" + "QAtomicPointer<SomeStruct> ppp(s); unused(ppp);\n") + + Cxx11Profile() + + Check("p.@1.a", "1", "int") + + Check("p.@1.e", "<2 items>", "@QList<@QString>") + + Check("pp.@1.a", "1", "int") + + Check("ppp.a", "1", "int"); + QTest::newRow("QScopedPointer") << Data("#include <QScopedPointer>\n" |