From e94e403052dc8d4867ee5c16fbd60a25ac5fef91 Mon Sep 17 00:00:00 2001
From: hjk <hjk121@nokiamail.com>
Date: Wed, 23 Oct 2013 16:28:02 +0200
Subject: [PATCH] Debugger: Fix QList<QStringList> dumper for LLDB

QStringList is movable in Qt 5

Change-Id: I5b0bee9c55e54f62c93a8515af0f56cdafed78bf
Reviewed-by: hjk <hjk121@nokiamail.com>
---
 share/qtcreator/debugger/dumper.py     | 34 +++++++++++++-------------
 share/qtcreator/debugger/gdbbridge.py  |  5 +---
 share/qtcreator/debugger/lldbbridge.py |  5 ++--
 3 files changed, 20 insertions(+), 24 deletions(-)

diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py
index 55aaff207df..cf37f4f965f 100644
--- a/share/qtcreator/debugger/dumper.py
+++ b/share/qtcreator/debugger/dumper.py
@@ -255,23 +255,6 @@ class UnnamedSubItem(SubItem):
         self.iname = "%s.%s" % (self.d.currentIName, component)
         self.name = None
 
-movableTypes = set([
-    "QBrush", "QBitArray", "QByteArray", "QCustomTypeInfo", "QChar", "QDate",
-    "QDateTime", "QFileInfo", "QFixed", "QFixedPoint", "QFixedSize",
-    "QHashDummyValue", "QIcon", "QImage", "QLine", "QLineF", "QLatin1Char",
-    "QLocale", "QMatrix", "QModelIndex", "QPoint", "QPointF", "QPen",
-    "QPersistentModelIndex", "QResourceRoot", "QRect", "QRectF", "QRegExp",
-    "QSize", "QSizeF", "QString", "QTime", "QTextBlock", "QUrl", "QVariant",
-    "QXmlStreamAttribute", "QXmlStreamNamespaceDeclaration",
-    "QXmlStreamNotationDeclaration", "QXmlStreamEntityDeclaration"
-])
-
-movableTypes5 = set([
-    "QStringList"
-])
-
-
-
 class DumperBase:
     def __init__(self):
         self.isCdb = False
@@ -473,6 +456,23 @@ class DumperBase:
         except:
             pass
 
+
+    def isKnownMovableType(self, type):
+        if type in (
+                "QBrush", "QBitArray", "QByteArray", "QCustomTypeInfo", "QChar", "QDate",
+                "QDateTime", "QFileInfo", "QFixed", "QFixedPoint", "QFixedSize",
+                "QHashDummyValue", "QIcon", "QImage", "QLine", "QLineF", "QLatin1Char",
+                "QLocale", "QMatrix", "QModelIndex", "QPoint", "QPointF", "QPen",
+                "QPersistentModelIndex", "QResourceRoot", "QRect", "QRectF", "QRegExp",
+                "QSize", "QSizeF", "QString", "QTime", "QTextBlock", "QUrl", "QVariant",
+                "QXmlStreamAttribute", "QXmlStreamNamespaceDeclaration",
+                "QXmlStreamNotationDeclaration", "QXmlStreamEntityDeclaration"
+                ):
+            return True
+
+        return type == "QStringList" and self.qtVersion() >= 0x050000
+
+
 def cleanAddress(addr):
     if addr is None:
         return "<no address>"
diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py
index 8a0bc863659..914cba7b160 100644
--- a/share/qtcreator/debugger/gdbbridge.py
+++ b/share/qtcreator/debugger/gdbbridge.py
@@ -1415,10 +1415,7 @@ class Dumper(DumperBase):
             return True
         if self.isSimpleType(type):
             return True
-        typeName = self.stripNamespaceFromType(str(type))
-        if typeName in movableTypes:
-            return True
-        return self.qtVersion() >= 0x050000 and typeName in movableTypes5
+        return self.isKnownMovableType(self.stripNamespaceFromType(str(type)))
 
     def putIntItem(self, name, value):
         with SubItem(self, name):
diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py
index 79e9ecbd60b..b6474089823 100644
--- a/share/qtcreator/debugger/lldbbridge.py
+++ b/share/qtcreator/debugger/lldbbridge.py
@@ -574,10 +574,9 @@ class Dumper(DumperBase):
         return format
 
     def isMovableType(self, type):
-        if type.GetTypeClass() in (lldb.eTypeClassBuiltin,
-                lldb.eTypeClassPointer):
+        if type.GetTypeClass() in (lldb.eTypeClassBuiltin, lldb.eTypeClassPointer):
             return True
-        return self.stripNamespaceFromType(type.GetName()) in movableTypes
+        return self.isKnownMovableType(self.stripNamespaceFromType(type.GetName()))
 
     def putIntItem(self, name, value):
         with SubItem(self, name):
-- 
GitLab