From 27fddc8dc71b77144a8f53fb4837fb3229f937bd Mon Sep 17 00:00:00 2001 From: Artem Sokolovskii Date: Fri, 29 Apr 2022 12:43:37 +0200 Subject: [PATCH] Debugger: Remove foreach / Q_FOREACH usage Task-number: QTCREATORBUG-27464 Change-Id: Ib49afb4d0283aeeffead6b31e1a3d0bcb9a7ae14 Reviewed-by: Reviewed-by: hjk --- src/plugins/debugger/debuggerengine.cpp | 7 +++-- src/plugins/debugger/debuggerruncontrol.cpp | 2 +- .../debugger/debuggertooltipmanager.cpp | 3 +- src/plugins/debugger/disassembleragent.cpp | 3 +- src/plugins/debugger/gdb/gdbengine.cpp | 29 ++++++++++--------- src/plugins/debugger/qml/qmlengine.cpp | 21 ++++++++------ src/plugins/debugger/qml/qmlengineutils.cpp | 3 +- .../debugger/qml/qmlinspectoragent.cpp | 6 ++-- src/plugins/debugger/threadshandler.cpp | 2 +- src/plugins/debugger/watchhandler.cpp | 18 +++++++----- 10 files changed, 54 insertions(+), 40 deletions(-) diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index d82a89ec2b6..fbd3701bc14 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -1611,7 +1611,8 @@ void DebuggerEnginePrivate::cleanupViews() const bool closeMemory = debuggerSettings()->closeMemoryBuffersOnExit.value(); QList toClose; - foreach (IDocument *document, DocumentModel::openedDocuments()) { + const QList documents = DocumentModel::openedDocuments(); + for (IDocument *document : documents) { const bool isMemory = document->property(Constants::OPENED_WITH_DISASSEMBLY).toBool(); if (document->property(Constants::OPENED_BY_DEBUGGER).toBool()) { bool keepIt = true; @@ -2501,8 +2502,8 @@ void DebuggerEngine::handleExecRunToSelectedFunction() QString functionName = cursor.selectedText(); if (functionName.isEmpty()) { const QTextBlock block = cursor.block(); - const QString line = block.text(); - foreach (const QString &str, line.trimmed().split('(')) { + const QStringList lineList = block.text().trimmed().split('('); + for (const QString &str : lineList) { QString a; for (int i = str.size(); --i >= 0; ) { if (!str.at(i).isLetterOrNumber()) diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index d383ec69de9..69fd6fd35f1 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -213,7 +213,7 @@ void DebuggerRunTool::setStartMode(DebuggerStartMode startMode) projects.removeOne(startupProject); projects.insert(0, startupProject); } - foreach (Project *project, projects) + for (Project *project : qAsConst(projects)) m_runParameters.projectSourceFiles.append(project->files(Project::SourceFiles)); if (!projects.isEmpty()) m_runParameters.projectSourceDirectory = projects.first()->projectDirectory(); diff --git a/src/plugins/debugger/debuggertooltipmanager.cpp b/src/plugins/debugger/debuggertooltipmanager.cpp index 814b71ecfb3..8a6eab069a1 100644 --- a/src/plugins/debugger/debuggertooltipmanager.cpp +++ b/src/plugins/debugger/debuggertooltipmanager.cpp @@ -1319,7 +1319,8 @@ void DebuggerToolTipManagerPrivate::leavingDebugMode() hideAllToolTips(); if (QWidget *topLevel = ICore::mainWindow()->topLevelWidget()) topLevel->removeEventFilter(this); - foreach (IEditor *e, DocumentModel::editorsForOpenedDocuments()) { + const QList editors = DocumentModel::editorsForOpenedDocuments(); + for (IEditor *e : editors) { if (auto toolTipEditor = qobject_cast(e)) { toolTipEditor->editorWidget()->verticalScrollBar()->disconnect(this); toolTipEditor->editorWidget()->disconnect(this); diff --git a/src/plugins/debugger/disassembleragent.cpp b/src/plugins/debugger/disassembleragent.cpp index d56bac0c9d8..38d7af3b45d 100644 --- a/src/plugins/debugger/disassembleragent.cpp +++ b/src/plugins/debugger/disassembleragent.cpp @@ -265,7 +265,8 @@ void DisassemblerAgentPrivate::configureMimeType() Utils::MimeType mtype = Utils::mimeTypeForName(mimeType); if (mtype.isValid()) { - foreach (IEditor *editor, DocumentModel::editorsForDocument(document)) + const QList editors = DocumentModel::editorsForDocument(document); + for (IEditor *editor : editors) if (auto widget = TextEditorWidget::fromEditor(editor)) widget->configureGenericHighlighter(); } else { diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 93aff153bc2..ddad71e0371 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -818,13 +818,13 @@ void GdbEngine::commandTimeout() QList keys = m_commandForToken.keys(); Utils::sort(keys); bool killIt = false; - foreach (int key, keys) { + for (int key : qAsConst(keys)) { const DebuggerCommand &cmd = m_commandForToken.value(key); killIt = true; showMessage(QString::number(key) + ": " + cmd.function); } QStringList commands; - foreach (const DebuggerCommand &cmd, m_commandForToken) + for (const DebuggerCommand &cmd : qAsConst(m_commandForToken)) commands << QString("\"%1\"").arg(cmd.function); if (killIt) { showMessage(QString("TIMED OUT WAITING FOR GDB REPLY. " @@ -2606,7 +2606,7 @@ void GdbEngine::insertBreakpoint(const Breakpoint &bp) QVariant tpCaps = bp->property(tracepointCapturePropertyName); if (tpCaps.isValid()) { QJsonArray caps; - foreach (const auto &tpCap, tpCaps.toList()) { + for (const QVariant &tpCap : tpCaps.toList()) { TracepointCaptureData data = tpCap.value(); QJsonArray cap; cap.append(static_cast(data.type)); @@ -2844,7 +2844,8 @@ static void handleShowModuleSymbols(const DebuggerResponse &response, // Object file /opt/dev/qt/lib/libQtNetworkMyns.so.4: // [ 0] A 0x16bd64 _DYNAMIC moc_qudpsocket.cpp // [12] S 0xe94680 _ZN4myns5QFileC1Ev section .plt myns::QFile::QFile() - foreach (const QString &line, QString::fromLocal8Bit(file.readAll()).split('\n')) { + const QStringList lines = QString::fromLocal8Bit(file.readAll()).split('\n'); + for (const QString &line : lines) { if (line.isEmpty()) continue; if (line.at(0) != '[') @@ -2928,7 +2929,7 @@ void GdbEngine::handleShowModuleSections(const DebuggerResponse &response, const QString needle = prefix + moduleName; Sections sections; bool active = false; - foreach (const QString &line, lines) { + for (const QString &line : qAsConst(lines)) { if (line.startsWith(prefix)) { if (active) break; @@ -3752,7 +3753,8 @@ bool GdbEngine::handleCliDisassemblerResult(const QString &output, DisassemblerA // First line is something like // "Dump of assembler code from 0xb7ff598f to 0xb7ff5a07:" DisassemblerLines dlines; - foreach (const QString &line, output.split('\n')) + const QStringList lineList = output.split('\n'); + for (const QString &line : lineList) dlines.appendUnparsed(line); QVector lines = dlines.data(); @@ -3829,10 +3831,10 @@ void GdbEngine::setupEngine() gdbCommand.addArg("--tty=" + m_outputCollector.serverName()); } - const QString tests = QString::fromLocal8Bit(qgetenv("QTC_DEBUGGER_TESTS")); - foreach (const QString &test, tests.split(',')) + const QStringList testList = QString::fromLocal8Bit(qgetenv("QTC_DEBUGGER_TESTS")).split(','); + for (const QString &test : testList) m_testCases.insert(test.toInt()); - foreach (int test, m_testCases) + for (int test : qAsConst(m_testCases)) showMessage("ENABLING TEST CASE: " + QString::number(test)); m_expectTerminalTrap = terminal(); @@ -4052,7 +4054,8 @@ void GdbEngine::setEnvironmentVariables() Environment sysEnv = Environment::systemEnvironment(); Environment runEnv = runParameters().inferior.environment; - foreach (const EnvironmentItem &item, sysEnv.diff(runEnv)) { + const NameValueItems items = sysEnv.diff(runEnv); + for (const EnvironmentItem &item : items) { // imitate the weird windows gdb behavior of setting the case of the path environment // variable name to an all uppercase PATH const QString name = isWindowsPath(item.name) ? "PATH" : item.name; @@ -4103,8 +4106,8 @@ void GdbEngine::abortDebuggerProcess() void GdbEngine::resetInferior() { if (!runParameters().commandsForReset.isEmpty()) { - const QString commands = expand(runParameters().commandsForReset); - foreach (QString command, commands.split('\n')) { + const QStringList commands = expand(runParameters().commandsForReset).split('\n'); + for (QString command : commands) { command = command.trimmed(); if (!command.isEmpty()) runCommand({command, ConsoleCommand | NeedsTemporaryStop | NativeCommand}); @@ -4185,7 +4188,7 @@ void GdbEngine::resetCommandQueue() QString msg; QTextStream ts(&msg); ts << "RESETING COMMAND QUEUE. LEFT OVER TOKENS: "; - foreach (const DebuggerCommand &cmd, m_commandForToken) + for (const DebuggerCommand &cmd : qAsConst(m_commandForToken)) ts << "CMD:" << cmd.function; m_commandForToken.clear(); m_flagsForToken.clear(); diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 11d41d6e6af..b888c5976d0 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -472,7 +472,8 @@ void QmlEngine::gotoLocation(const Location &location) QString titlePattern = tr("JS Source for %1").arg(fileName); //Check if there are open documents with the same title - foreach (IDocument *document, DocumentModel::openedDocuments()) { + const QList documents = DocumentModel::openedDocuments(); + for (IDocument *document: documents) { if (document->displayName() == titlePattern) { EditorManager::activateEditorForDocument(document); return; @@ -895,7 +896,7 @@ static ConsoleItem *constructLogItemTree(const QVariant &result, std::sort(children.begin(), children.end(), compareConsoleItems); item = new ConsoleItem(ConsoleItem::DefaultType, text); - foreach (ConsoleItem *child, children) { + for (ConsoleItem *child : qAsConst(children)) { if (child) item->appendChild(child); } @@ -915,7 +916,7 @@ static ConsoleItem *constructLogItemTree(const QVariant &result, std::sort(children.begin(), children.end(), compareConsoleItems); item = new ConsoleItem(ConsoleItem::DefaultType, text); - foreach (ConsoleItem *child, children) { + for (ConsoleItem *child : qAsConst(children)) { if (child) item->appendChild(child); } @@ -1102,7 +1103,8 @@ void QmlEnginePrivate::updateScriptSource(const QString &fileName, int lineOffse //update open editors QString titlePattern = QCoreApplication::translate("QmlEngine", "JS Source for %1").arg(fileName); //Check if there are open editors with the same title - foreach (IDocument *doc, DocumentModel::openedDocuments()) { + const QList documents = DocumentModel::openedDocuments(); + for (IDocument *doc: documents) { if (doc->displayName() == titlePattern) { updateDocument(doc, document); break; @@ -1646,7 +1648,8 @@ void QmlEnginePrivate::runDirectCommand(const QString &type, const QByteArray &m void QmlEnginePrivate::memorizeRefs(const QVariant &refs) { if (refs.isValid()) { - foreach (const QVariant &ref, refs.toList()) { + const QList refList = refs.toList(); + for (const QVariant &ref : refList) { const QVariantMap refData = ref.toMap(); int handle = refData.value(HANDLE).toInt(); refVals[handle] = extractData(refData); @@ -1811,7 +1814,7 @@ void QmlEnginePrivate::messageReceived(const QByteArray &data) } QMap files; - foreach (const QString &file, sourceFiles) { + for (const QString &file : qAsConst(sourceFiles)) { QString shortName = file; QString fullName = engine->toFileInProject(file); files.insert(shortName, fullName); @@ -2238,7 +2241,7 @@ void QmlEnginePrivate::constructChildLogItems(ConsoleItem *item, const QmlV8Obje if (debuggerSettings()->sortStructMembers.value()) std::sort(children.begin(), children.end(), compareConsoleItems); - foreach (ConsoleItem *child, children) + for (ConsoleItem *child : qAsConst(children)) item->appendChild(child); } @@ -2364,7 +2367,7 @@ void QmlEnginePrivate::handleExecuteDebuggerCommand(const QVariantMap &response) debuggerConsole()->printItem(constructLogItemTree(extractData(response.value(BODY)))); // Update the locals - foreach (int index, currentFrameScopes) + for (int index : qAsConst(currentFrameScopes)) scope(index); } else { debuggerConsole()->printItem(new ConsoleItem(ConsoleItem::ErrorType, @@ -2439,7 +2442,7 @@ void QmlEnginePrivate::handleVersion(const QVariantMap &response) void QmlEnginePrivate::flushSendBuffer() { QTC_ASSERT(state() == Enabled, return); - foreach (const QByteArray &msg, sendBuffer) + for (const QByteArray &msg : qAsConst(sendBuffer)) sendMessage(msg); sendBuffer.clear(); } diff --git a/src/plugins/debugger/qml/qmlengineutils.cpp b/src/plugins/debugger/qml/qmlengineutils.cpp index 5b5bef2a86f..3fe5c4c8ddd 100644 --- a/src/plugins/debugger/qml/qmlengineutils.cpp +++ b/src/plugins/debugger/qml/qmlengineutils.cpp @@ -237,7 +237,8 @@ void clearExceptionSelection() { QList selections; - foreach (IEditor *editor, DocumentModel::editorsForOpenedDocuments()) { + const QList editors = DocumentModel::editorsForOpenedDocuments(); + for (IEditor *editor : editors) { if (auto ed = TextEditorWidget::fromEditor(editor)) ed->setExtraSelections(TextEditorWidget::DebuggerExceptionSelection, selections); } diff --git a/src/plugins/debugger/qml/qmlinspectoragent.cpp b/src/plugins/debugger/qml/qmlinspectoragent.cpp index 0e9be2bb5dc..3aa668c78d0 100644 --- a/src/plugins/debugger/qml/qmlinspectoragent.cpp +++ b/src/plugins/debugger/qml/qmlinspectoragent.cpp @@ -649,7 +649,8 @@ void QmlInspectorAgent::addWatchData(const ObjectReference &obj, propertiesWatch->value = "list"; propertiesWatch->wantsChildren = true; - foreach (const PropertyReference &property, obj.properties()) { + const QList properties = obj.properties(); + for (const PropertyReference &property : properties) { const QString propertyName = property.name(); if (propertyName.isEmpty()) continue; @@ -669,7 +670,8 @@ void QmlInspectorAgent::addWatchData(const ObjectReference &obj, } // recurse - foreach (const ObjectReference &child, obj.children()) + const QList children = obj.children(); + for (const ObjectReference &child : children) addWatchData(child, objIname, append); } diff --git a/src/plugins/debugger/threadshandler.cpp b/src/plugins/debugger/threadshandler.cpp index aa96264e313..07e9fb8ae36 100644 --- a/src/plugins/debugger/threadshandler.cpp +++ b/src/plugins/debugger/threadshandler.cpp @@ -331,7 +331,7 @@ bool ThreadsHandler::notifyGroupExited(const QString &groupId) if (item->threadData.groupId == groupId) list.append(item); }); - foreach (ThreadItem *item, list) + for (ThreadItem *item : qAsConst(list)) destroyItem(item); m_pidForGroupId.remove(groupId); diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 8818ceb4fd3..60d0ee8e406 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -1172,7 +1172,8 @@ bool WatchModel::setData(const QModelIndex &idx, const QVariant &value, int role if (auto kev = ev.as(QEvent::KeyPress)) { if (item && (kev->key() == Qt::Key_Delete || kev->key() == Qt::Key_Backspace) && item->isWatcher()) { - foreach (const QModelIndex &idx, ev.selectedRows()) + const QModelIndexList selectedRows = ev.selectedRows(); + for (const QModelIndex &idx : selectedRows) removeWatchItem(itemForIndex(idx)); return true; } @@ -1544,7 +1545,7 @@ MemoryMarkupList WatchModel::variableMemoryMarkup(WatchItem *item, name = ranges.at(i).second; } dbg << '\n'; - foreach (const MemoryMarkup &m, result) + for (const MemoryMarkup &m : qAsConst(result)) dbg << m.address << ' ' << m.length << ' ' << m.toolTip << '\n'; } @@ -2180,7 +2181,7 @@ void WatchHandler::insertItems(const GdbMi &data) itemsToSort.insert(static_cast(item->parent())); } - foreach (WatchItem *toplevel, itemsToSort) + for (WatchItem *toplevel : qAsConst(itemsToSort)) toplevel->sortChildren(&sortByName); } @@ -2219,7 +2220,7 @@ bool WatchHandler::insertItem(WatchItem *item) void WatchModel::reexpandItems() { - foreach (const QString &iname, m_expandedINames) { + for (const QString &iname : qAsConst(m_expandedINames)) { if (WatchItem *item = findItem(iname)) { emit itemIsExpanded(indexForItem(item)); emit inameIsExpanded(iname); @@ -2297,7 +2298,7 @@ void WatchHandler::notifyUpdateFinished() return true; }); - foreach (auto item, toRemove) + for (WatchItem *item : qAsConst(toRemove)) m_model->destroyItem(item); m_model->forAllItems([this](WatchItem *item) { @@ -2582,7 +2583,8 @@ void WatchHandler::loadSessionDataForEngine() theWatcherCount = 0; QVariant value = SessionManager::value("Watchers"); m_model->m_watchRoot->removeChildren(); - foreach (const QString &exp, value.toStringList()) + const QStringList valueList = value.toStringList(); + for (const QString &exp : valueList) watchExpression(exp.trimmed()); } @@ -2765,8 +2767,8 @@ void WatchHandler::addDumpers(const GdbMi &dumpers) for (const GdbMi &dumper : dumpers) { DisplayFormats formats; formats.append(RawFormat); - QString reportedFormats = dumper["formats"].data(); - foreach (const QString &format, reportedFormats.split(',')) { + const QStringList reportedFormats = dumper["formats"].data().split(','); + for (const QString &format : reportedFormats) { if (int f = format.toInt()) formats.append(DisplayFormat(f)); }