From 8c5c849b71dd2175acfdf70d761966c39bbad67d Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 7 Mar 2024 10:50:20 +0100 Subject: [PATCH] CppEditor: Refactor AddBracesToControlStatement quickfix Preparation for bracifying if-else chains. No functional changes. Change-Id: Idc101131c02aac88598a6de1f8f511f89c958346 Reviewed-by: Qt CI Bot Reviewed-by: Christian Stenger Reviewed-by: --- src/plugins/cppeditor/cppquickfixes.cpp | 34 ++++++++++++------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/plugins/cppeditor/cppquickfixes.cpp b/src/plugins/cppeditor/cppquickfixes.cpp index df6c76bcf60..383c5245ae1 100644 --- a/src/plugins/cppeditor/cppquickfixes.cpp +++ b/src/plugins/cppeditor/cppquickfixes.cpp @@ -808,9 +808,10 @@ int tokenToInsertOpeningBraceAfter(const Statement *statement) template class AddBracesToControlStatementOp : public CppQuickFixOperation { public: - AddBracesToControlStatementOp(const CppQuickFixInterface &interface, const Statement *statement) + AddBracesToControlStatementOp(const CppQuickFixInterface &interface, + const QList &statements) : CppQuickFixOperation(interface, 0) - , _statement(statement) + , m_statements(statements) { setDescription(Tr::tr("Add Curly Braces")); } @@ -821,26 +822,24 @@ public: CppRefactoringFilePtr currentFile = refactoring.cppFile(filePath()); ChangeSet changes; - - const int start = currentFile->endOf(tokenToInsertOpeningBraceAfter(_statement)); - changes.insert(start, QLatin1String(" {")); - - if constexpr (std::is_same_v) { - const int end = currentFile->startOf(_statement->while_token); - changes.insert(end, QLatin1String("} ")); - } else { - const int end = currentFile->endOf(_statement->statement->lastToken() - 1); - changes.insert(end, QLatin1String("\n}")); + for (Statement * const statement : m_statements) { + const int start = currentFile->endOf(tokenToInsertOpeningBraceAfter(statement)); + changes.insert(start, QLatin1String(" {")); + if constexpr (std::is_same_v) { + const int end = currentFile->startOf(statement->while_token); + changes.insert(end, QLatin1String("} ")); + } else { + const int end = currentFile->endOf(statement->statement->lastToken() - 1); + changes.insert(end, QLatin1String("\n}")); + } } - // TODO: For if statements, also bracify all else cases. - // Also check all else cases in the factory. currentFile->setChangeSet(changes); currentFile->apply(); } private: - const Statement * const _statement; + const QList m_statements; }; } // anonymous namespace @@ -854,7 +853,7 @@ bool checkControlStatementsHelper(const CppQuickFixInterface &interface, QuickFi if (interface.isCursorOn(triggerToken(statement)) && statement->statement && !statement->statement->asCompoundStatement()) { - result << new AddBracesToControlStatementOp(interface, statement); + result << new AddBracesToControlStatementOp(interface, QList{statement}); } return true; } @@ -865,7 +864,8 @@ void checkControlStatements(const CppQuickFixInterface &interface, QuickFixOpera (... || checkControlStatementsHelper(interface, result)); } -void AddBracesToControlStatement::doMatch(const CppQuickFixInterface &interface, QuickFixOperations &result) +void AddBracesToControlStatement::doMatch(const CppQuickFixInterface &interface, + QuickFixOperations &result) { if (interface.path().isEmpty()) return;