diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp
index 9a0088ae6853f9974163c8c510cc3a8f7737a0fa..5e24e4f9582101db30931fd849bd4c61c74dd73b 100644
--- a/tests/auto/debugger/tst_dumpers.cpp
+++ b/tests/auto/debugger/tst_dumpers.cpp
@@ -98,6 +98,11 @@ struct GuiProfile : public Profile
     GuiProfile() : Profile("QT+=gui\ngreaterThan(QT_MAJOR_VERSION, 4):QT *= widgets\n") {}
 };
 
+struct Cxx11Profile : public Profile
+{
+    Cxx11Profile() : Profile("CONFIG += c++11") {}
+};
+
 class Data
 {
 public:
@@ -224,6 +229,8 @@ void tst_Dumpers::dumper()
         expanded += iname;
     }
 
+    QByteArray nograb = "-nograb";
+
     QByteArray cmds =
         "set confirm off\n"
         "file doit\n"
@@ -233,7 +240,7 @@ void tst_Dumpers::dumper()
         "python execfile('" + dumperDir + "/dumper.py')\n"
         "python execfile('" + dumperDir + "/qttypes.py')\n"
         "bbsetup\n"
-        "run\n"
+        "run " + nograb + "\n"
         "up\n"
         "python print('@%sS@%s@' % ('N', qtNamespace()))\n"
         "bb options:fancy,autoderef,dyntype vars: expanded:" + expanded + " typeformats:\n"
@@ -301,11 +308,12 @@ void tst_Dumpers::dumper()
     foreach (const WatchData &item, list) {
         if (data.checks.contains(item.iname)) {
             Check check = data.checks.take(item.iname);
-            check.expectedValue.replace(' ', "");
             check.expectedType.replace('@', nameSpace);
             check.expectedType.replace(' ', "");
-            QByteArray actualValue = item.value.toLatin1();
-            actualValue.replace(' ', "");
+            QString actualValue = item.value;
+            if (actualValue == QLatin1String(" "))
+                actualValue.clear(); // FIXME: Remove later.
+            QString expectedValue = QString::fromUtf8(check.expectedValue.data(), check.expectedValue.size());
             QByteArray actualType = item.type;
             actualType.replace(' ', "");
             if (item.name.toLatin1() != check.expectedName) {
@@ -315,10 +323,10 @@ void tst_Dumpers::dumper()
                 qDebug() << "CONTENTS     : " << contents;
                 QVERIFY(false);
             }
-            if (check.expectedValue != noValue && actualValue != check.expectedValue) {
+            if (expectedValue != QString::fromLatin1(noValue) && actualValue != expectedValue) {
                 qDebug() << "INAME         : " << item.iname;
-                qDebug() << "VALUE ACTUAL  : " << item.value;
-                qDebug() << "VALUE EXPECTED: " << check.expectedValue;
+                qDebug() << "VALUE ACTUAL  : " << item.value << actualValue.toLatin1().toHex();
+                qDebug() << "VALUE EXPECTED: " << expectedValue << expectedValue.toLatin1().toHex();
                 qDebug() << "CONTENTS      : " << contents;
                 QVERIFY(false);
             }
@@ -375,7 +383,18 @@ void tst_Dumpers::dumper_data()
             "    typedef QMap<QString, QString> Map;\n"
             "    Map m;\n"
             "    QHash<QObject *, Map::iterator> h;\n"
-            "};";
+            "};\n";
+
+    QByteArray nsData =
+            "namespace nsA {\n"
+            "namespace nsB {\n"
+           " struct SomeType\n"
+           " {\n"
+           "     SomeType(int a) : a(a) {}\n"
+           "     int a;\n"
+           " };\n"
+           " } // namespace nsB\n"
+           " } // namespace nsA\n";
 
     QTest::newRow("AnonymousStruct")
             << Data("union {\n"
@@ -407,12 +426,15 @@ void tst_Dumpers::dumper_data()
                % Check("ba.13", "[13]", "2", "char");
 
     QTest::newRow("QByteArray2")
-            << Data("#include <QByteArray>\n",
+            << Data("#include <QByteArray>\n"
+                    "#include <QString>\n"
+                    "#include <string>\n",
                     "QByteArray ba;\n"
                     "for (int i = 256; --i >= 0; )\n"
                     "    ba.append(char(i));\n"
                     "QString s(10000, 'x');\n"
-                    "std::string ss(10000, 'c');")
+                    "std::string ss(10000, 'c');\n"
+                    "dummyStatement(&ba, &s, &ss);\n")
                % CheckType("ba", "@QByteArray")
                % Check("s", '"' + QByteArray(10000, 'x') + '"', "@QString")
                % Check("ss", '"' + QByteArray(10000, 'c') + '"', "std::string");
@@ -424,10 +446,11 @@ void tst_Dumpers::dumper_data()
                     "const char *str3 = \"\\ee\";\n"
                     "QByteArray buf1(str1);\n"
                     "QByteArray buf2(str2);\n"
-                    "QByteArray buf3(str3);\n")
+                    "QByteArray buf3(str3);\n"
+                    "dummyStatement(&buf1, &buf2, &buf3);\n")
                % Check("buf1", "\"î\"", "@QByteArray")
                % Check("buf2", "\"î\"", "@QByteArray")
-               % Check("buf3", "\"\ee\"", "@ByteArray")
+               % Check("buf3", "\"\ee\"", "@QByteArray")
                % CheckType("str1", "char *");
 
     QTest::newRow("QByteArray4")
@@ -440,7 +463,8 @@ void tst_Dumpers::dumper_data()
 
     QTest::newRow("QDate0")
             << Data("#include <QDate>\n",
-                    "QDate date;\n")
+                    "QDate date;\n"
+                    "dummyStatement(&date);\n")
                % CheckType("date", "@QDate")
                % Check("date.(ISO)", "", "@QString")
                % Check("date.(Locale)", "", "@QString")
@@ -450,7 +474,8 @@ void tst_Dumpers::dumper_data()
     QTest::newRow("QDate1")
             << Data("#include <QDate>\n",
                     "QDate date;\n"
-                    "date.setDate(1980, 1, 1);\n")
+                    "date.setDate(1980, 1, 1);\n"
+                    "dummyStatement(&date);\n")
                % CheckType("date", "@QDate")
                % Check("date.(ISO)", "\"1980-01-01\"", "@QString")
                % CheckType("date.(Locale)", "@QString")
@@ -585,10 +610,10 @@ void tst_Dumpers::dumper_data()
                     "hash[\"111111111128.0\"] = 28.0;\n"
                     "hash[\"111111111111111111129.0\"] = 29.0;\n")
                % Check("hash", "<9 items>", "@QHash<@QByteArray, float>")
-               % Check("hash.0", "[0]", "@QHashNode<@QByteArray, float>")
+               % Check("hash.0", "[0]", "", "@QHashNode<@QByteArray, float>")
                % Check("hash.0.key", "\"123.0\"", "@QByteArray")
                % Check("hash.0.value", "22", "float")
