diff options
-rw-r--r-- | src/plugins/cppeditor/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppeditor.qbs | 2 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppeditorplugin.cpp | 6 | ||||
-rw-r--r-- | src/plugins/cppeditor/quickfixes/cppquickfix.cpp | 162 | ||||
-rw-r--r-- | src/plugins/cppeditor/quickfixes/cppquickfix.h | 12 | ||||
-rw-r--r-- | src/plugins/cppeditor/quickfixes/cppquickfix_test.cpp | 46 | ||||
-rw-r--r-- | src/plugins/cppeditor/quickfixes/cppquickfixes.cpp | 226 | ||||
-rw-r--r-- | src/plugins/cppeditor/quickfixes/cppquickfixes.h | 41 | ||||
-rw-r--r-- | src/plugins/cppeditor/quickfixes/cppquickfixhelpers.cpp | 6 | ||||
-rw-r--r-- | src/plugins/cppeditor/quickfixes/cppquickfixhelpers.h | 1 | ||||
-rw-r--r-- | src/plugins/cppeditor/quickfixes/createdeclarationfromuse.cpp | 6 |
11 files changed, 174 insertions, 335 deletions
diff --git a/src/plugins/cppeditor/CMakeLists.txt b/src/plugins/cppeditor/CMakeLists.txt index ad30808f8af..90685aaf348 100644 --- a/src/plugins/cppeditor/CMakeLists.txt +++ b/src/plugins/cppeditor/CMakeLists.txt @@ -107,7 +107,6 @@ add_qtc_plugin(CppEditor quickfixes/cppinsertvirtualmethods.cpp quickfixes/cppinsertvirtualmethods.h quickfixes/cppquickfix.cpp quickfixes/cppquickfix.h quickfixes/cppquickfixassistant.cpp quickfixes/cppquickfixassistant.h - quickfixes/cppquickfixes.cpp quickfixes/cppquickfixes.h quickfixes/cppquickfixhelpers.h quickfixes/cppquickfixhelpers.cpp quickfixes/cppquickfixprojectsettings.cpp quickfixes/cppquickfixprojectsettings.h quickfixes/cppquickfixprojectsettingswidget.cpp quickfixes/cppquickfixprojectsettingswidget.h diff --git a/src/plugins/cppeditor/cppeditor.qbs b/src/plugins/cppeditor/cppeditor.qbs index 97fa40e22ce..24beed5dd18 100644 --- a/src/plugins/cppeditor/cppeditor.qbs +++ b/src/plugins/cppeditor/cppeditor.qbs @@ -245,8 +245,6 @@ QtcPlugin { "cppquickfix.h", "cppquickfixassistant.cpp", "cppquickfixassistant.h", - "cppquickfixes.cpp", - "cppquickfixes.h", "cppquickfixhelpers.cpp", "cppquickfixhelpers.h", "cppquickfixprojectsettings.cpp", diff --git a/src/plugins/cppeditor/cppeditorplugin.cpp b/src/plugins/cppeditor/cppeditorplugin.cpp index 9ad640e7494..63122a538b3 100644 --- a/src/plugins/cppeditor/cppeditorplugin.cpp +++ b/src/plugins/cppeditor/cppeditorplugin.cpp @@ -19,7 +19,7 @@ #include "cpptoolsreuse.h" #include "cpptoolssettings.h" #include "cpptypehierarchy.h" -#include "quickfixes/cppquickfixes.h" +#include "quickfixes/cppquickfix.h" #include "quickfixes/cppquickfixprojectsettingswidget.h" #include "quickfixes/cppquickfixsettingspage.h" #include "resourcepreviewhoverhandler.h" @@ -175,7 +175,7 @@ class CppEditorPlugin final : public ExtensionSystem::IPlugin public: ~CppEditorPlugin() final { - destroyCppQuickFixes(); + destroyCppQuickFixFactories(); delete d; d = nullptr; } @@ -212,7 +212,7 @@ void CppEditorPlugin::initialize() setupMenus(); registerVariables(); - createCppQuickFixes(); + createCppQuickFixFactories(); registerTests(); SnippetProvider::registerGroup(Constants::CPP_SNIPPETS_GROUP_ID, Tr::tr("C++", "SnippetProvider"), diff --git a/src/plugins/cppeditor/quickfixes/cppquickfix.cpp b/src/plugins/cppeditor/quickfixes/cppquickfix.cpp index 964c0752fc7..006008dd88c 100644 --- a/src/plugins/cppeditor/quickfixes/cppquickfix.cpp +++ b/src/plugins/cppeditor/quickfixes/cppquickfix.cpp @@ -3,7 +3,36 @@ #include "cppquickfix.h" +#include "../baseeditordocumentprocessor.h" +#include "../cppeditortr.h" +#include "../cppeditorwidget.h" +#include "../cppfunctiondecldeflink.h" +#include "../cpprefactoringchanges.h" +#include "assigntolocalvariable.h" +#include "bringidentifierintoscope.h" +#include "completeswitchstatement.h" +#include "convertfromandtopointer.h" +#include "convertnumericliteral.h" +#include "convertqt4connect.h" +#include "convertstringliteral.h" +#include "converttocamelcase.h" +#include "converttometamethodcall.h" +#include "cppcodegenerationquickfixes.h" +#include "cppinsertvirtualmethods.h" #include "cppquickfixassistant.h" +#include "createdeclarationfromuse.h" +#include "extractfunction.h" +#include "extractliteralasparameter.h" +#include "insertfunctiondefinition.h" +#include "logicaloperationquickfixes.h" +#include "moveclasstoownfile.h" +#include "movefunctiondefinition.h" +#include "rearrangeparamdeclarationlist.h" +#include "reformatpointerdeclaration.h" +#include "removeusingnamespace.h" +#include "rewritecomment.h" +#include "rewritecontrolstatements.h" +#include "splitsimpledeclaration.h" #include <extensionsystem/pluginmanager.h> #include <extensionsystem/pluginspec.h> @@ -12,6 +41,58 @@ using namespace CPlusPlus; using namespace TextEditor; namespace CppEditor { +namespace Internal { +namespace { + +class ApplyDeclDefLinkOperation : public CppQuickFixOperation +{ +public: + explicit ApplyDeclDefLinkOperation(const CppQuickFixInterface &interface, + const std::shared_ptr<FunctionDeclDefLink> &link) + : CppQuickFixOperation(interface, 100) + , m_link(link) + {} + + void perform() override + { + if (editor()->declDefLink() == m_link) + editor()->applyDeclDefLinkChanges(/*don't jump*/false); + } + +private: + std::shared_ptr<FunctionDeclDefLink> m_link; +}; + +class ExtraRefactoringOperations : public CppQuickFixFactory +{ +public: + void doMatch(const CppQuickFixInterface &interface, QuickFixOperations &result) override + { + const auto processor = CppModelManager::cppEditorDocumentProcessor(interface.filePath()); + if (processor) { + const auto clangFixItOperations = processor->extraRefactoringOperations(interface); + result.append(clangFixItOperations); + } + } +}; + +//! Applies function signature changes +class ApplyDeclDefLinkChanges: public CppQuickFixFactory +{ +public: + void doMatch(const CppQuickFixInterface &interface, TextEditor::QuickFixOperations &result) override + { + std::shared_ptr<FunctionDeclDefLink> link = interface.editor()->declDefLink(); + if (!link || !link->isMarkerVisible()) + return; + + auto op = new ApplyDeclDefLinkOperation(interface, link); + op->setDescription(Tr::tr("Apply Function Signature Changes")); + result << op; + } +}; + +} // namespace static ExtensionSystem::IPlugin *getCppEditor() { @@ -23,25 +104,82 @@ static ExtensionSystem::IPlugin *getCppEditor() QTC_ASSERT(false, return nullptr); } -ExtensionSystem::IPlugin *CppQuickFixFactory::cppEditor() +CppQuickFixOperation::~CppQuickFixOperation() = default; + +void createCppQuickFixFactories() { - static ExtensionSystem::IPlugin *plugin = getCppEditor(); - return plugin; + new ApplyDeclDefLinkChanges; + new ExtraRefactoringOperations; + + registerAssignToLocalVariableQuickfix(); + registerBringIdentifierIntoScopeQuickfixes(); + registerCodeGenerationQuickfixes(); + registerCompleteSwitchStatementQuickfix(); + registerConvertFromAndToPointerQuickfix(); + registerConvertNumericLiteralQuickfix(); + registerConvertQt4ConnectQuickfix(); + registerConvertStringLiteralQuickfixes(); + registerConvertToCamelCaseQuickfix(); + registerConvertToMetaMethodCallQuickfix(); + registerCreateDeclarationFromUseQuickfixes(); + registerExtractFunctionQuickfix(); + registerExtractLiteralAsParameterQuickfix(); + registerInsertFunctionDefinitionQuickfixes(); + registerInsertVirtualMethodsQuickfix(); + registerLogicalOperationQuickfixes(); + registerMoveClassToOwnFileQuickfix(); + registerMoveFunctionDefinitionQuickfixes(); + registerRearrangeParamDeclarationListQuickfix(); + registerReformatPointerDeclarationQuickfix(); + registerRemoveUsingNamespaceQuickfix(); + registerRewriteCommentQuickfixes(); + registerRewriteControlStatementQuickfixes(); + registerSplitSimpleDeclarationQuickfix(); } -namespace Internal { +static QList<CppQuickFixFactory *> g_cppQuickFixFactories; -const QStringList magicQObjectFunctions() +void destroyCppQuickFixFactories() { - static QStringList list{"metaObject", "qt_metacast", "qt_metacall", "qt_static_metacall"}; - return list; + for (int i = g_cppQuickFixFactories.size(); --i >= 0; ) + delete g_cppQuickFixFactories.at(i); } -CppQuickFixOperation::CppQuickFixOperation(const CppQuickFixInterface &interface, int priority) - : QuickFixOperation(priority), CppQuickFixInterface(interface) -{} +} // namespace Internal -CppQuickFixOperation::~CppQuickFixOperation() = default; +CppQuickFixFactory::CppQuickFixFactory() +{ + Internal::g_cppQuickFixFactories.append(this); +} + +CppQuickFixFactory::~CppQuickFixFactory() +{ + Internal::g_cppQuickFixFactories.removeOne(this); +} + +ExtensionSystem::IPlugin *CppQuickFixFactory::cppEditor() +{ + static ExtensionSystem::IPlugin * const plugin = Internal::getCppEditor(); + return plugin; +} + +void CppQuickFixFactory::match(const Internal::CppQuickFixInterface &interface, + QuickFixOperations &result) +{ + if (m_clangdReplacement) { + if (const auto clangdVersion = CppModelManager::usesClangd( + interface.currentFile()->editor()->textDocument()); + clangdVersion && clangdVersion >= m_clangdReplacement) { + return; + } + } + + doMatch(interface, result); +} + +const QList<CppQuickFixFactory *> &CppQuickFixFactory::cppQuickFixFactories() +{ + return Internal::g_cppQuickFixFactories; +} -} // namespace Internal } // namespace CppEditor diff --git a/src/plugins/cppeditor/quickfixes/cppquickfix.h b/src/plugins/cppeditor/quickfixes/cppquickfix.h index a93db1f5f82..3d654661bc6 100644 --- a/src/plugins/cppeditor/quickfixes/cppquickfix.h +++ b/src/plugins/cppeditor/quickfixes/cppquickfix.h @@ -22,10 +22,15 @@ class CppQuickFixOperation public Internal::CppQuickFixInterface { public: - explicit CppQuickFixOperation(const CppQuickFixInterface &interface, int priority = -1); + explicit CppQuickFixOperation(const CppQuickFixInterface &interface, int priority = -1) + : QuickFixOperation(priority), CppQuickFixInterface(interface) + {} ~CppQuickFixOperation() override; }; +void createCppQuickFixFactories(); +void destroyCppQuickFixFactories(); + } // namespace Internal /*! @@ -67,8 +72,11 @@ public: private: /*! - Implement this function to doMatch and create the appropriate + Implement this function to match and create the appropriate CppQuickFixOperation objects. + Make sure that the function is "cheap". Otherwise, since the match() + functions are also called to generate context menu entries, + the user might experience a delay opening the context menu. */ virtual void doMatch(const Internal::CppQuickFixInterface &interface, QuickFixOperations &result) = 0; diff --git a/src/plugins/cppeditor/quickfixes/cppquickfix_test.cpp b/src/plugins/cppeditor/quickfixes/cppquickfix_test.cpp index 17e2fbf0aef..2bde0a10212 100644 --- a/src/plugins/cppeditor/quickfixes/cppquickfix_test.cpp +++ b/src/plugins/cppeditor/quickfixes/cppquickfix_test.cpp @@ -9,7 +9,6 @@ #include "../cppsourceprocessertesthelper.h" #include "../cpptoolssettings.h" #include "cppquickfixassistant.h" -#include "cppquickfixes.h" #include <projectexplorer/kitmanager.h> #include <projectexplorer/projectexplorer.h> @@ -32,8 +31,6 @@ using namespace Utils; using CppEditor::Tests::TemporaryDir; using CppEditor::Tests::Internal::TestIncludePaths; -typedef QByteArray _; - namespace CppEditor { namespace Internal { namespace Tests { @@ -250,48 +247,5 @@ void QuickFixOperationTest::run(const QList<TestDocumentPtr> &testDocuments, } // namespace Tests } // namespace Internal - -typedef QSharedPointer<CppQuickFixFactory> CppQuickFixFactoryPtr; - } // namespace CppEditor -namespace CppEditor::Internal::Tests { - -class CppCodeStyleSettingsChanger { -public: - CppCodeStyleSettingsChanger(const CppCodeStyleSettings &settings); - ~CppCodeStyleSettingsChanger(); // Restore original - - static CppCodeStyleSettings currentSettings(); - -private: - void setSettings(const CppCodeStyleSettings &settings); - - CppCodeStyleSettings m_originalSettings; -}; - -CppCodeStyleSettingsChanger::CppCodeStyleSettingsChanger(const CppCodeStyleSettings &settings) -{ - m_originalSettings = currentSettings(); - setSettings(settings); -} - -CppCodeStyleSettingsChanger::~CppCodeStyleSettingsChanger() -{ - setSettings(m_originalSettings); -} - -void CppCodeStyleSettingsChanger::setSettings(const CppCodeStyleSettings &settings) -{ - QVariant variant; - variant.setValue(settings); - - CppToolsSettings::cppCodeStyle()->currentDelegate()->setValue(variant); -} - -CppCodeStyleSettings CppCodeStyleSettingsChanger::currentSettings() -{ - return CppToolsSettings::cppCodeStyle()->currentDelegate()->value().value<CppCodeStyleSettings>(); -} - -} // namespace CppEditor::Internal::Tests diff --git a/src/plugins/cppeditor/quickfixes/cppquickfixes.cpp b/src/plugins/cppeditor/quickfixes/cppquickfixes.cpp deleted file mode 100644 index 8fcb17ba1c4..00000000000 --- a/src/plugins/cppeditor/quickfixes/cppquickfixes.cpp +++ /dev/null @@ -1,226 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#include "cppquickfixes.h" - -#include "../baseeditordocumentprocessor.h" -#include "../cppcodestylesettings.h" -#include "../cppeditortr.h" -#include "../cppeditorwidget.h" -#include "../cppfunctiondecldeflink.h" -#include "../cpppointerdeclarationformatter.h" -#include "../cpprefactoringchanges.h" -#include "../cpptoolsreuse.h" -#include "assigntolocalvariable.h" -#include "bringidentifierintoscope.h" -#include "completeswitchstatement.h" -#include "convertfromandtopointer.h" -#include "convertnumericliteral.h" -#include "convertqt4connect.h" -#include "convertstringliteral.h" -#include "converttocamelcase.h" -#include "converttometamethodcall.h" -#include "cppcodegenerationquickfixes.h" -#include "cppinsertvirtualmethods.h" -#include "cppquickfixassistant.h" -#include "cppquickfixhelpers.h" -#include "createdeclarationfromuse.h" -#include "extractfunction.h" -#include "extractliteralasparameter.h" -#include "insertfunctiondefinition.h" -#include "logicaloperationquickfixes.h" -#include "moveclasstoownfile.h" -#include "movefunctiondefinition.h" -#include "rearrangeparamdeclarationlist.h" -#include "reformatpointerdeclaration.h" -#include "removeusingnamespace.h" -#include "rewritecomment.h" -#include "rewritecontrolstatements.h" -#include "splitsimpledeclaration.h" - -#include <coreplugin/icore.h> -#include <coreplugin/messagemanager.h> - -#include <cplusplus/ASTPath.h> -#include <cplusplus/CPlusPlusForwardDeclarations.h> -#include <cplusplus/CppRewriter.h> -#include <cplusplus/declarationcomments.h> -#include <cplusplus/NamePrettyPrinter.h> -#include <cplusplus/Overview.h> -#include <cplusplus/TypeOfExpression.h> -#include <cplusplus/TypePrettyPrinter.h> - -#include <projectexplorer/editorconfiguration.h> -#include <projectexplorer/projectnodes.h> -#include <projectexplorer/projecttree.h> -#include <projectexplorer/projectmanager.h> - -#include <texteditor/tabsettings.h> - -#include <utils/algorithm.h> -#include <utils/basetreeview.h> -#include <utils/codegeneration.h> -#include <utils/layoutbuilder.h> -#include <utils/fancylineedit.h> -#include <utils/fileutils.h> -#include <utils/pathchooser.h> -#include <utils/qtcassert.h> -#include <utils/treemodel.h> -#include <utils/treeviewcombobox.h> - -#include <QApplication> -#include <QCheckBox> -#include <QComboBox> -#include <QDialog> -#include <QDialogButtonBox> -#include <QDir> -#include <QFileInfo> -#include <QFormLayout> -#include <QGridLayout> -#include <QHash> -#include <QHeaderView> -#include <QInputDialog> -#include <QMimeData> -#include <QPair> -#include <QProxyStyle> -#include <QPushButton> -#include <QRegularExpression> -#include <QSharedPointer> -#include <QStack> -#include <QStyledItemDelegate> -#include <QTableView> -#include <QTextCodec> -#include <QTextCursor> -#include <QVBoxLayout> - -#include <cctype> - -using namespace CPlusPlus; -using namespace ProjectExplorer; -using namespace TextEditor; -using namespace Utils; - -namespace CppEditor { - -static QList<CppQuickFixFactory *> g_cppQuickFixFactories; - -CppQuickFixFactory::CppQuickFixFactory() -{ - g_cppQuickFixFactories.append(this); -} - -CppQuickFixFactory::~CppQuickFixFactory() -{ - g_cppQuickFixFactories.removeOne(this); -} - -void CppQuickFixFactory::match(const Internal::CppQuickFixInterface &interface, - QuickFixOperations &result) -{ - if (m_clangdReplacement) { - if (const auto clangdVersion = CppModelManager::usesClangd( - interface.currentFile()->editor()->textDocument()); - clangdVersion && clangdVersion >= m_clangdReplacement) { - return; - } - } - - doMatch(interface, result); -} - -const QList<CppQuickFixFactory *> &CppQuickFixFactory::cppQuickFixFactories() -{ - return g_cppQuickFixFactories; -} - -namespace Internal { - -namespace { - -class ApplyDeclDefLinkOperation : public CppQuickFixOperation -{ -public: - explicit ApplyDeclDefLinkOperation(const CppQuickFixInterface &interface, - const std::shared_ptr<FunctionDeclDefLink> &link) - : CppQuickFixOperation(interface, 100) - , m_link(link) - {} - - void perform() override - { - if (editor()->declDefLink() == m_link) - editor()->applyDeclDefLinkChanges(/*don't jump*/false); - } - -protected: - virtual void performChanges(const CppRefactoringFilePtr &, const CppRefactoringChanges &) - { /* never called since perform is overridden */ } - -private: - std::shared_ptr<FunctionDeclDefLink> m_link; -}; - -} // anonymous namespace - -void ApplyDeclDefLinkChanges::doMatch(const CppQuickFixInterface &interface, - QuickFixOperations &result) -{ - std::shared_ptr<FunctionDeclDefLink> link = interface.editor()->declDefLink(); - if (!link || !link->isMarkerVisible()) - return; - - auto op = new ApplyDeclDefLinkOperation(interface, link); - op->setDescription(Tr::tr("Apply Function Signature Changes")); - result << op; -} - -void ExtraRefactoringOperations::doMatch(const CppQuickFixInterface &interface, - QuickFixOperations &result) -{ - const auto processor = CppModelManager::cppEditorDocumentProcessor(interface.filePath()); - if (processor) { - const auto clangFixItOperations = processor->extraRefactoringOperations(interface); - result.append(clangFixItOperations); - } -} - -void createCppQuickFixes() -{ - new ApplyDeclDefLinkChanges; - - registerInsertVirtualMethodsQuickfix(); - registerMoveClassToOwnFileQuickfix(); - registerRemoveUsingNamespaceQuickfix(); - registerCodeGenerationQuickfixes(); - registerConvertQt4ConnectQuickfix(); - registerMoveFunctionDefinitionQuickfixes(); - registerInsertFunctionDefinitionQuickfixes(); - registerBringIdentifierIntoScopeQuickfixes(); - registerConvertStringLiteralQuickfixes(); - registerCreateDeclarationFromUseQuickfixes(); - registerLogicalOperationQuickfixes(); - registerRewriteControlStatementQuickfixes(); - registerRewriteCommentQuickfixes(); - registerExtractFunctionQuickfix(); - registerExtractLiteralAsParameterQuickfix(); - registerConvertFromAndToPointerQuickfix(); - registerAssignToLocalVariableQuickfix(); - registerCompleteSwitchStatementQuickfix(); - registerConvertToMetaMethodCallQuickfix(); - registerSplitSimpleDeclarationQuickfix(); - registerConvertNumericLiteralQuickfix(); - registerConvertToCamelCaseQuickfix(); - registerRearrangeParamDeclarationListQuickfix(); - registerReformatPointerDeclarationQuickfix(); - - new ExtraRefactoringOperations; -} - -void destroyCppQuickFixes() -{ - for (int i = g_cppQuickFixFactories.size(); --i >= 0; ) - delete g_cppQuickFixFactories.at(i); -} - -} // namespace Internal -} // namespace CppEditor diff --git a/src/plugins/cppeditor/quickfixes/cppquickfixes.h b/src/plugins/cppeditor/quickfixes/cppquickfixes.h deleted file mode 100644 index 89761dcfd3c..00000000000 --- a/src/plugins/cppeditor/quickfixes/cppquickfixes.h +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include "cppquickfix.h" - -#include <variant> - -/// -/// Adding New Quick Fixes -/// -/// When adding new Quick Fixes, make sure that the doMatch() function is "cheap". -/// Otherwise, since the match() functions are also called to generate context menu -/// entries, the user might experience a delay opening the context menu. -/// - -namespace CppEditor { -namespace Internal { -using TypeOrExpr = std::variant<const CPlusPlus::ExpressionAST *, CPlusPlus::FullySpecifiedType>; - -void createCppQuickFixes(); -void destroyCppQuickFixes(); - -class ExtraRefactoringOperations : public CppQuickFixFactory -{ -public: - void doMatch(const CppQuickFixInterface &interface, QuickFixOperations &result) override; -}; - -/*! - Applies function signature changes - */ -class ApplyDeclDefLinkChanges: public CppQuickFixFactory -{ -public: - void doMatch(const CppQuickFixInterface &interface, TextEditor::QuickFixOperations &result) override; -}; - -} // namespace Internal -} // namespace CppEditor diff --git a/src/plugins/cppeditor/quickfixes/cppquickfixhelpers.cpp b/src/plugins/cppeditor/quickfixes/cppquickfixhelpers.cpp index 40d19e81948..eb67b928dbd 100644 --- a/src/plugins/cppeditor/quickfixes/cppquickfixhelpers.cpp +++ b/src/plugins/cppeditor/quickfixes/cppquickfixhelpers.cpp @@ -190,4 +190,10 @@ CPlusPlus::FullySpecifiedType typeOfExpr( return rewriteType(result.first().type(), &env, control); } +const QStringList magicQObjectFunctions() +{ + static QStringList list{"metaObject", "qt_metacast", "qt_metacall", "qt_static_metacall"}; + return list; +} + } // namespace CppEditor::Internal diff --git a/src/plugins/cppeditor/quickfixes/cppquickfixhelpers.h b/src/plugins/cppeditor/quickfixes/cppquickfixhelpers.h index fd655d489f0..b083fdb0d84 100644 --- a/src/plugins/cppeditor/quickfixes/cppquickfixhelpers.h +++ b/src/plugins/cppeditor/quickfixes/cppquickfixhelpers.h @@ -4,7 +4,6 @@ #pragma once #include "../cpprefactoringchanges.h" -#include "cppquickfixes.h" #include <QStringList> diff --git a/src/plugins/cppeditor/quickfixes/createdeclarationfromuse.cpp b/src/plugins/cppeditor/quickfixes/createdeclarationfromuse.cpp index c753b61c7e5..19f68d67710 100644 --- a/src/plugins/cppeditor/quickfixes/createdeclarationfromuse.cpp +++ b/src/plugins/cppeditor/quickfixes/createdeclarationfromuse.cpp @@ -9,7 +9,7 @@ #include "../cpprefactoringchanges.h" #include "../insertionpointlocator.h" #include "../symbolfinder.h" -#include "cppquickfixes.h" +#include "cppquickfix.h" #include "cppquickfixhelpers.h" #include "cppquickfixprojectsettings.h" @@ -25,6 +25,8 @@ #include <QtTest> #endif +#include <variant> + using namespace CPlusPlus; using namespace ProjectExplorer; using namespace TextEditor; @@ -33,6 +35,8 @@ using namespace Utils; namespace CppEditor::Internal { namespace { +using TypeOrExpr = std::variant<const CPlusPlus::ExpressionAST *, CPlusPlus::FullySpecifiedType>; + // FIXME: Needs to consider the scope at the insertion site. static QString declFromExpr( const TypeOrExpr &typeOrExpr, |