From 6744c1e69c770af3c233150156598f5f73b3d90c Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Sat, 3 Feb 2024 01:31:36 +0100 Subject: [PATCH] FunctionDeclDefLinkFinder: Replace QSharedPointer with std::shared_ptr According to https://wiki.qt.io/Things_To_Look_Out_For_In_Reviews QSharedPointer impl is poor and it's going to be removed from Qt 7. Change-Id: I41b753f52d06bb35988d1a57478e06daaec04f31 Reviewed-by: Reviewed-by: Christian Kandeler --- src/plugins/cppeditor/cppeditorwidget.cpp | 8 ++++---- src/plugins/cppeditor/cppeditorwidget.h | 4 ++-- src/plugins/cppeditor/cppfunctiondecldeflink.cpp | 12 ++++++------ src/plugins/cppeditor/cppfunctiondecldeflink.h | 6 ++---- .../cppeditor/cppfunctionparamrenaminghandler.cpp | 7 ++++--- src/plugins/cppeditor/cppquickfixes.cpp | 6 +++--- 6 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/plugins/cppeditor/cppeditorwidget.cpp b/src/plugins/cppeditor/cppeditorwidget.cpp index 958a9089152..0eabd42e302 100644 --- a/src/plugins/cppeditor/cppeditorwidget.cpp +++ b/src/plugins/cppeditor/cppeditorwidget.cpp @@ -388,7 +388,7 @@ public: SemanticInfo m_lastSemanticInfo; FunctionDeclDefLinkFinder *m_declDefLinkFinder; - QSharedPointer m_declDefLink; + std::shared_ptr m_declDefLink; QAction *m_parseContextAction = nullptr; ParseContextWidget *m_parseContextWidget = nullptr; @@ -1299,7 +1299,7 @@ std::unique_ptr CppEditorWidget::createAssistInterface(AssistKi return TextEditorWidget::createAssistInterface(kind, reason); } -QSharedPointer CppEditorWidget::declDefLink() const +std::shared_ptr CppEditorWidget::declDefLink() const { return d->m_declDefLink; } @@ -1357,7 +1357,7 @@ void CppEditorWidget::updateFunctionDeclDefLinkNow() d->m_declDefLinkFinder->startFindLinkAt(textCursor(), semanticDoc, snapshot); } -void CppEditorWidget::onFunctionDeclDefLinkFound(QSharedPointer link) +void CppEditorWidget::onFunctionDeclDefLinkFound(std::shared_ptr link) { abortDeclDefLink(); d->m_declDefLink = link; @@ -1405,7 +1405,7 @@ void CppEditorWidget::abortDeclDefLink() } d->m_declDefLink->hideMarker(this); - d->m_declDefLink.clear(); + d->m_declDefLink.reset(); } void CppEditorWidget::showPreProcessorWidget() diff --git a/src/plugins/cppeditor/cppeditorwidget.h b/src/plugins/cppeditor/cppeditorwidget.h index e9259f8f4c7..3ec31ec64a4 100644 --- a/src/plugins/cppeditor/cppeditorwidget.h +++ b/src/plugins/cppeditor/cppeditorwidget.h @@ -43,7 +43,7 @@ public: bool isSemanticInfoValid() const; bool isRenaming() const; - QSharedPointer declDefLink() const; + std::shared_ptr declDefLink() const; void applyDeclDefLinkChanges(bool jumpToMatch); std::unique_ptr createAssistInterface( @@ -115,7 +115,7 @@ private: void updateFunctionDeclDefLink(); void updateFunctionDeclDefLinkNow(); void abortDeclDefLink(); - void onFunctionDeclDefLinkFound(QSharedPointer link); + void onFunctionDeclDefLinkFound(std::shared_ptr link); void onCodeWarningsUpdated(unsigned revision, const QList selections, diff --git a/src/plugins/cppeditor/cppfunctiondecldeflink.cpp b/src/plugins/cppeditor/cppfunctiondecldeflink.cpp index f6e83669144..87e520b2fd7 100644 --- a/src/plugins/cppeditor/cppfunctiondecldeflink.cpp +++ b/src/plugins/cppeditor/cppfunctiondecldeflink.cpp @@ -46,13 +46,13 @@ FunctionDeclDefLinkFinder::FunctionDeclDefLinkFinder(QObject *parent) void FunctionDeclDefLinkFinder::onFutureDone() { - QSharedPointer link = m_watcher->result(); + std::shared_ptr link = m_watcher->result(); m_watcher.reset(); if (link) { link->linkSelection = m_scannedSelection; link->nameSelection = m_nameSelection; if (m_nameSelection.selectedText() != link->nameInitial) - link.clear(); + link.reset(); } m_scannedSelection = QTextCursor(); m_nameSelection = QTextCursor(); @@ -129,9 +129,9 @@ static DeclaratorIdAST *getDeclaratorId(DeclaratorAST *declarator) return nullptr; } -static QSharedPointer findLinkHelper(QSharedPointer link, CppRefactoringChanges changes) +static std::shared_ptr findLinkHelper(std::shared_ptr link, CppRefactoringChanges changes) { - QSharedPointer noResult; + std::shared_ptr noResult; const Snapshot &snapshot = changes.snapshot(); // find the matching decl/def symbol @@ -225,7 +225,7 @@ void FunctionDeclDefLinkFinder::startFindLinkAt( m_nameSelection.setKeepPositionOnInsert(true); // set up a base result - QSharedPointer result(new FunctionDeclDefLink); + std::shared_ptr result(new FunctionDeclDefLink); result->nameInitial = m_nameSelection.selectedText(); result->sourceDocument = doc; result->sourceFunction = funcDecl->symbol; @@ -233,7 +233,7 @@ void FunctionDeclDefLinkFinder::startFindLinkAt( result->sourceFunctionDeclarator = funcDecl; // handle the rest in a thread - m_watcher.reset(new QFutureWatcher >()); + m_watcher.reset(new QFutureWatcher >()); connect(m_watcher.data(), &QFutureWatcherBase::finished, this, &FunctionDeclDefLinkFinder::onFutureDone); m_watcher->setFuture(Utils::asyncRun(findLinkHelper, result, refactoringChanges)); } diff --git a/src/plugins/cppeditor/cppfunctiondecldeflink.h b/src/plugins/cppeditor/cppfunctiondecldeflink.h index 5621e355aaf..4ffce9bf915 100644 --- a/src/plugins/cppeditor/cppfunctiondecldeflink.h +++ b/src/plugins/cppeditor/cppfunctiondecldeflink.h @@ -3,12 +3,10 @@ #pragma once -#include "cppquickfix.h" #include "cpprefactoringchanges.h" #include #include -#include #include #include @@ -31,14 +29,14 @@ public: QTextCursor scannedSelection() const; signals: - void foundLink(QSharedPointer link); + void foundLink(std::shared_ptr link); private: void onFutureDone(); QTextCursor m_scannedSelection; QTextCursor m_nameSelection; - QScopedPointer > > m_watcher; + QScopedPointer>> m_watcher; }; class FunctionDeclDefLink diff --git a/src/plugins/cppeditor/cppfunctionparamrenaminghandler.cpp b/src/plugins/cppeditor/cppfunctionparamrenaminghandler.cpp index 092e216b2d4..111f2659bad 100644 --- a/src/plugins/cppeditor/cppfunctionparamrenaminghandler.cpp +++ b/src/plugins/cppeditor/cppfunctionparamrenaminghandler.cpp @@ -6,6 +6,7 @@ #include "cppeditorwidget.h" #include "cpplocalrenaming.h" #include "cppfunctiondecldeflink.h" +#include "cppsemanticinfo.h" #include #include @@ -17,7 +18,7 @@ using namespace CPlusPlus; namespace CppEditor::Internal { -using DeclDefLinkPtr = QSharedPointer; +using DeclDefLinkPtr = std::shared_ptr; class CppFunctionParamRenamingHandler::Private { @@ -54,7 +55,7 @@ CppFunctionParamRenamingHandler::Private::Private( void CppFunctionParamRenamingHandler::Private::handleRenamingStarted() { linkFinder.reset(); - link.clear(); + link.reset(); // Are we currently on the function signature? In this case, the normal decl/def link // mechanism kicks in and we don't have to do anything. @@ -78,7 +79,7 @@ void CppFunctionParamRenamingHandler::Private::handleRenamingFinished() { if (link) { link->apply(&editorWidget, false); - link.clear(); + link.reset(); } } diff --git a/src/plugins/cppeditor/cppquickfixes.cpp b/src/plugins/cppeditor/cppquickfixes.cpp index 47e7f90b05f..b4a844b396d 100644 --- a/src/plugins/cppeditor/cppquickfixes.cpp +++ b/src/plugins/cppeditor/cppquickfixes.cpp @@ -6412,7 +6412,7 @@ class ApplyDeclDefLinkOperation : public CppQuickFixOperation { public: explicit ApplyDeclDefLinkOperation(const CppQuickFixInterface &interface, - const QSharedPointer &link) + const std::shared_ptr &link) : CppQuickFixOperation(interface, 100) , m_link(link) {} @@ -6428,7 +6428,7 @@ protected: { /* never called since perform is overridden */ } private: - QSharedPointer m_link; + std::shared_ptr m_link; }; } // anonymous namespace @@ -6436,7 +6436,7 @@ private: void ApplyDeclDefLinkChanges::doMatch(const CppQuickFixInterface &interface, QuickFixOperations &result) { - QSharedPointer link = interface.editor()->declDefLink(); + std::shared_ptr link = interface.editor()->declDefLink(); if (!link || !link->isMarkerVisible()) return;