diff --git a/src/plugins/cppeditor/cppeditorplugin.cpp b/src/plugins/cppeditor/cppeditorplugin.cpp index e87b6d1ea51..9d0b1615830 100644 --- a/src/plugins/cppeditor/cppeditorplugin.cpp +++ b/src/plugins/cppeditor/cppeditorplugin.cpp @@ -43,7 +43,6 @@ #include "functionutils.h" #include "includeutils.h" #include "projectinfo_test.h" -#include "quickfixes/cppinsertvirtualmethods.h" #include "quickfixes/cppquickfix_test.h" #include "symbolsearcher_test.h" #include "typehierarchybuilder_test.h" @@ -514,7 +513,6 @@ void CppEditorPlugin::registerTests() addTest(); addTest(); addTest(); - addTest(); addTest(); addTest(); addTest(); diff --git a/src/plugins/cppeditor/quickfixes/cppinsertvirtualmethods.cpp b/src/plugins/cppeditor/quickfixes/cppinsertvirtualmethods.cpp index a9ca1816d89..5407c6b1f54 100644 --- a/src/plugins/cppeditor/quickfixes/cppinsertvirtualmethods.cpp +++ b/src/plugins/cppeditor/quickfixes/cppinsertvirtualmethods.cpp @@ -116,6 +116,11 @@ public: QSortFilterProxyModel *classFunctionFilterModel; }; +void registerInsertVirtualMethodsQuickfix() +{ + CppQuickFixFactory::registerFactory(); +} + } // namespace Internal } // namespace CppEditor @@ -1269,6 +1274,17 @@ public: void saveSettings() override { } }; +class InsertVirtualMethodsTest : public QObject +{ + Q_OBJECT + +private slots: + void test_data(); + void test(); + void testImplementationFile(); + void testBaseClassInNamespace(); +}; + void InsertVirtualMethodsTest::test_data() { QTest::addColumn("implementationMode"); @@ -1969,6 +1985,11 @@ InsertVirtualMethods *InsertVirtualMethods::createTestFactory() InsertVirtualMethodsDialog::ModeOutsideClass, true, false)); } +QObject *InsertVirtualMethods::createTest() +{ + return new Tests::InsertVirtualMethodsTest; +} + #endif // WITH_TESTS } // namespace Internal diff --git a/src/plugins/cppeditor/quickfixes/cppinsertvirtualmethods.h b/src/plugins/cppeditor/quickfixes/cppinsertvirtualmethods.h index 7116efde1d3..ffb749a71ec 100644 --- a/src/plugins/cppeditor/quickfixes/cppinsertvirtualmethods.h +++ b/src/plugins/cppeditor/quickfixes/cppinsertvirtualmethods.h @@ -19,6 +19,7 @@ public: void doMatch(const CppQuickFixInterface &interface, TextEditor::QuickFixOperations &result) override; #ifdef WITH_TESTS + static QObject *createTest(); static InsertVirtualMethods *createTestFactory(); #endif @@ -26,20 +27,7 @@ private: InsertVirtualMethodsDialog *m_dialog; }; -#ifdef WITH_TESTS -namespace Tests { -class InsertVirtualMethodsTest : public QObject -{ - Q_OBJECT - -private slots: - void test_data(); - void test(); - void testImplementationFile(); - void testBaseClassInNamespace(); -}; -} // namespace Tests -#endif // WITH_TESTS +void registerInsertVirtualMethodsQuickfix(); } // namespace Internal } // namespace CppEditor diff --git a/src/plugins/cppeditor/quickfixes/cppquickfix.cpp b/src/plugins/cppeditor/quickfixes/cppquickfix.cpp index 4e9f7e3517e..964c0752fc7 100644 --- a/src/plugins/cppeditor/quickfixes/cppquickfix.cpp +++ b/src/plugins/cppeditor/quickfixes/cppquickfix.cpp @@ -3,13 +3,33 @@ #include "cppquickfix.h" -#include "../cpprefactoringchanges.h" #include "cppquickfixassistant.h" +#include +#include + using namespace CPlusPlus; using namespace TextEditor; -namespace CppEditor::Internal { +namespace CppEditor { + +static ExtensionSystem::IPlugin *getCppEditor() +{ + using namespace ExtensionSystem; + for (PluginSpec * const spec : PluginManager::plugins()) { + if (spec->name() == "CppEditor") + return spec->plugin(); + } + QTC_ASSERT(false, return nullptr); +} + +ExtensionSystem::IPlugin *CppQuickFixFactory::cppEditor() +{ + static ExtensionSystem::IPlugin *plugin = getCppEditor(); + return plugin; +} + +namespace Internal { const QStringList magicQObjectFunctions() { @@ -23,4 +43,5 @@ CppQuickFixOperation::CppQuickFixOperation(const CppQuickFixInterface &interface CppQuickFixOperation::~CppQuickFixOperation() = default; -} // namespace CppEditor::Internal +} // namespace Internal +} // namespace CppEditor diff --git a/src/plugins/cppeditor/quickfixes/cppquickfix.h b/src/plugins/cppeditor/quickfixes/cppquickfix.h index 738a30e3228..a2fb60a0aaa 100644 --- a/src/plugins/cppeditor/quickfixes/cppquickfix.h +++ b/src/plugins/cppeditor/quickfixes/cppquickfix.h @@ -6,6 +6,7 @@ #include "../cppeditor_global.h" #include "cppquickfixassistant.h" +#include #include #include @@ -59,6 +60,14 @@ public: std::optional clangdReplacement() const { return m_clangdReplacement; } void setClangdReplacement(const QVersionNumber &version) { m_clangdReplacement = version; } + template static void registerFactory() + { + new Factory; +#ifdef WITH_TESTS + cppEditor()->addTestCreator(Factory::createTest); +#endif + } + private: /*! Implement this function to doMatch and create the appropriate @@ -67,6 +76,8 @@ private: virtual void doMatch(const Internal::CppQuickFixInterface &interface, QuickFixOperations &result) = 0; + static ExtensionSystem::IPlugin *cppEditor(); + std::optional m_clangdReplacement; }; diff --git a/src/plugins/cppeditor/quickfixes/cppquickfixes.cpp b/src/plugins/cppeditor/quickfixes/cppquickfixes.cpp index 68ade8b5e02..7be42e0b187 100644 --- a/src/plugins/cppeditor/quickfixes/cppquickfixes.cpp +++ b/src/plugins/cppeditor/quickfixes/cppquickfixes.cpp @@ -33,8 +33,6 @@ #include #include -#include - #include #include #include @@ -10647,7 +10645,7 @@ void createCppQuickFixes() new AssignToLocalVariable; - new InsertVirtualMethods; + registerInsertVirtualMethodsQuickfix(); new OptimizeForLoop;