From 4f3ac0382afff9b7125b9d9d182caec7aa6e8561 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 15 Dec 2017 09:34:02 +0100 Subject: [PATCH] TextEditor: Use more direct access to quick fix factories Change-Id: I65fc5c0ca6c7806e09b4bd626fd1679686df7d7f Reviewed-by: David Schulz --- src/plugins/cppeditor/cppquickfix.cpp | 9 +++++++++ src/plugins/cppeditor/cppquickfix.h | 4 ++-- src/plugins/cppeditor/cppquickfixassistant.cpp | 9 +-------- src/plugins/cppeditor/cppquickfixassistant.h | 2 -- src/plugins/qmljseditor/qmljsquickfix.cpp | 9 +++++++++ src/plugins/qmljseditor/qmljsquickfix.h | 2 ++ src/plugins/qmljseditor/qmljsquickfixassist.cpp | 9 +-------- src/plugins/qmljseditor/qmljsquickfixassist.h | 2 -- .../texteditor/codeassist/quickfixassistprocessor.cpp | 6 +++--- .../texteditor/codeassist/quickfixassistprocessor.h | 7 +++++-- .../texteditor/codeassist/quickfixassistprovider.cpp | 5 ----- .../texteditor/codeassist/quickfixassistprovider.h | 6 ------ 12 files changed, 32 insertions(+), 38 deletions(-) diff --git a/src/plugins/cppeditor/cppquickfix.cpp b/src/plugins/cppeditor/cppquickfix.cpp index 7e504d0278f..ecd6e83fbbe 100644 --- a/src/plugins/cppeditor/cppquickfix.cpp +++ b/src/plugins/cppeditor/cppquickfix.cpp @@ -29,6 +29,8 @@ #include +#include + using namespace CppEditor; using namespace CppEditor::Internal; using namespace CppTools; @@ -50,3 +52,10 @@ void CppQuickFixFactory::matchingOperations(const QuickFixInterface &interface, return; match(*cppInterface, result); } + +QList CppQuickFixFactory::cppQuickFixFactories() +{ + return Utils::filtered(QuickFixFactory::allQuickFixFactories(), [](QuickFixFactory *f) { + return qobject_cast(f) != nullptr; + }); +} diff --git a/src/plugins/cppeditor/cppquickfix.h b/src/plugins/cppeditor/cppquickfix.h index fba4b733aa1..6f4b7ecc296 100644 --- a/src/plugins/cppeditor/cppquickfix.h +++ b/src/plugins/cppeditor/cppquickfix.h @@ -30,8 +30,6 @@ #include -namespace CPlusPlus { class Snapshot; } - namespace CppEditor { namespace Internal { class CppQuickFixInterface; } @@ -52,6 +50,8 @@ public: void matchingOperations(const TextEditor::QuickFixInterface &interface, TextEditor::QuickFixOperations &result); + static QList cppQuickFixFactories(); + /*! Implement this function to match and create the appropriate CppQuickFixOperation objects. diff --git a/src/plugins/cppeditor/cppquickfixassistant.cpp b/src/plugins/cppeditor/cppquickfixassistant.cpp index 349c7111d4a..a35b421ce29 100644 --- a/src/plugins/cppeditor/cppquickfixassistant.cpp +++ b/src/plugins/cppeditor/cppquickfixassistant.cpp @@ -54,14 +54,7 @@ IAssistProvider::RunType CppQuickFixAssistProvider::runType() const IAssistProcessor *CppQuickFixAssistProvider::createProcessor() const { - return new QuickFixAssistProcessor(this); -} - -QList CppQuickFixAssistProvider::quickFixFactories() const -{ - return Utils::filtered(QuickFixFactory::allQuickFixFactories(), [](QuickFixFactory *f) { - return qobject_cast(f) != nullptr; - }); + return new QuickFixAssistProcessor(CppQuickFixFactory::cppQuickFixFactories()); } // -------------------------- diff --git a/src/plugins/cppeditor/cppquickfixassistant.h b/src/plugins/cppeditor/cppquickfixassistant.h index 9d24442d1bd..4fdbe9af3bd 100644 --- a/src/plugins/cppeditor/cppquickfixassistant.h +++ b/src/plugins/cppeditor/cppquickfixassistant.h @@ -74,8 +74,6 @@ public: CppQuickFixAssistProvider(QObject *parent = 0) : TextEditor::QuickFixAssistProvider(parent) {} IAssistProvider::RunType runType() const override; TextEditor::IAssistProcessor *createProcessor() const override; - - QList quickFixFactories() const override; }; } // Internal diff --git a/src/plugins/qmljseditor/qmljsquickfix.cpp b/src/plugins/qmljseditor/qmljsquickfix.cpp index c297889c680..72575ea330c 100644 --- a/src/plugins/qmljseditor/qmljsquickfix.cpp +++ b/src/plugins/qmljseditor/qmljsquickfix.cpp @@ -34,6 +34,8 @@ #include #include +#include + using namespace QmlJS; using namespace QmlJS::AST; using namespace QmlJSTools; @@ -76,4 +78,11 @@ void QmlJSQuickFixFactory::matchingOperations(const QuickFixInterface &interface match(interface.staticCast(), result); } +QList QmlJSQuickFixFactory::qmlJSQuickFixFactories() +{ + return Utils::filtered(QuickFixFactory::allQuickFixFactories(), [](QuickFixFactory *f) { + return qobject_cast(f) != nullptr; + }); +} + } // namespace QmlJSEditor diff --git a/src/plugins/qmljseditor/qmljsquickfix.h b/src/plugins/qmljseditor/qmljsquickfix.h index fda4a25a48f..fb64ab41a88 100644 --- a/src/plugins/qmljseditor/qmljsquickfix.h +++ b/src/plugins/qmljseditor/qmljsquickfix.h @@ -90,6 +90,8 @@ protected: QmlJSQuickFixOperation objects. */ virtual void match(const QmlJSQuickFixInterface &interface, TextEditor::QuickFixOperations &result) = 0; + + static QList qmlJSQuickFixFactories(); }; } // namespace QmlJSEditor diff --git a/src/plugins/qmljseditor/qmljsquickfixassist.cpp b/src/plugins/qmljseditor/qmljsquickfixassist.cpp index 7f7160d6ea7..021bbaebbb3 100644 --- a/src/plugins/qmljseditor/qmljsquickfixassist.cpp +++ b/src/plugins/qmljseditor/qmljsquickfixassist.cpp @@ -80,14 +80,7 @@ IAssistProvider::RunType QmlJSQuickFixAssistProvider::runType() const IAssistProcessor *QmlJSQuickFixAssistProvider::createProcessor() const { - return new QuickFixAssistProcessor(this); -} - -QList QmlJSQuickFixAssistProvider::quickFixFactories() const -{ - return Utils::filtered(QuickFixFactory::allQuickFixFactories(), [](QuickFixFactory *f) { - return qobject_cast(f) != nullptr; - }); + return new QuickFixAssistProcessor(QmlJSQuickFixFactory::allQuickFixFactories()); } } // namespace QmlJSEditor diff --git a/src/plugins/qmljseditor/qmljsquickfixassist.h b/src/plugins/qmljseditor/qmljsquickfixassist.h index 89e7247366b..14a357c27c5 100644 --- a/src/plugins/qmljseditor/qmljsquickfixassist.h +++ b/src/plugins/qmljseditor/qmljsquickfixassist.h @@ -60,8 +60,6 @@ public: IAssistProvider::RunType runType() const override; TextEditor::IAssistProcessor *createProcessor() const override; - - QList quickFixFactories() const override; }; } // Internal diff --git a/src/plugins/texteditor/codeassist/quickfixassistprocessor.cpp b/src/plugins/texteditor/codeassist/quickfixassistprocessor.cpp index 52d192f4cb0..f0f610ef99f 100644 --- a/src/plugins/texteditor/codeassist/quickfixassistprocessor.cpp +++ b/src/plugins/texteditor/codeassist/quickfixassistprocessor.cpp @@ -35,8 +35,8 @@ namespace TextEditor { -QuickFixAssistProcessor::QuickFixAssistProcessor(const QuickFixAssistProvider *provider) - : m_provider(provider) +QuickFixAssistProcessor::QuickFixAssistProcessor(const QList &factories) + : m_factories(factories) {} QuickFixAssistProcessor::~QuickFixAssistProcessor() @@ -51,7 +51,7 @@ IAssistProposal *QuickFixAssistProcessor::perform(const AssistInterface *interfa QuickFixOperations quickFixes; - foreach (QuickFixFactory *factory, m_provider->quickFixFactories()) + for (QuickFixFactory *factory : m_factories) factory->matchingOperations(assistInterface, quickFixes); if (!quickFixes.isEmpty()) { diff --git a/src/plugins/texteditor/codeassist/quickfixassistprocessor.h b/src/plugins/texteditor/codeassist/quickfixassistprocessor.h index c418cfb02c8..144fbd92484 100644 --- a/src/plugins/texteditor/codeassist/quickfixassistprocessor.h +++ b/src/plugins/texteditor/codeassist/quickfixassistprocessor.h @@ -27,20 +27,23 @@ #include "iassistprocessor.h" +#include + namespace TextEditor { class QuickFixAssistProvider; +class QuickFixFactory; class TEXTEDITOR_EXPORT QuickFixAssistProcessor : public IAssistProcessor { public: - QuickFixAssistProcessor(const QuickFixAssistProvider *provider); + QuickFixAssistProcessor(const QList &factories); ~QuickFixAssistProcessor(); private: IAssistProposal *perform(const AssistInterface *interface) override; - const QuickFixAssistProvider *m_provider; + const QList m_factories; }; } // TextEditor diff --git a/src/plugins/texteditor/codeassist/quickfixassistprovider.cpp b/src/plugins/texteditor/codeassist/quickfixassistprovider.cpp index 8539ff940bc..6c627d5eb39 100644 --- a/src/plugins/texteditor/codeassist/quickfixassistprovider.cpp +++ b/src/plugins/texteditor/codeassist/quickfixassistprovider.cpp @@ -33,8 +33,3 @@ QuickFixAssistProvider::QuickFixAssistProvider(QObject *parent) QuickFixAssistProvider::~QuickFixAssistProvider() {} - -QList QuickFixAssistProvider::quickFixFactories() const -{ - return QList(); -} diff --git a/src/plugins/texteditor/codeassist/quickfixassistprovider.h b/src/plugins/texteditor/codeassist/quickfixassistprovider.h index e52f0d2c8a7..58254689043 100644 --- a/src/plugins/texteditor/codeassist/quickfixassistprovider.h +++ b/src/plugins/texteditor/codeassist/quickfixassistprovider.h @@ -27,12 +27,8 @@ #include "iassistprovider.h" -#include - namespace TextEditor { -class QuickFixFactory; - class TEXTEDITOR_EXPORT QuickFixAssistProvider : public IAssistProvider { Q_OBJECT @@ -40,8 +36,6 @@ class TEXTEDITOR_EXPORT QuickFixAssistProvider : public IAssistProvider public: QuickFixAssistProvider(QObject *parent = 0); ~QuickFixAssistProvider(); - - virtual QList quickFixFactories() const; }; } // TextEditor