-               % Check("hash.8", "[8]", "@QHashNode<@QByteArray, float>")
+               % Check("hash.8", "[8]", "", "@QHashNode<@QByteArray, float>")
                % Check("hash.8.key", "\"11124.0\"", "@QByteArray")
                % Check("hash.8.value", "22", "float");
 
@@ -937,57 +962,65 @@ void tst_Dumpers::dumper_data()
               % Check("map.22", "[22]", "22", "float");
 
    QTest::newRow("QMapStringFloat")
-           << Data("#include <QMap>\n",
+           << Data("#include <QMap>\n"
+                   "#include <QString>\n",
                    "QMap<QString, float> map;\n"
                    "map[\"22.0\"] = 22.0;\n")
               % Check("map", "<1 items>", "@QMap<@QString, float>")
-              % Check("map.0", "", "@QMapNode<@QString, float>")
+              % Check("map.0", "[0]", "", "@QMapNode<@QString, float>")
               % Check("map.0.key", "\"22.0\"", "@QString")
               % Check("map.0.value", "22", "float");
 
    QTest::newRow("QMapIntString")
-           << Data("#include <QMap>\n",
+           << Data("#include <QMap>\n"
+                   "#include <QString>\n",
                    "QMap<int, QString> map;\n"
                    "map[22] = \"22.0\";\n")
               % Check("map", "<1 items>", "@QMap<int, @QString>")
-              % Check("map.0", "", "@QMapNode<int, @QString>")
+              % Check("map.0", "[0]", "", "@QMapNode<int, @QString>")
               % Check("map.0.key", "22", "int")
               % Check("map.0.value", "\"22.0\"", "@QString");
 
    QTest::newRow("QMapStringFoo")
-           << Data("#include <QMap>\n" + fooData,
+           << Data("#include <QMap>\n" + fooData +
+                   "#include <QString>\n",
                    "QMap<QString, Foo> map;\n"
                    "map[\"22.0\"] = Foo(22);\n"
                    "map[\"33.0\"] = Foo(33);\n")
               % Check("map", "<2 items>", "@QMap<@QString, Foo>")
-              % Check("map.0", "", "@QMapNode<@QString, Foo>")
+              % Check("map.0", "[0]", "", "@QMapNode<@QString, Foo>")
               % Check("map.0.key", "\"22.0\"", "@QString")
               % Check("map.0.value", "", "Foo")
               % Check("map.0.value.a", "22", "int")
-              % Check("map.1", "", "@QMapNode<@QString, Foo>")
+              % Check("map.1", "[1]", "", "@QMapNode<@QString, Foo>")
               % Check("map.1.key", "\"33.0\"", "@QString")
               % Check("map.1.value", "", "Foo")
               % Check("map.1.value.a", "33", "int");
 
    QTest::newRow("QMapStringPointer")
-           << Data("#include <QMap>\n",
+           << Data("#include <QMap>\n"
+                   "#include <QObject>\n"
+                   "#include <QPointer>\n"
+                   "#include <QString>\n",
                    "QObject ob;\n"
                    "QMap<QString, QPointer<QObject> > map;\n"
                    "map.insert(\"Hallo\", QPointer<QObject>(&ob));\n"
                    "map.insert(\"Welt\", QPointer<QObject>(&ob));\n"
                    "map.insert(\".\", QPointer<QObject>(&ob));\n")
               % Check("map", "<3 items>", "@QMap<@QString, @QPointer<@QObject>>")
-              % Check("map.0", "", "@QMapNode<@QString, @QPointer<@QObject>>")
-              % Check("map.0.key", ".", "@QString")
+              % Check("map.0", "[0]", "", "@QMapNode<@QString, @QPointer<@QObject>>")
+              % Check("map.0.key", "\".\"", "@QString")
               % Check("map.0.value", "", "@QPointer<@QObject>")
               % Check("map.0.value.o", "", "@QObject")
-              % Check("map.1", "", "@QMapNode<@QString, @QPointer<@QObject>>")
+              % Check("map.1", "[1]", "", "@QMapNode<@QString, @QPointer<@QObject>>")
               % Check("map.1.key", "\"Hallo\"", "@QString")
-              % Check("map.2", "", "@QMapNode<@QString, @QPointer<@QObject>>")
+              % Check("map.2", "[2]", "", "@QMapNode<@QString, @QPointer<@QObject>>")
               % Check("map.2.key", "\"Welt\"", "@QString");
 
    QTest::newRow("QMapStringList")
-           << Data("#include <QMap>\n",
+           << Data("#include <QMap>\n"
+                   "#include <QList>\n"
+                   "#include <QString>\n" + nsData,
                    "QList<nsA::nsB::SomeType *> x;\n"
                    "x.append(new nsA::nsB::SomeType(1));\n"
                    "x.append(new nsA::nsB::SomeType(2));\n"
@@ -998,19 +1031,19 @@ void tst_Dumpers::dumper_data()
                    "map[\"1\"] = x;\n"
                    "map[\"2\"] = x;\n")
               % Check("map", "<4 items>", "@QMap<@QString, @QList<nsA::nsB::SomeType*>>")
-              % Check("map.0", "", "@QMapNode<@QString, @QList<nsA::nsB::SomeType*>>")
+              % Check("map.0", "[0]", "", "@QMapNode<@QString, @QList<nsA::nsB::SomeType*>>")
               % Check("map.0.key", "\"1\"", "@QString")
               % Check("map.0.value", "<3 items>", "@QList<nsA::nsB::SomeType*>")
-              % Check("map.0.value.0", "", "nsA::nsB::SomeType")
+              % Check("map.0.value.0", "[0]", "", "nsA::nsB::SomeType")
               % Check("map.0.value.0.a", "1", "int")
-              % Check("map.0.value.1", "", "nsA::nsB::SomeType")
+              % Check("map.0.value.1", "[1]", "", "nsA::nsB::SomeType")
               % Check("map.0.value.1.a", "2", "int")
-              % Check("map.0.value.2", "", "nsA::nsB::SomeType")
+              % Check("map.0.value.2", "[2]", "", "nsA::nsB::SomeType")
               % Check("map.0.value.2.a", "3", "int")
-              % Check("map.3", "", "@QMapNode<@QString, QList<nsA::nsB::SomeType*>>")
+              % Check("map.3", "[3]", "", "@QMapNode<@QString, @QList<nsA::nsB::SomeType*>>")
               % Check("map.3.key", "\"foo\"", "@QString")
               % Check("map.3.value", "<3 items>", "@QList<nsA::nsB::SomeType*>")
-              % Check("map.3.value.2", "", "nsA::nsB::SomeType")
+              % Check("map.3.value.2", "[2]", "", "nsA::nsB::SomeType")
               % Check("map.3.value.2.a", "3", "int")
               % Check("x", "<3 items>", "@QList<nsA::nsB::SomeType*>");
 
@@ -1024,24 +1057,26 @@ void tst_Dumpers::dumper_data()
                    "map.insert(22, 35.0);\n"
                    "map.insert(22, 36.0);\n")
               % Check("map", "<6 items>", "@QMultiMap<unsigned int, float>")
-              % Check("map.0", "11", "float")
-              % Check("map.5", "22", "float");
+              % Check("map.0", "[0]", "11", "float")
+              % Check("map.5", "[5]", "22", "float");
 
    QTest::newRow("QMultiMapStringFloat")
-           << Data("#include <QMap>\n",
+           << Data("#include <QMap>\n"
+                   "#include <QString>\n",
                    "QMultiMap<QString, float> map;\n"
                    "map.insert(\"22.0\", 22.0);\n")
               % Check("map", "<1 items>", "@QMultiMap<@QString, float>")
-              % Check("map.0", "", "@QMapNode<@QString, float>")
+              % Check("map.0", "[0]", "", "@QMapNode<@QString, float>")
               % Check("map.0.key", "\"22.0\"", "@QString")
               % Check("map.0.value", "22", "float");
 
    QTest::newRow("QMultiMapIntString")
-           << Data("#include <QMap>\n",
+           << Data("#include <QMap>\n"
+                   "#include <QString>\n",
                    "QMultiMap<int, QString> map;\n"
                    "map.insert(22, \"22.0\");\n")
               % Check("map", "<1 items>", "@QMultiMap<int, @QString>")
-              % Check("map.0", "", "@QMapNode<int, @QString>")
+              % Check("map.0", "[0]", "", "@QMapNode<int, @QString>")
               % Check("map.0.key", "22", "int")
               % Check("map.0.value", "\"22.0\"", "@QString");
 
@@ -1094,43 +1129,38 @@ void tst_Dumpers::dumper_data()
               % Check("parent", "\"A Parent\"", "@QObject");
 
     QByteArray objectData =
-"    namespace Names {\n"
-"        namespace Bar {\n"
-"\n"
-"        struct Ui { Ui() { w = 0; } QWidget *w; };\n"
-"\n"
-"        class TestObject : public QObject\n"
-"        {\n"
-"            Q_OBJECT\n"
-"        public:\n"
-"            TestObject(QObject *parent = 0)\n"
-"                : QObject(parent)\n"
-"            {\n"
-"                m_ui = new Ui;\n"
-"                #if USE_GUILIB\n"
-"                m_ui->w = new QWidget;\n"
-"                #else\n"
-"                m_ui->w = 0;\n"
-"                #endif\n"
-"            }\n"
-"\n"
-"            Q_PROPERTY(QString myProp1 READ myProp1 WRITE setMyProp1)\n"
-"            QString myProp1() const { return m_myProp1; }\n"
-"            Q_SLOT void setMyProp1(const QString&mt) { m_myProp1 = mt; }\n"
-"\n"
-"            Q_PROPERTY(QString myProp2 READ myProp2 WRITE setMyProp2)\n"
-"            QString myProp2() const { return m_myProp2; }\n"
-"            Q_SLOT void setMyProp2(const QString&mt) { m_myProp2 = mt; }\n"
-"\n"
-"        public:\n"
-"            Ui *m_ui;\n"
-"            QString m_myProp1;\n"
-"            QString m_myProp2;\n"
-"        };\n"
-"\n"
-"        } // namespace Bar\n"
-"    } // namespace Names\n"
-"\n";
+            "#include <QWidget>\n"
+            "    namespace Names {\n"
+            "        namespace Bar {\n"
+            "        struct Ui { Ui() { w = 0; } QWidget *w; };\n"
+            "        class TestObject : public QObject\n"
+            "        {\n"
+            "            Q_OBJECT\n"
+            "        public:\n"
+            "            TestObject(QObject *parent = 0)\n"
+            "                : QObject(parent)\n"
+            "            {\n"
+            "                m_ui = new Ui;\n"
+            "                #if USE_GUILIB\n"
+            "                m_ui->w = new QWidget;\n"
+            "                #else\n"
+            "                m_ui->w = 0;\n"
+            "                #endif\n"
+            "            }\n"
+            "            Q_PROPERTY(QString myProp1 READ myProp1 WRITE setMyProp1)\n"
+            "            QString myProp1() const { return m_myProp1; }\n"
+            "            Q_SLOT void setMyProp1(const QString&mt) { m_myProp1 = mt; }\n"
+            "            Q_PROPERTY(QString myProp2 READ myProp2 WRITE setMyProp2)\n"
+            "            QString myProp2() const { return m_myProp2; }\n"
+            "            Q_SLOT void setMyProp2(const QString&mt) { m_myProp2 = mt; }\n"
+            "        public:\n"
+            "            Ui *m_ui;\n"
+            "            QString m_myProp1;\n"
+            "            QString m_myProp2;\n"
+            "        };\n"
+            "        } // namespace Bar\n"
+            "    } // namespace Names\n"
+            "\n";
 
     QTest::newRow("QObject2")
             << Data(objectData,
@@ -1142,31 +1172,26 @@ void tst_Dumpers::dumper_data()
                % Check("s", "\"HELLOWORLD\"", "@QString")
                % Check("test", "", "Names::Bar::TestObject");
 
-//"    #if 1\n"
-//"        #if USE_GUILIB\n"
-//"        QWidget ob;\n"
-//"        ob.setObjectName("An Object");\n"
-//"        ob.setProperty("USER DEFINED 1", 44);\n"
-//"        ob.setProperty("USER DEFINED 2", QStringList() << "FOO" << "BAR");\n"
-//"        QObject ob1;\n"
-//"        ob1.setObjectName("Another Object");\n"
-//"\n"
-//"        QObject::connect(&ob, SIGNAL(destroyed()), &ob1, SLOT(deleteLater()));\n"
-//"        QObject::connect(&ob, SIGNAL(destroyed()), &ob1, SLOT(deleteLater()));\n"
-//"        //QObject::connect(&app, SIGNAL(lastWindowClosed()), &ob, SLOT(deleteLater()));\n"
-//"        #endif\n"
-//"    #endif\n"
-//"\n"
-//"    #if 0\n"
-//"        QList<QObject *> obs;\n"
-//"        obs.append(&ob);\n"
-//"        obs.append(&ob1);\n"
-//"        obs.append(0);\n"
-//"        obs.append(&app);\n"
-//"        ob1.setObjectName("A Subobject");\n"
-//"    #endif\n"
-//"    }\n"
-//"\n"
+    QTest::newRow("QObject2")
+            << Data("QWidget ob;\n"
+                "ob.setObjectName(\"An Object\");\n"
+                "ob.setProperty(\"USER DEFINED 1\", 44);\n"
+                "ob.setProperty(\"USER DEFINED 2\", QStringList() << \"FOO\" << \"BAR\");\n"
+                ""
+                "QObject ob1;\n"
+                "ob1.setObjectName(\"Another Object\");\n"
+                "QObject::connect(&ob, SIGNAL(destroyed()), &ob1, SLOT(deleteLater()));\n"
+                "QObject::connect(&ob, SIGNAL(destroyed()), &ob1, SLOT(deleteLater()));\n"
+                "//QObject::connect(&app, SIGNAL(lastWindowClosed()), &ob, SLOT(deleteLater()));\n"
+                ""
+                "QList<QObject *> obs;\n"
+                "obs.append(&ob);\n"
+                "obs.append(&ob1);\n"
+                "obs.append(0);\n"
+                "obs.append(&app);\n"
+                "ob1.setObjectName(\"A Subobject\");\n")
+               % GuiProfile()
+               % Check("ob", "An Object", "@QObject");
 
     QByteArray senderData =
             "    class Sender : public QObject\n"
@@ -1282,7 +1307,8 @@ void tst_Dumpers::dumper_data()
 
 
     QTest::newRow("QRegExp")
-            << Data("QRegExp re(QString(\"a(.*)b(.*)c\"));\n"
+            << Data("#include <QRegExp>\n",
+                    "QRegExp re(QString(\"a(.*)b(.*)c\"));\n"
                     "QString str1 = \"a1121b344c\";\n"
                     "QString str2 = \"Xa1121b344c\";\n"
                     "int pos2 = re.indexIn(str2);\n"
@@ -1294,43 +1320,50 @@ void tst_Dumpers::dumper_data()
                % Check("pos2", "1", "int");
 
     QTest::newRow("QPoint")
-            << Data("QPoint s0, s;\n"
+            << Data("#include <QPoint>\n",
+                    "QPoint s0, s;\n"
                     "s = QPoint(100, 200);\n")
                % Check("s0", "(0, 0)", "@QPoint")
                % Check("s", "(100, 200)", "@QPoint");
 
     QTest::newRow("QPointF")
-            << Data("QPointF s0, s;\n"
+            << Data("#include <QPointF>\n",
+                    "QPointF s0, s;\n"
                     "s = QPointF(100, 200);\n")
                % Check("s0", "(0, 0)", "@QPointF")
                % Check("s", "(100, 200)", "@QPointF");
 
     QTest::newRow("QRect")
-            << Data("QRect rect0, rect;\n"
+            << Data("#include <QRect>\n",
+                    "QRect rect0, rect;\n"
                     "rect = QRect(100, 100, 200, 200);\n")
-               % Check("rect", "0x0+0+0", "QRect")
-               % Check("rect", "200x200+100+100", "QRect");
+               % Check("rect", "0x0+0+0", "@QRect")
+               % Check("rect", "200x200+100+100", "@QRect");
 
     QTest::newRow("QRectF")
-            << Data("QRectF rect0, rect;\n"
+            << Data("#include <QRectF>\n",
+                    "QRectF rect0, rect;\n"
                     "rect = QRectF(100, 100, 200, 200);\n")
-               % Check("rect", "0x0+0+0", "QRectF")
-               % Check("rect", "200x200+100+100", "QRectF");
+               % Check("rect", "0x0+0+0", "@QRectF")
+               % Check("rect", "200x200+100+100", "@QRectF");
 
     QTest::newRow("QSize")
-            << Data("QSize s0, s;\n"
+            << Data("#include <QSize>\n",
+                    "QSize s0, s;\n"
                     "s = QSize(100, 200);\n")
                % Check("s0", "(-1, -1)", "@QSize")
                % Check("s", "(100, 200)", "@QSize");
 
     QTest::newRow("QSizeF")
-            << Data("QSizeF s0, s;\n"
+            << Data("#include <QSizeF>\n",
+                    "QSizeF s0, s;\n"
                     "s = QSizeF(100, 200);\n")
                % Check("s0", "(-1, -1)", "@QSizeF")
                % Check("s", "(100, 200)", "@QSizeF");
 
     QTest::newRow("QRegion")
-            << Data("QRegion region, region0, region1, region2, region4;\n"
+            << Data("#include <QRegion>\n",
+                    "QRegion region, region0, region1, region2, region4;\n"
                     "region += QRect(100, 100, 200, 200);\n"
                     "region0 = region;\n"
                     "region += QRect(300, 300, 400, 500);\n"
@@ -1359,7 +1392,8 @@ void tst_Dumpers::dumper_data()
                % Check("region", "<4 items>", "@QRegion");
 
     QTest::newRow("QSettings")
-            << Data("QCoreApplication app(argc, argv);\n"
+            << Data("#include <QRegExp>\n",
+                    "QCoreApplication app(argc, argv);\n"
                     "QSettings settings(\"/tmp/test.ini\", QSettings::IniFormat);\n"
                     "QVariant value = settings.value(\"item1\", \"\").toString();\n")
                % Check("settings", "", "@QSettings")
@@ -1367,7 +1401,8 @@ void tst_Dumpers::dumper_data()
                % Check("value", "", "@QVariant (QString)");
 
     QTest::newRow("QSet1")
-            << Data("QSet<int> s;\n"
+            << Data("#include <QRegExp>\n",
+                    "QSet<int> s;\n"
                     "s.insert(11);\n"
                     "s.insert(22);\n")
                % Check("s", "<2 items>", "@QSet<int>")
@@ -1375,22 +1410,27 @@ void tst_Dumpers::dumper_data()
                % Check("s.11", "11", "int");
 
     QTest::newRow("QSet2")
-            << Data("QSet<QString> s;\n"
+            << Data("#include <QSet>\n"
+                    "#include <QString>\n",
+                    "QSet<QString> s;\n"
                     "s.insert(\"11.0\");\n"
                     "s.insert(\"22.0\");\n")
                % Check("s", "<2 items>", "@QSet<@QString>")
-               % Check("s.0", "\"11.0\"", "@QString")
-               % Check("s.1", "\"22.0\"", "@QString");
+               % Check("s.0", "[0]", "\"11.0\"", "@QString")
+               % Check("s.1", "[1]", "\"22.0\"", "@QString");
 
     QTest::newRow("QSet3")
-            << Data("QObject ob;\n"
+            << Data("#include <QObject>\n"
+                    "#include <QPointer>\n"
+                    "#include <QSet>\n",
+                    "QObject ob;\n"
                     "QSet<QPointer<QObject> > s;\n"
                     "QPointer<QObject> ptr(&ob);\n"
                     "s.insert(ptr);\n"
                     "s.insert(ptr);\n"
                     "s.insert(ptr);\n")
                % Check("s", "<1 items>", "@QSet<@QPointer<@QObject>>")
-               % Check("s.0", "", "@QPointer<@QObject>");
+               % Check("s.0", "[0]", "", "@QPointer<@QObject>");
 
 
     QByteArray sharedData =
@@ -1431,22 +1471,27 @@ void tst_Dumpers::dumper_data()
 
 
     QTest::newRow("QSharedPointer1")
-            << Data("QSharedPointer<int> ptr2 = ptr;\n"
+            << Data("#include <QSharedPointer>\n",
+                    "QSharedPointer<int> ptr2 = ptr;\n"
                     "QSharedPointer<int> ptr3 = ptr;\n");
 
     QTest::newRow("QSharedPointer2")
-            << Data("QSharedPointer<QString> ptr(new QString(\"hallo\"));\n"
+            << Data("#include <QSharedPointer>\n",
+                    "QSharedPointer<QString> ptr(new QString(\"hallo\"));\n"
                     "QSharedPointer<QString> ptr2 = ptr;\n"
                     "QSharedPointer<QString> ptr3 = ptr;\n");
 
     QTest::newRow("QSharedPointer3")
-            << Data("QSharedPointer<int> iptr(new int(43));\n"
+            << Data("#include <QSharedPointer>\n",
+                    "QSharedPointer<int> iptr(new int(43));\n"
                     "QWeakPointer<int> ptr(iptr);\n"
                     "QWeakPointer<int> ptr2 = ptr;\n"
                     "QWeakPointer<int> ptr3 = ptr;\n");
 
     QTest::newRow("QSharedPointer4")
-            << Data("QSharedPointer<QString> sptr(new QString(\"hallo\"));\n"
+            << Data("#include <QSharedPointer>\n"
+                    "#include <QString>\n",
+                    "QSharedPointer<QString> sptr(new QString(\"hallo\"));\n"
                     "QWeakPointer<QString> ptr(sptr);\n"
                     "QWeakPointer<QString> ptr2 = ptr;\n"
                     "QWeakPointer<QString> ptr3 = ptr;\n");
@@ -1459,24 +1504,25 @@ void tst_Dumpers::dumper_data()
                     "QWeakPointer<Foo> ptr3 = ptr;\n");
 
     QTest::newRow("QXmlAttributes")
-            << Data("QXmlAttributes atts;\n"
+            << Data("#include <QXmlAttributes>\n",
+                    "QXmlAttributes atts;\n"
                     "atts.append(\"name1\", \"uri1\", \"localPart1\", \"value1\");\n"
                     "atts.append(\"name2\", \"uri2\", \"localPart2\", \"value2\");\n"
                     "atts.append(\"name3\", \"uri3\", \"localPart3\", \"value3\");\n")
                % Check("atts", "", "QXmlAttributes")
                % CheckType("atts.[vptr]", "")
                % Check("atts.attList", "<3 items>", "@QXmlAttributes::AttributeList")
-               % Check("atts.attList.0", "", "QXmlAttributes::Attribute")
+               % Check("atts.attList.0", "[0]", "", "QXmlAttributes::Attribute")
                % Check("atts.attList.0.localname", "\"localPart1\"", "@QString")
                % Check("atts.attList.0.qname", "\"name1\"", "@QString")
                % Check("atts.attList.0.uri", "\"uri1\"", "@QString")
                % Check("atts.attList.0.value", "\"value1\"", "@QString")
-               % Check("atts.attList.1", "", "@QXmlAttributes::Attribute")
+               % Check("atts.attList.1", "[1]", "", "@QXmlAttributes::Attribute")
                % Check("atts.attList.1.localname", "\"localPart2\"", "@QString")
                % Check("atts.attList.1.qname", "\"name2\"", "@QString")
                % Check("atts.attList.1.uri", "\"uri2\"", "@QString")
                % Check("atts.attList.1.value", "\"value2\"", "@QString")
-               % Check("atts.attList.2", "", "@QXmlAttributes::Attribute")
+               % Check("atts.attList.2", "[2]", "", "@QXmlAttributes::Attribute")
                % Check("atts.attList.2.localname", "\"localPart3\"", "@QString")
                % Check("atts.attList.2.qname", "\"name3\"", "@QString")
                % Check("atts.attList.2.uri", "\"uri3\"", "@QString")
@@ -1484,17 +1530,21 @@ void tst_Dumpers::dumper_data()
                % Check("atts.d", "", "@QXmlAttributesPrivate");
 
     QTest::newRow("StdArray")
-            << Data("std::array<int, 4> a = { { 1, 2, 3, 4} };\n"
+            << Data("#include <memory>\n"
+                    "#include <QString>\n",
+                    "std::array<int, 4> a = { { 1, 2, 3, 4} };\n"
                     "std::array<QString, 4> b = { { \"1\", \"2\", \"3\", \"4\"} };\n")
                % Check("a", "<4 items>", "std::array<int, 4u>")
                % Check("a", "<4 items>", "std::array<QString, 4u>");
 
     QTest::newRow("StdComplex")
-            << Data("std::complex<double> c(1, 2);\n")
+            << Data("#include <complex>\n",
+                    "std::complex<double> c(1, 2);\n")
                % Check("c", "(1.000000, 2.000000)", "std::complex<double>");
 
     QTest::newRow("StdDequeInt")
-            << Data("std::deque<int> deque;\n"
+            << Data("#include <deque>\n",
+                    "std::deque<int> deque;\n"
                     "deque.push_back(1);\n"
                     "deque.push_back(2);\n")
                % Check("deque", "<2 items>", "std::deque<int>")
@@ -1502,7 +1552,8 @@ void tst_Dumpers::dumper_data()
                % Check("deque.1", "2", "int");
 
     QTest::newRow("StdDequeIntStar")
-            << Data("std::deque<int *> deque;\n"
+            << Data("#include <deque>\n",
+                    "std::deque<int *> deque;\n"
                     "deque.push_back(new int(1));\n"
                     "deque.push_back(0);\n"
                     "deque.push_back(new int(2));\n"
@@ -1536,7 +1587,7 @@ void tst_Dumpers::dumper_data()
 
     QTest::newRow("StdHashSet")
             << Data("#include <hash_set>\n"
-                    "using namespace __gnu_cxx;\n"
+                    "using namespace __gnu_cxx;\n",
                     "hash_set<int> h;\n"
                     "h.insert(1);\n"
                     "h.insert(194);\n"
@@ -1549,95 +1600,96 @@ void tst_Dumpers::dumper_data()
                % Check("h.3", "3", "int");
 
     QTest::newRow("StdListInt")
-            << Data("#include <list>\n"
+            << Data("#include <list>\n",
                     "std::list<int> list;\n"
                     "list.push_back(1);\n"
                     "list.push_back(2);\n")
                % Check("list", "<2 items>", "std::list<int>")
-               % Check("list.0", "1", "int")
-               % Check("list.1", "2", "int");
+               % Check("list.0", "[0]", "1", "int")
+               % Check("list.1", "[1]", "2", "int");
 
     QTest::newRow("StdListIntStar")
-            << Data("#include <list>\n"
+            << Data("#include <list>\n",
                     "std::list<int *> list;\n"
                     "list.push_back(new int(1));\n"
                     "list.push_back(0);\n"
                     "list.push_back(new int(2));\n")
                % Check("list", "<3 items>", "std::list<int*>")
-               % Check("list.0", "", "int")
-               % Check("list.1", "0x0", "int *")
-               % Check("list.2", "", "int");
+               % Check("list.0", "[0]", "", "int")
+               % Check("list.1", "[1]", "0x0", "int *")
+               % Check("list.2", "[2]", "", "int");
 
     QTest::newRow("StdListIntBig")
-            << Data("#include <list>\n"
+            << Data("#include <list>\n",
                     "std::list<int> list;\n"
                     "for (int i = 0; i < 10000; ++i)\n"
                     "    list.push_back(i);\n")
                % Check("list", "<more than 1000 items>", "std::list<int>")
-               % Check("list.0", "0", "int")
-               % Check("list.999", "999", "int");
+               % Check("list.0", "[0]", "0", "int")
+               % Check("list.999", "[999]", "999", "int");
 
     QTest::newRow("StdListFoo")
-            << Data("#include <list>\n"
+            << Data("#include <list>\n",
                     "std::list<Foo> list;\n"
                     "list.push_back(15);\n"
                     "list.push_back(16);\n")
                % Check("list", "<2 items>", "std::list<Foo>")
-               % Check("list.0", "", "Foo")
+               % Check("list.0", "[0]", "", "Foo")
                % Check("list.0.a", "15", "int")
-               % Check("list.1", "", "Foo")
+               % Check("list.1", "[1]", "", "Foo")
                % Check("list.1.a", "16", "int");
 
     QTest::newRow("StdListFooStar")
-            << Data("#include <list>\n"
+            << Data("#include <list>\n",
                     "std::list<Foo *> list;\n"
                     "list.push_back(new Foo(1));\n"
                     "list.push_back(0);\n"
                     "list.push_back(new Foo(2));\n")
                % Check("list", "<3 items>", "std::list<Foo*>")
-               % Check("list.0", "", "Foo")
+               % Check("list.0", "[0]", "", "Foo")
                % Check("list.0.a", "1", "int")
                % Check("list.1", "0x0", "Foo *")
-               % Check("list.2", "", "Foo")
+               % Check("list.2", "[2]", "", "Foo")
                % Check("list.2.a", "2", "int");
 
     QTest::newRow("StdListBool")
-            << Data("#include <list>\n"
+            << Data("#include <list>\n",
                     "std::list<bool> list;\n"
                     "list.push_back(true);\n"
                     "list.push_back(false);\n")
                % Check("list", "<2 items>", "std::list<bool>")
-               % Check("list.0", "true", "bool")
-               % Check("list.1", "false", "bool");
+               % Check("list.0", "[0]", "true", "bool")
+               % Check("list.1", "[1]", "false", "bool");
 
     QTest::newRow("StdMapStringFoo")
-            << Data("#include <map>\n",
+            << Data("#include <map>\n"
+                    "#include <QString>\n",
                     "std::map<QString, Foo> map;\n"
                     "map[\"22.0\"] = Foo(22);\n"
                     "map[\"33.0\"] = Foo(33);\n"
                     "map[\"44.0\"] = Foo(44);\n")
                % Check("map", "<3 items>", "std::map<@QString, Foo>")
-               % Check("map.0", "", "std::pair<@QString const, Foo>")
+               % Check("map.0", "[0]", "", "std::pair<@QString const, Foo>")
                % Check("map.0.first", "\"22.0\"", "@QString")
                % Check("map.0.second", "", "Foo")
                % Check("map.0.second.a", "22", "int")
-               % Check("map.1", "", "std::pair<@QString const, Foo>")
+               % Check("map.1", "[1]", "", "std::pair<@QString const, Foo>")
                % Check("map.2.first", "\"44.0\"", "@QString")
                % Check("map.2.second", "", "Foo")
                % Check("map.2.second.a", "44", "int");
 
     QTest::newRow("StdMapCharStarFoo")
-            << Data("#include <map>\n",
+            << Data("#include <map>\n" + fooData,
                     "std::map<const char *, Foo> map;\n"
                     "map[\"22.0\"] = Foo(22);\n"
                     "map[\"33.0\"] = Foo(33);\n")
                % Check("map", "<2 items>", "std::map<char const*, Foo>")
-               % Check("map.0", "", "std::pair<char const* const, Foo>")
+               % Check("map.0", "[0]", "", "std::pair<char const* const, Foo>")
                % CheckType("map.0.first", "char *")
                % Check("map.0.first.*first", "50 '2'", "char")
                % Check("map.0.second", "", "Foo")
                % Check("map.0.second.a", "22", "int")
-               % Check("map.1", "", "std::pair<char const* const, Foo>")
+               % Check("map.1", "[1]", "", "std::pair<char const* const, Foo>")
                % CheckType("map.1.first", "char *")
                % Check("map.1.first.*first", "51 '3'", "char")
                % Check("map.1.second", "", "Foo")
@@ -1649,11 +1701,12 @@ void tst_Dumpers::dumper_data()
                     "map[11] = 1;\n"
                     "map[22] = 2;\n")
                % Check("map", "<2 items>", "std::map<unsigned int, unsigned int>")
-               % Check("map.11", "1", "unsigned int")
-               % Check("map.22", "2", "unsigned int");
+               % Check("map.11", "[11]", "1", "unsigned int")
+               % Check("map.22", "[22]", "2", "unsigned int");
 
     QTest::newRow("StdMapUIntStringList")
-            << Data("#include <map>\n",
+            << Data("#include <map>\n"
+                    "#include <QStringList>\n",
                     "std::map<uint, QStringList> map;\n"
                     "map[11] = QStringList() << \"11\";\n"
                     "map[22] = QStringList() << \"22\";\n")
@@ -1720,7 +1773,8 @@ void tst_Dumpers::dumper_data()
                % Check("map.1.second", "22", "float");
 
     QTest::newRow("StdMapIntString")
-            << Data("#include <map>\n",
+            << Data("#include <map>\n"
+                    "#include <QString>\n",
                     "std::map<int, QString> map;\n"
                     "map[11] = \"11.0\";\n"
                     "map[22] = \"22.0\";\n")
@@ -1733,7 +1787,10 @@ void tst_Dumpers::dumper_data()
                % Check("map.1.second", "\"22.0\"", "@QString");
 
     QTest::newRow("StdMapStringPointer")
-            << Data("#include <map>\n",
+            << Data("#include <QPointer>\n"
+                    "#include <QObject>\n"
+                    "#include <QString>\n"
+                    "#include <map>\n",
                     "QObject ob;\n"
                     "std::map<QString, QPointer<QObject> > map;\n"
                     "map[\"Hallo\"] = QPointer<QObject>(&ob);\n"
@@ -1747,16 +1804,20 @@ void tst_Dumpers::dumper_data()
                % Check("map.2.first", "\"Welt\"", "@QString");
 
     QTest::newRow("StdUniquePtr")
-            << Data("std::unique_ptr<int> pi(new int(32));\n"
+            << Data("#include <memory>\n",
+                    "std::unique_ptr<int> pi(new int(32));\n"
                     "std::unique_ptr<Foo> pf(new Foo);\n")
+               % Cxx11Profile()
                % Check("pi", "32", "std::unique_ptr<int, std::default_delete<int> >")
                % Check("pf", "32", "std::unique_ptr<Foo, std::default_delete<Foo> >");
 
     QTest::newRow("StdSharedPtr")
-            << Data("std::shared_ptr<int> pi(new int(32));\n"
+            << Data("#include <memory>\n",
+                    "std::shared_ptr<int> pi(new int(32));\n"
                     "std::shared_ptr<Foo> pf(new Foo);\n")
-                    % Check("pi", "32", "std::shared_ptr<int, std::default_delete<int> >")
-                    % Check("pf", "32", "std::shared_ptr<Foo, std::default_delete<int> >");
+               % Cxx11Profile()
+               % Check("pi", "32", "std::shared_ptr<int, std::default_delete<int> >")
+               % Check("pf", "32", "std::shared_ptr<Foo, std::default_delete<int> >");
 
     QTest::newRow("StdSetInt")
             << Data("#include <set>\n",
@@ -1787,7 +1848,8 @@ void tst_Dumpers::dumper_data()
                % Check("it6.value", "66", "int");
 
     QTest::newRow("StdSetString")
-            << Data("#include <set>\n",
+            << Data("#include <set>\n"
+                    "#include <QString>\n",
                     "std::set<QString> set;\n"
                     "set.insert(\"22.0\");\n")
                % Check("set", "<1 items>", "std::set<Q@String>")
@@ -1795,6 +1857,8 @@ void tst_Dumpers::dumper_data()
 
     QTest::newRow("StdSetPointer")
             << Data("#include <set>\n",
+                    "#include <QPointer>\n"
+                    "#include <QObject>\n"
                     "QObject ob;\n"
                     "std::set<QPointer<QObject> > hash;\n"
                     "QPointer<QObject> ptr(&ob);\n")
@@ -1829,12 +1893,10 @@ void tst_Dumpers::dumper_data()
                     "std::stack<Foo *> s, s0;\n"
                     "s.push(new Foo(1));\n"
                     "s.push(new Foo(2));\n")
-               % Check("s", "<0 items>", "std::stack<Foo*>")
-               % Check("s", "<1 items>", "std::stack<Foo*>")
                % Check("s", "<2 items>", "std::stack<Foo*>")
-               % Check("s.0", "", "Foo")
+               % Check("s.0", "[0]", "", "Foo")
                % Check("s.0.a", "1", "int")
-               % Check("s.1", "", "Foo")
+               % Check("s.1", "[1]", "", "Foo")
                % Check("s.1.a", "2", "int");
 
     QTest::newRow("StdStack4")
@@ -1870,7 +1932,9 @@ void tst_Dumpers::dumper_data()
                % Check("wstr", "\"eeee\"", "std::wstring");
 
     QTest::newRow("StdString2")
-            << Data("#include <string>\n",
+            << Data("#include <string>\n"
+                    "#include <vector>\n"
+                    "#include <QList>\n",
                     "std::string str = \"foo\";\n"
                     "std::vector<std::string> v;\n"
                     "QList<std::string> l0, l;\n"
@@ -1959,7 +2023,8 @@ void tst_Dumpers::dumper_data()
                % Check("v2.64", "[64]", "false", "bool");
 
     QTest::newRow("StdVector6")
-            << Data("#include <vector>\n",
+            << Data("#include <vector>\n"
+                    "#include <list>\n",
                     "std::vector<std::list<int> *> vector;\n"
                     "std::list<int> list;\n"
                     "vector.push_back(new std::list<int>(list));\n"
@@ -1976,7 +2041,7 @@ void tst_Dumpers::dumper_data()
                % Check("vector.3", "[3]", "0x0", "std::list<int> *");
 
     QTest::newRow("StdStream")
-            << Data("#include <vector>\n",
+            << Data("#include <ifstream>\n",
                     "using namespace std;\n"
                     "ifstream is0, is;\n"
                     "#ifdef Q_OS_WIN\n"
@@ -2098,24 +2163,24 @@ void tst_Dumpers::dumper_data()
                % Check("str2", "\"ello\"", "@QString");
 
     QTest::newRow("QString3")
-                  << Data(
-        "QString str = \"Hello \";\n"
-        "str += \" big, \";\n"
-        "str += \" World \";\n"
-        "QString string(\"String Test\");\n"
-        "QString *pstring = new QString(\"Pointer String Test\");\n"
-        "stringRefTest(QString(\"Ref String Test\"));\n"
-        "string = \"Hi\";\n"
-        "string += \"Du\";\n"
-//void stringRefTest(const QString &refstring)\n"
-//        dummyStatement(&refstring);\n"
-             )
-         % Check("pstring", "", "@QString")
-         % Check("str", "\"Hello World\"", "@QString")
-         % Check("string", "\"HiDu\"", "@QString");
+            << Data("#include <QString>\n"
+                    "void stringRefTest(const QString &refstring) { stopper(); }\n",
+                    "stringRefTest(QString(\"Ref String Test\"));\n")
+               % Check("refstring", "\"Ref String Test\"", "@QString &");
+
+    QTest::newRow("QString4")
+            << Data("#include <QString>\n"
+                    "QString str = \"Hello \";\n"
+                    "QString string(\"String Test\");\n"
+                    "QString *pstring = new QString(\"Pointer String Test\");\n"
+                    "dummyStatement(&str, &string, &pstring);\n")
+               % Check("pstring", "\"Pointer String Test\"", "@QString")
+               % Check("str", "\"Hello \"", "@QString")
+               % Check("string", "\"String Test\"", "@QString");
 
     QTest::newRow("QStringRef1")
-            << Data("QString str = \"Hello\";\n"
+            << Data("#include <QStringRef>\n",
+                    "QString str = \"Hello\";\n"
                     "QStringRef ref(&str, 1, 2);")
                % Check("ref", "\"el\"", "@QStringRef");
 
@@ -2691,24 +2756,28 @@ void tst_Dumpers::dumper_data()
 //}
 
 
-//    QTest::newRow("Int()
-//        "quint64 u64 = ULLONG_MAX;\n"
-//        "qint64 s64 = LLONG_MAX;\n"
-//        "quint32 u32 = ULONG_MAX;\n"
-//        "qint32 s32 = LONG_MAX;\n"
-//        "quint64 u64s = 0;\n"
-//        "qint64 s64s = LLONG_MIN;\n"
-//        "quint32 u32s = 0;\n"
-//        "qint32 s32s = LONG_MIN;\n"
-
-//         % Check("u64", "18446744073709551615", "quint64");
-//         % Check("s64", "9223372036854775807", "qint64");
-//         % Check("u32", "4294967295", "quint32");
-//         % Check("s32", "2147483647", "qint32");
-//         % Check("u64s", "0", "quint64");
-//         % Check("s64s", "-9223372036854775808", "qint64");
-//         % Check("u32s", "0", "quint32");
-//         % Check("s32s", "-2147483648", "qint32");
+    QTest::newRow("Int")
+            << Data("#include <qglobal.h>\n"
+                    "#include <limits.h>\n"
+                    "#include <QString>\n",
+                    "quint64 u64 = ULLONG_MAX;\n"
+                    "qint64 s64 = LLONG_MAX;\n"
+                    "quint32 u32 = ULONG_MAX;\n"
+                    "qint32 s32 = LONG_MAX;\n"
+                    "quint64 u64s = 0;\n"
+                    "qint64 s64s = LLONG_MIN;\n"
+                    "quint32 u32s = 0;\n"
+                    "qint32 s32s = LONG_MIN;\n"
+                    "QString dummy; // needed to get namespace\n"
+                    "dummyStatement(&u64, &s64, &u32, &s32, &u64s, &s64s, &u32s, &s32s, &dummy);\n")
+               % Check("u64", "18446744073709551615", "@quint64")
+               % Check("s64", "9223372036854775807", "@qint64")
+               % Check("u32", "4294967295", "@quint32")
+               % Check("s32", "2147483647", "@qint32")
+               % Check("u64s", "0", "@quint64")
+               % Check("s64s", "-9223372036854775808", "@qint64")
+               % Check("u32s", "0", "@quint32")
+               % Check("s32s", "-2147483648", "@qint32");
 
 
 //    QTest::newRow("Array1")
@@ -2760,72 +2829,66 @@ void tst_Dumpers::dumper_data()
 //         % Check("b.4 "" QByteArray");
 //         % Check("b.19 "" QByteArray");
 
-//    QTest::newRow("Array5")
-//                  << Data(
-//        "Foo foo[10];\n"
-//        "//for (int i = 0; i != sizeof(foo)/sizeof(foo[0]); ++i) {\n"
-//        "for (int i = 0; i < 5; ++i) {\n"
-//        "    foo[i].a = i;\n"
-//        "    foo[i].doit")\n"
-//        "                  << Data(\n"
-//        "}\n"
-//         % CheckType("foo Foo [10]");
-//         % Check("foo.0", "Foo");
-//         % Check("foo.9", "Foo");
+    QTest::newRow("Array5")
+            << Data(fooData,
+                    "Foo foo[10];\n"
+                    "for (int i = 0; i < 5; ++i)\n"
+                    "    foo[i].a = i;\n")
+               % CheckType("foo", "Foo [10]")
+               % Check("foo.0", "[0]", "", "Foo")
+               % Check("foo.9", "[9]", "", "Foo");
 
 
     QTest::newRow("Bitfields")
             << Data("struct S\n"
                     "{\n"
-                    "    uint x : 1;\n"
-                    "    uint y : 1;\n"
+                    "    S() : x(0), y(0), c(0), b(0), f(0), d(0), i(0) {}\n"
+                    "    unsigned int x : 1;\n"
+                    "    unsigned int y : 1;\n"
                     "    bool c : 1;\n"
                     "    bool b;\n"
                     "    float f;\n"
                     "    double d;\n"
-                    "    qreal q;\n"
                     "    int i;\n"
-                    "};\n"
-                    "\n"
-                    "S s;\n")
+                    "} s;\n"
+                    "dummyStatement(&s);\n")
                % Check("s", "", "S")
-               % Check("s.b", "", "bool")
-               % Check("s.c", "", "bool")
-               % Check("s.d", "", "double")
-               % Check("s.f", "", "float")
-               % Check("s.i", "", "int")
-               % Check("s.q", "", "qreal")
-               % Check("s.x", "", "uint")
-               % Check("s.y", "", "uint");
+               % Check("s.b", "false", "bool")
+               % Check("s.c", "false", "bool")
+               % Check("s.d", "0", "double")
+               % Check("s.f", "0", "float")
+               % Check("s.i", "0", "int")
+               % Check("s.x", "0", "unsigned int")
+               % Check("s.y", "0", "unsigned int");
 
 
     QTest::newRow("Function")
-                  << Data("#include <QByteArray>\n",
-    "struct Function\n"
-    "{\n"
-    "    Function(QByteArray var, QByteArray f, double min, double max)\n"
-    "      : var(var), f(f), min(min), max(max) {}\n"
-    "    QByteArray var;\n"
-    "    QByteArray f;\n"
-    "    double min;\n"
-    "    double max;\n"
-    "};\n"
-        "// In order to use this, switch on the 'qDump__Function' in dumper.py\n"
-        "Function func0, func(\"x\", \"sin(x)\", 0, 1);\n"
-        "func.max = 10;\n"
-        "func.f = \"cos(x)\";\n"
-        "func.max = 4;\n"
-        "func.max = 5;\n"
-        "func.max = 6;\n"
-        "func.max = 7;\n")
-         % Check("func", "", "basic::Function")
-         % Check("func.f", "sin(x)", "@QByteArray")
-         % Check("func.max", "1", "double")
-         % Check("func.min", "0", "double")
-         % Check("func.var", "\"x\"", "@QByteArray")
-         % Check("func", "", "basic::Function")
-         % Check("func.f", "\"cos(x)\"", "@QByteArray")
-         % Check("func.max", "7", "double");
+            << Data("#include <QByteArray>\n"
+                    "struct Function\n"
+                    "{\n"
+                    "    Function(QByteArray var, QByteArray f, double min, double max)\n"
+                    "      : var(var), f(f), min(min), max(max) {}\n"
+                    "    QByteArray var;\n"
+                    "    QByteArray f;\n"
+                    "    double min;\n"
+                    "    double max;\n"
+                    "};\n",
+                    "// In order to use this, switch on the 'qDump__Function' in dumper.py\n"
+                    "Function func(\"x\", \"sin(x)\", 0, 1);\n"
+                    "func.max = 10;\n"
+                    "func.f = \"cos(x)\";\n"
+                    "func.max = 4;\n"
+                    "func.max = 5;\n"
+                    "func.max = 6;\n"
+                    "func.max = 7;\n")
+               % Check("func", "", "Function")
+               % Check("func.f", "sin(x)", "@QByteArray")
+               % Check("func.max", "1", "double")
+               % Check("func.min", "0", "double")
+               % Check("func.var", "\"x\"", "@QByteArray")
+               % Check("func", "", "Function")
+               % Check("func.f", "\"cos(x)\"", "@QByteArray")
+               % Check("func.max", "7", "double");
 
 //    QTest::newRow("AlphabeticSorting")
 //                  << Data(
@@ -2977,7 +3040,8 @@ void tst_Dumpers::dumper_data()
     QTest::newRow("DynamicReference")
             << Data("DerivedClass d;\n"
                     "BaseClass *b1 = &d;\n"
-                    "BaseClass &b2 = d;\n")
+                    "BaseClass &b2 = d;\n"
+                    "dummyStatement(&b1, &b2);\n")
                % CheckType("b1", "DerivedClass *")
                % CheckType("b2", "DerivedClass &");
 
@@ -3706,6 +3770,7 @@ void tst_Dumpers::dumper_data()
                     "    double f = va_arg(arg, double);\n"
                     "    dummyStatement(&i, &f);\n"
                     "    va_end(arg);\n"
+                    "    stopper();\n"
                     "}\n",
                     "test(\"abc\", 1, 2.0);\n")
                % Check("i", "1", "int")