Merge CppTools into CppEditor

There was no proper separation of responsibilities between these
plugins. In particular, CppTools had lots of editor-related
functionality, so it's not clear why it was separated out in the first
place.
In fact, for a lot of code, it seemed quite arbitrary where it was put
(just one example: switchHeaderSource() was in CppTools, wheras
switchDeclarationDefinition() was in CppEditor).
Merging the plugins will enable us to get rid of various convoluted
pseudo-abstractions that were only introduced to keep up the artificial
separation.

Change-Id: Iafc3bce625b4794f6d4aa03df6cddc7f2d26716a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Kandeler
2021-08-30 10:58:08 +02:00
parent 3e1fa0f170
commit 284817fae6
525 changed files with 3705 additions and 4179 deletions

View File

@@ -25,29 +25,28 @@
#include "cppquickfixes.h"
#include "baseeditordocumentprocessor.h"
#include "cppclassesfilter.h"
#include "cppcodestylesettings.h"
#include "cppeditorconstants.h"
#include "cppeditordocument.h"
#include "cppeditorwidget.h"
#include "cppfunctiondecldeflink.h"
#include "cppinsertvirtualmethods.h"
#include "cpppointerdeclarationformatter.h"
#include "cppquickfixassistant.h"
#include "cppquickfixprojectsettings.h"
#include "cpprefactoringchanges.h"
#include "cpptoolsbridge.h"
#include "cpptoolsreuse.h"
#include "cppvirtualfunctionassistprovider.h"
#include "includeutils.h"
#include "insertionpointlocator.h"
#include "symbolfinder.h"
#include <coreplugin/icore.h>
#include <coreplugin/messagebox.h>
#include <cpptools/baseeditordocumentprocessor.h>
#include <cpptools/cppclassesfilter.h>
#include <cpptools/cppcodestylesettings.h>
#include <cpptools/cpppointerdeclarationformatter.h>
#include <cpptools/cpprefactoringchanges.h>
#include <cpptools/cpptoolsbridge.h>
#include <cpptools/cpptoolsconstants.h>
#include <cpptools/cpptoolsreuse.h>
#include <cpptools/cppvirtualfunctionassistprovider.h>
#include <cpptools/includeutils.h>
#include <cpptools/insertionpointlocator.h>
#include <cpptools/symbolfinder.h>
#include <cplusplus/ASTPath.h>
#include <cplusplus/CPlusPlusForwardDeclarations.h>
#include <cplusplus/CppRewriter.h>
@@ -102,7 +101,6 @@
#include <vector>
using namespace CPlusPlus;
using namespace CppTools;
using namespace TextEditor;
using Utils::ChangeSet;
@@ -355,7 +353,7 @@ public:
QString description() const override
{
return QApplication::translate("CppTools::QuickFix", "Rewrite Using %1").arg(replacement);
return QApplication::translate("CppEditor::QuickFix", "Rewrite Using %1").arg(replacement);
}
void perform() override
@@ -447,9 +445,9 @@ public:
QString description() const override
{
if (replacement.isEmpty())
return QApplication::translate("CppTools::QuickFix", "Swap Operands");
return QApplication::translate("CppEditor::QuickFix", "Swap Operands");
else
return QApplication::translate("CppTools::QuickFix", "Rewrite Using %1").arg(replacement);
return QApplication::translate("CppEditor::QuickFix", "Rewrite Using %1").arg(replacement);
}
void perform() override
@@ -590,7 +588,7 @@ void RewriteLogicalAnd::match(const CppQuickFixInterface &interface, QuickFixOpe
file->tokenAt(op->pattern->binary_op_token).is(T_AMPER_AMPER) &&
file->tokenAt(op->left->unary_op_token).is(T_EXCLAIM) &&
file->tokenAt(op->right->unary_op_token).is(T_EXCLAIM)) {
op->setDescription(QApplication::translate("CppTools::QuickFix",
op->setDescription(QApplication::translate("CppEditor::QuickFix",
"Rewrite Condition Using ||"));
op->setPriority(index);
result.append(op);
@@ -624,7 +622,7 @@ public:
: CppQuickFixOperation(interface, priority)
, declaration(decl)
{
setDescription(QApplication::translate("CppTools::QuickFix",
setDescription(QApplication::translate("CppEditor::QuickFix",
"Split Declaration"));
}
@@ -716,7 +714,7 @@ public:
: CppQuickFixOperation(interface, priority)
, _statement(statement)
{
setDescription(QApplication::translate("CppTools::QuickFix", "Add Curly Braces"));
setDescription(QApplication::translate("CppEditor::QuickFix", "Add Curly Braces"));
}
void perform() override
@@ -782,7 +780,7 @@ public:
MoveDeclarationOutOfIfOp(const CppQuickFixInterface &interface)
: CppQuickFixOperation(interface)
{
setDescription(QApplication::translate("CppTools::QuickFix",
setDescription(QApplication::translate("CppEditor::QuickFix",
"Move Declaration out of Condition"));
reset();
@@ -857,7 +855,7 @@ public:
MoveDeclarationOutOfWhileOp(const CppQuickFixInterface &interface)
: CppQuickFixOperation(interface)
{
setDescription(QApplication::translate("CppTools::QuickFix",
setDescription(QApplication::translate("CppEditor::QuickFix",
"Move Declaration out of Condition"));
reset();
}
@@ -943,7 +941,7 @@ public:
, pattern(pattern)
, condition(condition)
{
setDescription(QApplication::translate("CppTools::QuickFix",
setDescription(QApplication::translate("CppEditor::QuickFix",
"Split if Statement"));
}
@@ -1108,7 +1106,7 @@ static QByteArray charToStringEscapeSequences(const QByteArray &content)
static QString msgQtStringLiteralDescription(const QString &replacement)
{
return QApplication::translate("CppTools::QuickFix", "Enclose in %1(...)").arg(replacement);
return QApplication::translate("CppEditor::QuickFix", "Enclose in %1(...)").arg(replacement);
}
static QString stringLiteralReplacement(unsigned actions)
@@ -1279,7 +1277,7 @@ void WrapStringLiteral::match(const CppQuickFixInterface &interface, QuickFixOpe
const QByteArray contents(file->tokenAt(charLiteral->literal_token).identifier->chars());
if (!charToStringEscapeSequences(contents).isEmpty()) {
actions = DoubleQuoteAction | ConvertEscapeSequencesToStringAction;
description = QApplication::translate("CppTools::QuickFix",
description = QApplication::translate("CppEditor::QuickFix",
"Convert to String Literal");
result << new WrapStringLiteralOp(interface, priority, actions,
description, literal);
@@ -1294,12 +1292,12 @@ void WrapStringLiteral::match(const CppQuickFixInterface &interface, QuickFixOpe
if (!stringToCharEscapeSequences(contents).isEmpty()) {
actions = EncloseInQLatin1CharAction | SingleQuoteAction
| ConvertEscapeSequencesToCharAction | objectiveCActions;
QString description = QApplication::translate("CppTools::QuickFix",
QString description = QApplication::translate("CppEditor::QuickFix",
"Convert to Character Literal and Enclose in QLatin1Char(...)");
result << new WrapStringLiteralOp(interface, priority, actions,
description, literal);
actions &= ~EncloseInQLatin1CharAction;
description = QApplication::translate("CppTools::QuickFix",
description = QApplication::translate("CppEditor::QuickFix",
"Convert to Character Literal");
result << new WrapStringLiteralOp(interface, priority, actions,
description, literal);
@@ -1333,7 +1331,7 @@ void TranslateStringLiteral::match(const CppQuickFixInterface &interface,
const Name *trName = control->identifier("tr");
// Check whether we are in a function:
const QString description = QApplication::translate("CppTools::QuickFix", "Mark as Translatable");
const QString description = QApplication::translate("CppEditor::QuickFix", "Mark as Translatable");
for (int i = path.size() - 1; i >= 0; --i) {
if (FunctionDefinitionAST *definition = path.at(i)->asFunctionDefinition()) {
Function *function = definition->symbol;
@@ -1386,7 +1384,7 @@ public:
, stringLiteral(stringLiteral)
, qlatin1Call(qlatin1Call)
{
setDescription(QApplication::translate("CppTools::QuickFix",
setDescription(QApplication::translate("CppEditor::QuickFix",
"Convert to Objective-C String Literal"));
}
@@ -1531,7 +1529,7 @@ void ConvertNumericLiteral::match(const CppQuickFixInterface &interface, QuickFi
*/
const QString replacement = QString::asprintf("0x%lX", value);
auto op = new ConvertNumericLiteralOp(interface, start, start + numberLength, replacement);
op->setDescription(QApplication::translate("CppTools::QuickFix", "Convert to Hexadecimal"));
op->setDescription(QApplication::translate("CppEditor::QuickFix", "Convert to Hexadecimal"));
op->setPriority(priority);
result << op;
}
@@ -1548,7 +1546,7 @@ void ConvertNumericLiteral::match(const CppQuickFixInterface &interface, QuickFi
*/
const QString replacement = QString::asprintf("0%lo", value);
auto op = new ConvertNumericLiteralOp(interface, start, start + numberLength, replacement);
op->setDescription(QApplication::translate("CppTools::QuickFix", "Convert to Octal"));
op->setDescription(QApplication::translate("CppEditor::QuickFix", "Convert to Octal"));
op->setPriority(priority);
result << op;
}
@@ -1565,7 +1563,7 @@ void ConvertNumericLiteral::match(const CppQuickFixInterface &interface, QuickFi
*/
const QString replacement = QString::asprintf("%lu", value);
auto op = new ConvertNumericLiteralOp(interface, start, start + numberLength, replacement);
op->setDescription(QApplication::translate("CppTools::QuickFix", "Convert to Decimal"));
op->setDescription(QApplication::translate("CppEditor::QuickFix", "Convert to Decimal"));
op->setPriority(priority);
result << op;
}
@@ -1589,7 +1587,7 @@ void ConvertNumericLiteral::match(const CppQuickFixInterface &interface, QuickFi
replacement.append(QString::fromStdString(b.to_string()).remove(re));
}
auto op = new ConvertNumericLiteralOp(interface, start, start + numberLength, replacement);
op->setDescription(QApplication::translate("CppTools::QuickFix", "Convert to Binary"));
op->setDescription(QApplication::translate("CppEditor::QuickFix", "Convert to Binary"));
op->setPriority(priority);
result << op;
}
@@ -1608,7 +1606,7 @@ public:
, binaryAST(binaryAST)
, simpleNameAST(simpleNameAST)
{
setDescription(QApplication::translate("CppTools::QuickFix", "Add Local Declaration"));
setDescription(QApplication::translate("CppEditor::QuickFix", "Add Local Declaration"));
}
void perform() override
@@ -1706,7 +1704,7 @@ public:
, m_isAllUpper(name.isUpper())
, m_test(test)
{
setDescription(QApplication::translate("CppTools::QuickFix", "Convert to Camel Case"));
setDescription(QApplication::translate("CppEditor::QuickFix", "Convert to Camel Case"));
}
void perform() override
@@ -1788,7 +1786,7 @@ AddIncludeForUndefinedIdentifierOp::AddIncludeForUndefinedIdentifierOp(
: CppQuickFixOperation(interface, priority)
, m_include(include)
{
setDescription(QApplication::translate("CppTools::QuickFix", "Add #include %1").arg(m_include));
setDescription(QApplication::translate("CppEditor::QuickFix", "Add #include %1").arg(m_include));
}
void AddIncludeForUndefinedIdentifierOp::perform()
@@ -1806,7 +1804,7 @@ AddForwardDeclForUndefinedIdentifierOp::AddForwardDeclForUndefinedIdentifierOp(
int symbolPos)
: CppQuickFixOperation(interface, priority), m_className(fqClassName), m_symbolPos(symbolPos)
{
setDescription(QApplication::translate("CppTools::QuickFix",
setDescription(QApplication::translate("CppEditor::QuickFix",
"Add forward declaration for %1").arg(m_className));
}
@@ -2006,8 +2004,7 @@ bool matchName(const Name *name, QList<Core::LocatorFilterEntry> *matches, QStri
return false;
QString simpleName;
if (Core::ILocatorFilter *classesFilter
= CppTools::CppModelManager::instance()->classesFilter()) {
if (Core::ILocatorFilter *classesFilter = CppModelManager::instance()->classesFilter()) {
QFutureInterface<Core::LocatorFilterEntry> dummy;
const Overview oo;
@@ -2153,10 +2150,10 @@ public:
{
QString targetString;
if (target == TargetPrevious)
targetString = QApplication::translate("CppTools::QuickFix",
targetString = QApplication::translate("CppEditor::QuickFix",
"Switch with Previous Parameter");
else
targetString = QApplication::translate("CppTools::QuickFix",
targetString = QApplication::translate("CppEditor::QuickFix",
"Switch with Next Parameter");
setDescription(targetString);
}
@@ -2232,10 +2229,10 @@ public:
{
QString description;
if (m_change.operationList().size() == 1) {
description = QApplication::translate("CppTools::QuickFix",
description = QApplication::translate("CppEditor::QuickFix",
"Reformat to \"%1\"").arg(m_change.operationList().constFirst().text);
} else { // > 1
description = QApplication::translate("CppTools::QuickFix",
description = QApplication::translate("CppEditor::QuickFix",
"Reformat Pointers or References");
}
setDescription(description);
@@ -2399,7 +2396,7 @@ public:
, compoundStatement(compoundStatement)
, values(values)
{
setDescription(QApplication::translate("CppTools::QuickFix",
setDescription(QApplication::translate("CppEditor::QuickFix",
"Complete Switch Statement"));
}
@@ -2896,7 +2893,7 @@ void InsertDefFromDecl::match(const CppQuickFixInterface &interface, QuickFixOpe
const QString fileName = location.fileName();
if (ProjectFile::isHeader(ProjectFile::classify(fileName))) {
const QString source
= CppTools::correspondingHeaderOrSource(fileName);
= correspondingHeaderOrSource(fileName);
if (!source.isEmpty()) {
op = new InsertDefOperation(interface, decl, declAST,
InsertionLocation(),
@@ -2959,7 +2956,7 @@ public:
const QString &type)
: CppQuickFixOperation(interface), m_class(theClass), m_member(member), m_type(type)
{
setDescription(QCoreApplication::translate("CppTools::Quickfix",
setDescription(QCoreApplication::translate("CppEditor::Quickfix",
"Add Class Member \"%1\"").arg(m_member));
}
@@ -2970,8 +2967,8 @@ private:
if (type.isEmpty()) {
type = QInputDialog::getText(
Core::ICore::dialogParent(),
QCoreApplication::translate("CppTools::Quickfix","Provide the type"),
QCoreApplication::translate("CppTools::Quickfix","Data type:"),
QCoreApplication::translate("CppEditor::Quickfix","Provide the type"),
QCoreApplication::translate("CppEditor::Quickfix","Data type:"),
QLineEdit::Normal);
}
if (type.isEmpty())
@@ -3230,7 +3227,7 @@ private:
continue;
const QString fileName = location.fileName();
if (ProjectFile::isHeader(ProjectFile::classify(fileName))) {
const QString source = CppTools::correspondingHeaderOrSource(fileName);
const QString source = correspondingHeaderOrSource(fileName);
if (!source.isEmpty())
cppFile = source;
} else {
@@ -5378,7 +5375,7 @@ public:
m_literal(literal),
m_functionDefinition(function)
{
setDescription(QApplication::translate("CppTools::QuickFix",
setDescription(QApplication::translate("CppEditor::QuickFix",
"Extract Constant as Function Parameter"));
}
@@ -6674,7 +6671,7 @@ public:
, m_ast(ast)
, m_name(name)
{
setDescription(QApplication::translate("CppTools::QuickFix", "Assign to Local Variable"));
setDescription(QApplication::translate("CppEditor::QuickFix", "Assign to Local Variable"));
}
void perform() override
@@ -6882,7 +6879,7 @@ public:
, m_expression(expression)
, m_type(type)
{
setDescription(QApplication::translate("CppTools::QuickFix", "Optimize for-Loop"));
setDescription(QApplication::translate("CppEditor::QuickFix", "Optimize for-Loop"));
}
void perform() override
@@ -7061,10 +7058,10 @@ public:
, m_escape(escape)
{
if (m_escape) {
setDescription(QApplication::translate("CppTools::QuickFix",
setDescription(QApplication::translate("CppEditor::QuickFix",
"Escape String Literal as UTF-8"));
} else {
setDescription(QApplication::translate("CppTools::QuickFix",
setDescription(QApplication::translate("CppEditor::QuickFix",
"Unescape String Literal as UTF-8"));
}
}
@@ -7244,7 +7241,7 @@ public:
ConvertQt4ConnectOperation(const CppQuickFixInterface &interface, const ChangeSet &changes)
: CppQuickFixOperation(interface, 1), m_changes(changes)
{
setDescription(QApplication::translate("CppTools::QuickFix",
setDescription(QApplication::translate("CppEditor::QuickFix",
"Convert connect() to Qt 5 Style"));
}
@@ -7554,7 +7551,7 @@ void ConvertQt4Connect::match(const CppQuickFixInterface &interface, QuickFixOpe
void ExtraRefactoringOperations::match(const CppQuickFixInterface &interface,
QuickFixOperations &result)
{
const auto processor = CppTools::CppToolsBridge::baseEditorDocumentProcessor(interface.filePath().toString());
const auto processor = CppToolsBridge::baseEditorDocumentProcessor(interface.filePath().toString());
if (processor) {
const auto clangFixItOperations = processor->extraRefactoringOperations(interface);
result.append(clangFixItOperations);
@@ -7931,12 +7928,12 @@ public:
const QString name = Overview{}.prettyName(usingDirective->name->name);
if (m_removeAllAtGlobalScope) {
setDescription(QApplication::translate(
"CppTools::QuickFix",
"CppEditor::QuickFix",
"Remove All Occurrences of \"using namespace %1\" in Global Scope "
"and Adjust Type Names Accordingly")
.arg(name));
} else {
setDescription(QApplication::translate("CppTools::QuickFix",
setDescription(QApplication::translate("CppEditor::QuickFix",
"Remove \"using namespace %1\" and "
"Adjust Type Names Accordingly")
.arg(name));