diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index ab3a964c13e38a0051cee1c6da36865bd7499e23..36b4ca5315fc60a8ff9c15585417045cb71c383e 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -1933,7 +1933,7 @@ void CdbEngine::handleLocals(const CdbExtensionCommandPtr &reply)
             WatchData dummy;
             dummy.iname = child["iname"].data();
             dummy.name = QLatin1String(child["name"].data());
-            parseWatchData(handler->expandedINames(), dummy, child, &watchData);
+            parseWatchData(dummy, child, &watchData);
         }
         // Fix the names of watch data.
         for (int i =0; i < watchData.size(); ++i) {
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 223acde6d433d6597023fb1aa2d539d8897d4e7c..2dc4ce2e89be301e155aad5040361f4a6c8974ca 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -4968,7 +4968,7 @@ void GdbEngine::handleStackFramePython(const GdbResponse &response)
                 name = _(child["name"].data());
 
             WatchItem *item = new WatchItem(iname, name);
-            item->parseWatchData(handler->expandedINames(), child);
+            item->parseWatchData(child);
 
             const TypeInfo ti = m_typeInfoCache.value(item->d.type);
             if (ti.size)
diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp
index d68dba73e47ef648fbdbba9cd3ed28df0f747fc6..cd4d78fc5d824b9b62cae702691e126f31c5027e 100644
--- a/src/plugins/debugger/lldb/lldbengine.cpp
+++ b/src/plugins/debugger/lldb/lldbengine.cpp
@@ -1029,7 +1029,7 @@ void LldbEngine::refreshLocals(const GdbMi &vars)
             name = QString::fromLatin1(child["name"].data());
 
         WatchItem *item = new WatchItem(iname, name);
-        item->parseWatchData(handler->expandedINames(), child);
+        item->parseWatchData(child);
 
         if (wname.isValid())
             item->d.exp = name.toUtf8();
diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp
index b332b82e83035e18ee40564a1288548058168180..209201080c8778613288492896cc5b47c5b7ef92 100644
--- a/src/plugins/debugger/pdb/pdbengine.cpp
+++ b/src/plugins/debugger/pdb/pdbengine.cpp
@@ -808,7 +808,7 @@ void PdbEngine::handleListLocals(const PdbResponse &response)
 
     foreach (const GdbMi &child, all.children()) {
         WatchItem *item = new WatchItem(child["iname"].data(), _(child["name"].data()));
-        item->parseWatchData(handler->expandedINames(), child);
+        item->parseWatchData(child);
         handler->insertItem(item);
         toDelete.remove(item->d.iname);
     }
diff --git a/src/plugins/debugger/watchdata.cpp b/src/plugins/debugger/watchdata.cpp
index 9288bb341a0d9949407564b47acbf981dc4643f0..f30542431e0b4f2ac445976ced4e2e1a0346d45f 100644
--- a/src/plugins/debugger/watchdata.cpp
+++ b/src/plugins/debugger/watchdata.cpp
@@ -594,21 +594,16 @@ void decodeArrayData(std::function<void(const WatchData &)> itemHandler, const W
     }
 }
 
-void parseChildrenData(const QSet<QByteArray> &expandedINames,
-                       const WatchData &data0, const GdbMi &item,
+void parseChildrenData(const WatchData &data0, const GdbMi &item,
                        std::function<void(const WatchData &)> itemHandler,
-                       std::function<void(const QSet<QByteArray> &, const WatchData &, const GdbMi &)> childHandler,
+                       std::function<void(const WatchData &, const GdbMi &)> childHandler,
                        std::function<void(const WatchData &childTemplate, const QByteArray &encodedData, int encoding)> arrayDecoder)
 {
     //qDebug() << "HANDLE CHILDREN: " << data0.toString() << item.toString();
     WatchData data = data0;
-    bool isExpanded = expandedINames.contains(data.iname);
-    if (!isExpanded)
-        data.setChildrenUnneeded();
+    data.setChildrenUnneeded();
 
     GdbMi children = item["children"];
-    if (children.isValid() || !isExpanded)
-        data.setChildrenUnneeded();
 
     data.updateType(item["type"]);
     GdbMi mi = item["editvalue"];
@@ -698,28 +693,26 @@ void parseChildrenData(const QSet<QByteArray> &expandedINames,
                 int encoding = child["keyencoded"].toInt();
                 data1.name = decodeData(key, encoding);
             }
-            childHandler(expandedINames, data1, child);
+            childHandler(data1, child);
         }
     }
 }
 
