diff options
Diffstat (limited to 'src/plugins/clangcodemodel')
3 files changed, 32 insertions, 14 deletions
diff --git a/src/plugins/clangcodemodel/clangbackendipcintegration.cpp b/src/plugins/clangcodemodel/clangbackendipcintegration.cpp index cfb52f1528..bb4d4c3010 100644 --- a/src/plugins/clangcodemodel/clangbackendipcintegration.cpp +++ b/src/plugins/clangcodemodel/clangbackendipcintegration.cpp @@ -129,8 +129,10 @@ void IpcReceiver::deleteProcessorsOfEditorWidget(TextEditor::TextEditorWidget *t } } -QFuture<CppTools::CursorInfo> IpcReceiver::addExpectedReferencesMessage(quint64 ticket, - QTextDocument *textDocument) +QFuture<CppTools::CursorInfo> IpcReceiver::addExpectedReferencesMessage( + quint64 ticket, + QTextDocument *textDocument, + const CppTools::SemanticInfo::LocalUseMap &localUses) { QTC_CHECK(textDocument); QTC_CHECK(!m_referencesTable.contains(ticket)); @@ -138,7 +140,7 @@ QFuture<CppTools::CursorInfo> IpcReceiver::addExpectedReferencesMessage(quint64 QFutureInterface<CppTools::CursorInfo> futureInterface; futureInterface.reportStarted(); - const ReferencesEntry entry{futureInterface, textDocument}; + const ReferencesEntry entry{futureInterface, textDocument, localUses}; m_referencesTable.insert(ticket, entry); return futureInterface.future(); @@ -229,6 +231,7 @@ CppTools::CursorInfo::Range toCursorInfoRange(const QTextDocument &textDocument, static CppTools::CursorInfo toCursorInfo(const QTextDocument &textDocument, + const CppTools::SemanticInfo::LocalUseMap &localUses, const ReferencesMessage &message) { CppTools::CursorInfo result; @@ -239,6 +242,7 @@ CppTools::CursorInfo toCursorInfo(const QTextDocument &textDocument, result.useRanges.append(toCursorInfoRange(textDocument, reference)); result.useRanges.reserve(references.size()); + result.localUses = localUses; return result; } @@ -257,7 +261,7 @@ void IpcReceiver::references(const ReferencesMessage &message) return; // Editor document closed or a new request was issued making this result outdated. QTC_ASSERT(entry.textDocument, return); - futureInterface.reportResult(toCursorInfo(*entry.textDocument, message)); + futureInterface.reportResult(toCursorInfo(*entry.textDocument, entry.localUses, message)); futureInterface.reportFinished(); } @@ -672,12 +676,14 @@ QFuture<CppTools::CursorInfo> IpcCommunicator::requestReferences( const FileContainer &fileContainer, quint32 line, quint32 column, - QTextDocument *textDocument) + QTextDocument *textDocument, + const CppTools::SemanticInfo::LocalUseMap &localUses) { const RequestReferencesMessage message(fileContainer, line, column); m_ipcSender->requestReferences(message); - return m_ipcReceiver.addExpectedReferencesMessage(message.ticketNumber(), textDocument); + return m_ipcReceiver.addExpectedReferencesMessage(message.ticketNumber(), textDocument, + localUses); } void IpcCommunicator::updateTranslationUnitWithRevisionCheck(Core::IDocument *document) diff --git a/src/plugins/clangcodemodel/clangbackendipcintegration.h b/src/plugins/clangcodemodel/clangbackendipcintegration.h index e98565f48c..842d68f266 100644 --- a/src/plugins/clangcodemodel/clangbackendipcintegration.h +++ b/src/plugins/clangcodemodel/clangbackendipcintegration.h @@ -75,8 +75,10 @@ public: void addExpectedCodeCompletedMessage(quint64 ticket, ClangCompletionAssistProcessor *processor); void deleteProcessorsOfEditorWidget(TextEditor::TextEditorWidget *textEditorWidget); - QFuture<CppTools::CursorInfo> addExpectedReferencesMessage(quint64 ticket, - QTextDocument *textDocument); + QFuture<CppTools::CursorInfo> + addExpectedReferencesMessage(quint64 ticket, + QTextDocument *textDocument, + const CppTools::SemanticInfo::LocalUseMap &localUses); bool isExpectingCodeCompletedMessage() const; void reset(); @@ -99,11 +101,14 @@ private: struct ReferencesEntry { ReferencesEntry() = default; ReferencesEntry(QFutureInterface<CppTools::CursorInfo> futureInterface, - QTextDocument *textDocument) + QTextDocument *textDocument, + const CppTools::SemanticInfo::LocalUseMap &localUses) : futureInterface(futureInterface) - , textDocument(textDocument) {} + , textDocument(textDocument) + , localUses(localUses) {} QFutureInterface<CppTools::CursorInfo> futureInterface; QPointer<QTextDocument> textDocument; + CppTools::SemanticInfo::LocalUseMap localUses; }; QHash<quint64, ReferencesEntry> m_referencesTable; }; @@ -149,9 +154,12 @@ public: void registerUnsavedFilesForEditor(const FileContainers &fileContainers); void unregisterUnsavedFilesForEditor(const FileContainers &fileContainers); void requestDocumentAnnotations(const ClangBackEnd::FileContainer &fileContainer); - QFuture<CppTools::CursorInfo> requestReferences(const FileContainer &fileContainer, - quint32 line, - quint32 column, QTextDocument *textDocument); + QFuture<CppTools::CursorInfo> requestReferences( + const FileContainer &fileContainer, + quint32 line, + quint32 column, + QTextDocument *textDocument, + const CppTools::SemanticInfo::LocalUseMap &localUses); void completeCode(ClangCompletionAssistProcessor *assistProcessor, const QString &filePath, quint32 line, quint32 column, diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp index e29f72ae9e..943c126c59 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp @@ -36,6 +36,7 @@ #include <diagnosticcontainer.h> #include <sourcelocationcontainer.h> +#include <cpptools/builtincursorinfo.h> #include <cpptools/clangdiagnosticconfigsmodel.h> #include <cpptools/clangdiagnosticconfigsmodel.h> #include <cpptools/compileroptionsbuilder.h> @@ -334,11 +335,14 @@ ClangEditorDocumentProcessor::cursorInfo(const CppTools::CursorInfoParams ¶m const QTextBlock block = params.textCursor.document()->findBlockByNumber(line - 1); column += ClangCodeModel::Utils::extraUtf8CharsShift(block.text(), column); + const CppTools::SemanticInfo::LocalUseMap localUses + = CppTools::BuiltinCursorInfo::findLocalUses(params.semanticInfo.doc, line, column); return m_ipcCommunicator.requestReferences(simpleFileContainer(), static_cast<quint32>(line), static_cast<quint32>(column), - textDocument()); + textDocument(), + localUses); } ClangBackEnd::FileContainer ClangEditorDocumentProcessor::fileContainerWithArguments() const |