-void parseWatchData(const QSet<QByteArray> &expandedINames,
-    const WatchData &data0, const GdbMi &input,
+void parseWatchData(const WatchData &data0, const GdbMi &input,
     QList<WatchData> *list)
 {
     auto itemHandler = [list](const WatchData &data) {
         list->append(data);
     };
-    auto childHandler = [list](const QSet<QByteArray> &expandedINames,
-            const WatchData &innerData, const GdbMi &innerInput) {
-        parseWatchData(expandedINames, innerData, innerInput, list);
+    auto childHandler = [list](const WatchData &innerData, const GdbMi &innerInput) {
+        parseWatchData(innerData, innerInput, list);
     };
     auto arrayDecoder = [itemHandler](const WatchData &childTemplate,
             const QByteArray &encodedData, int encoding) {
         decodeArrayData(itemHandler, childTemplate, encodedData, encoding);
     };
 
-    parseChildrenData(expandedINames, data0, input, itemHandler, childHandler, arrayDecoder);
+    parseChildrenData(data0, input, itemHandler, childHandler, arrayDecoder);
 }
 
 } // namespace Internal
diff --git a/src/plugins/debugger/watchdata.h b/src/plugins/debugger/watchdata.h
index 53169bc97251c9bdb5813d10ed24885304a3acf9..6fda3f53ff77d85ad6c188ee6dc07b3cec41557c 100644
--- a/src/plugins/debugger/watchdata.h
+++ b/src/plugins/debugger/watchdata.h
@@ -159,19 +159,15 @@ void decodeArrayData(std::function<void(const WatchData &)> itemHandler,
                      const QByteArray &rawData,
                      int encoding);
 
-void parseChildrenData(const QSet<QByteArray> &expandedINames,
-                    const WatchData &parent, const GdbMi &child,
-                    std::function<void(const WatchData &)> itemHandler,
-                    std::function<void(const QSet<QByteArray> &,
-                                       const WatchData &,
-                                       const GdbMi &)> childHandler,
-                    std::function<void(const WatchData &childTemplate,
-                                       const QByteArray &encodedData,
-                                       int encoding)> arrayDecoder);
-
-void parseWatchData(const QSet<QByteArray> &expandedINames,
-    const WatchData &parent, const GdbMi &child,
-    QList<WatchData> *insertions);
+void parseChildrenData(const WatchData &parent, const GdbMi &child,
+                       std::function<void(const WatchData &)> itemHandler,
+                       std::function<void(const WatchData &, const GdbMi &)> childHandler,
+                       std::function<void(const WatchData &childTemplate,
+                                          const QByteArray &encodedData,
+                                          int encoding)> arrayDecoder);
+
+void parseWatchData(const WatchData &parent, const GdbMi &child,
+                    QList<WatchData> *insertions);
 
 } // namespace Internal
 } // namespace Debugger
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index a4f5363d6a29f3b8ddbc2cfa5d7fd79672a898d4..2986ea3256790c10d77d78d9e7fdc73af3d86e4e 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -1928,15 +1928,14 @@ WatchModel *WatchItem::watchModel()
     return static_cast<WatchModel *>(model());
 }
 
-void WatchItem::parseWatchData(const QSet<QByteArray> &expandedINames, const GdbMi &input)
+void WatchItem::parseWatchData(const GdbMi &input)
 {
     auto itemHandler = [this](const WatchData &data) {
         d = data;
     };
-    auto childHandler = [this](const QSet<QByteArray> &expandedINames,
-            const WatchData &innerData, const GdbMi &innerInput) {
+    auto childHandler = [this](const WatchData &innerData, const GdbMi &innerInput) {
         WatchItem *item = new WatchItem(innerData);
-        item->parseWatchData(expandedINames, innerInput);
+        item->parseWatchData(innerInput);
         appendChild(item);
     };
 
@@ -1949,7 +1948,7 @@ void WatchItem::parseWatchData(const QSet<QByteArray> &expandedINames, const Gdb
         decodeArrayData(itemAdder, childTemplate, encodedData, encoding);
     };
 
-    parseChildrenData(expandedINames, d, input, itemHandler, childHandler, arrayDecoder);
+    parseChildrenData(d, input, itemHandler, childHandler, arrayDecoder);
 }
 
 } // namespace Internal
diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h
index 4a1ba185b233d8f337e10dbc029aa401c977c3d0..b6cafc14e97b00595b3811f270f2b0d9f0e1a524 100644
--- a/src/plugins/debugger/watchhandler.h
+++ b/src/plugins/debugger/watchhandler.h
@@ -75,7 +75,7 @@ public:
     void formatRequests(QByteArray *out) const;
     void showInEditorHelper(QString *contents, int depth) const;
     WatchItem *findItem(const QByteArray &iname);
-    void parseWatchData(const QSet<QByteArray> &expandedINames, const GdbMi &input);
+    void parseWatchData(const GdbMi &input);
 
 public:
     WatchData d;