forked from qt-creator/qt-creator
ClangCodeModel: Remove libclang-based references support
Change-Id: I53d10c37eac1ec5a46b904a2e2eb959311f852fa Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -301,29 +301,6 @@ void BackendCommunicator::documentsChangedWithRevisionCheck(const FileContainer
|
||||
}
|
||||
}
|
||||
|
||||
QFuture<CppEditor::CursorInfo> BackendCommunicator::requestReferences(
|
||||
const FileContainer &fileContainer,
|
||||
quint32 line,
|
||||
quint32 column,
|
||||
const CppEditor::SemanticInfo::LocalUseMap &localUses)
|
||||
{
|
||||
const RequestReferencesMessage message(fileContainer, line, column);
|
||||
m_sender->requestReferences(message);
|
||||
|
||||
return m_receiver.addExpectedReferencesMessage(message.ticketNumber, localUses);
|
||||
}
|
||||
|
||||
QFuture<CppEditor::CursorInfo> BackendCommunicator::requestLocalReferences(
|
||||
const FileContainer &fileContainer,
|
||||
quint32 line,
|
||||
quint32 column)
|
||||
{
|
||||
const RequestReferencesMessage message(fileContainer, line, column, true);
|
||||
m_sender->requestReferences(message);
|
||||
|
||||
return m_receiver.addExpectedReferencesMessage(message.ticketNumber);
|
||||
}
|
||||
|
||||
void BackendCommunicator::documentsChangedWithRevisionCheck(Core::IDocument *document)
|
||||
{
|
||||
const auto textDocument = qobject_cast<TextDocument*>(document);
|
||||
|
@@ -91,15 +91,6 @@ public:
|
||||
qint32 funcNameStartLine = -1,
|
||||
qint32 funcNameStartColumn = -1);
|
||||
void cancelCompletions(TextEditor::IAssistProcessor *processor);
|
||||
QFuture<CppEditor::CursorInfo> requestReferences(
|
||||
const FileContainer &fileContainer,
|
||||
quint32 line,
|
||||
quint32 column,
|
||||
const LocalUseMap &localUses);
|
||||
QFuture<CppEditor::CursorInfo> requestLocalReferences(
|
||||
const FileContainer &fileContainer,
|
||||
quint32 line,
|
||||
quint32 column);
|
||||
|
||||
void updateChangeContentStartPosition(const QString &filePath, int position);
|
||||
bool isNotWaitingForCompletion() const;
|
||||
|
@@ -108,21 +108,6 @@ void BackendReceiver::deleteProcessorsOfEditorWidget(TextEditor::TextEditorWidge
|
||||
m_assistProcessorsTable.remove(item);
|
||||
}
|
||||
|
||||
QFuture<CppEditor::CursorInfo> BackendReceiver::addExpectedReferencesMessage(
|
||||
quint64 ticket,
|
||||
const CppEditor::SemanticInfo::LocalUseMap &localUses)
|
||||
{
|
||||
QTC_CHECK(!m_referencesTable.contains(ticket));
|
||||
|
||||
QFutureInterface<CppEditor::CursorInfo> futureInterface;
|
||||
futureInterface.reportStarted();
|
||||
|
||||
const ReferencesEntry entry{futureInterface, localUses};
|
||||
m_referencesTable.insert(ticket, entry);
|
||||
|
||||
return futureInterface.future();
|
||||
}
|
||||
|
||||
bool BackendReceiver::isExpectingCompletionsMessage() const
|
||||
{
|
||||
return !m_assistProcessorsTable.isEmpty();
|
||||
|
@@ -58,10 +58,6 @@ public:
|
||||
void cancelProcessor(TextEditor::IAssistProcessor *processor);
|
||||
void deleteProcessorsOfEditorWidget(TextEditor::TextEditorWidget *textEditorWidget);
|
||||
|
||||
QFuture<CppEditor::CursorInfo>
|
||||
addExpectedReferencesMessage(quint64 ticket,
|
||||
const CppEditor::SemanticInfo::LocalUseMap &localUses
|
||||
= CppEditor::SemanticInfo::LocalUseMap());
|
||||
bool isExpectingCompletionsMessage() const;
|
||||
|
||||
void reset();
|
||||
|
@@ -205,64 +205,10 @@ CppEditor::BaseEditorDocumentParser::Configuration ClangEditorDocumentProcessor:
|
||||
return m_parser->configuration();
|
||||
}
|
||||
|
||||
static bool isCursorOnIdentifier(const QTextCursor &textCursor)
|
||||
{
|
||||
QTextDocument *document = textCursor.document();
|
||||
return CppEditor::isValidIdentifierChar(document->characterAt(textCursor.position()));
|
||||
}
|
||||
|
||||
static QFuture<CppEditor::CursorInfo> defaultCursorInfoFuture()
|
||||
{
|
||||
QFutureInterface<CppEditor::CursorInfo> futureInterface;
|
||||
futureInterface.reportResult(CppEditor::CursorInfo());
|
||||
futureInterface.reportFinished();
|
||||
|
||||
return futureInterface.future();
|
||||
}
|
||||
|
||||
static bool convertPosition(const QTextCursor &textCursor, int *line, int *column)
|
||||
{
|
||||
const bool converted = ::Utils::Text::convertPosition(textCursor.document(),
|
||||
textCursor.position(),
|
||||
line,
|
||||
column);
|
||||
QTC_CHECK(converted);
|
||||
return converted;
|
||||
}
|
||||
|
||||
QFuture<CppEditor::CursorInfo>
|
||||
ClangEditorDocumentProcessor::cursorInfo(const CppEditor::CursorInfoParams ¶ms)
|
||||
{
|
||||
int line, column;
|
||||
convertPosition(params.textCursor, &line, &column);
|
||||
|
||||
if (!isCursorOnIdentifier(params.textCursor))
|
||||
return defaultCursorInfoFuture();
|
||||
|
||||
column = clangColumn(params.textCursor.document()->findBlockByNumber(line - 1), column);
|
||||
const CppEditor::SemanticInfo::LocalUseMap localUses
|
||||
= CppEditor::BuiltinCursorInfo::findLocalUses(params.semanticInfo.doc, line, column);
|
||||
|
||||
return m_communicator.requestReferences(simpleFileContainer(),
|
||||
static_cast<quint32>(line),
|
||||
static_cast<quint32>(column),
|
||||
localUses);
|
||||
}
|
||||
|
||||
QFuture<CppEditor::CursorInfo> ClangEditorDocumentProcessor::requestLocalReferences(
|
||||
const QTextCursor &cursor)
|
||||
{
|
||||
int line, column;
|
||||
convertPosition(cursor, &line, &column);
|
||||
++column; // for 1-based columns
|
||||
|
||||
// TODO: check that by highlighting items
|
||||
if (!isCursorOnIdentifier(cursor))
|
||||
return defaultCursorInfoFuture();
|
||||
|
||||
return m_communicator.requestLocalReferences(simpleFileContainer(),
|
||||
static_cast<quint32>(line),
|
||||
static_cast<quint32>(column));
|
||||
return m_builtinProcessor.cursorInfo(params);
|
||||
}
|
||||
|
||||
ClangEditorDocumentProcessor *ClangEditorDocumentProcessor::get(const QString &filePath)
|
||||
|
@@ -78,7 +78,6 @@ public:
|
||||
CppEditor::BaseEditorDocumentParser::Configuration parserConfig() const;
|
||||
|
||||
QFuture<CppEditor::CursorInfo> cursorInfo(const CppEditor::CursorInfoParams ¶ms) override;
|
||||
QFuture<CppEditor::CursorInfo> requestLocalReferences(const QTextCursor &cursor) override;
|
||||
|
||||
void closeBackendDocument();
|
||||
|
||||
|
@@ -24,11 +24,9 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "clangrefactoringengine.h"
|
||||
#include "clangeditordocumentprocessor.h"
|
||||
|
||||
#include "clangdclient.h"
|
||||
#include "clangmodelmanagersupport.h"
|
||||
#include "sourcelocationscontainer.h"
|
||||
|
||||
#include <cppeditor/cppmodelmanager.h>
|
||||
#include <languageclient/languageclientsymbolsupport.h>
|
||||
@@ -39,7 +37,7 @@ namespace ClangCodeModel {
|
||||
namespace Internal {
|
||||
|
||||
void RefactoringEngine::startLocalRenaming(const CppEditor::CursorInEditor &data,
|
||||
const CppEditor::ProjectPart *,
|
||||
const CppEditor::ProjectPart *projectPart,
|
||||
RenameCallback &&renameSymbolsCallback)
|
||||
{
|
||||
ClangdClient * const client
|
||||
@@ -50,47 +48,8 @@ void RefactoringEngine::startLocalRenaming(const CppEditor::CursorInEditor &data
|
||||
return;
|
||||
}
|
||||
|
||||
ClangEditorDocumentProcessor *processor = ClangEditorDocumentProcessor::get(
|
||||
data.filePath().toString());
|
||||
const int startRevision = data.cursor().document()->revision();
|
||||
|
||||
using ClangBackEnd::SourceLocationsContainer;
|
||||
auto defaultCallback = [renameSymbolsCallback, startRevision]() {
|
||||
return renameSymbolsCallback(QString(), SourceLocationsContainer{}, startRevision);
|
||||
};
|
||||
|
||||
if (!processor)
|
||||
return defaultCallback();
|
||||
|
||||
QFuture<CppEditor::CursorInfo> cursorFuture = processor->requestLocalReferences(data.cursor());
|
||||
if (cursorFuture.isCanceled())
|
||||
return defaultCallback();
|
||||
|
||||
if (m_watcher)
|
||||
m_watcher->cancel();
|
||||
|
||||
m_watcher.reset(new FutureCursorWatcher());
|
||||
QObject::connect(m_watcher.get(), &FutureCursorWatcher::finished, [=]() {
|
||||
if (m_watcher->isCanceled())
|
||||
return defaultCallback();
|
||||
const CppEditor::CursorInfo info = m_watcher->result();
|
||||
if (info.useRanges.empty())
|
||||
return defaultCallback();
|
||||
|
||||
QTextCursor cursor = Utils::Text::wordStartCursor(data.cursor());
|
||||
cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor,
|
||||
info.useRanges.first().length);
|
||||
const QString symbolName = cursor.selectedText();
|
||||
ClangBackEnd::SourceLocationsContainer container;
|
||||
for (auto& use : info.useRanges) {
|
||||
container.insertSourceLocation({},
|
||||
use.line,
|
||||
use.column);
|
||||
}
|
||||
renameSymbolsCallback(symbolName, container, data.cursor().document()->revision());
|
||||
});
|
||||
|
||||
m_watcher->setFuture(cursorFuture);
|
||||
CppEditor::CppModelManager::builtinRefactoringEngine()
|
||||
->startLocalRenaming(data, projectPart, std::move(renameSymbolsCallback));
|
||||
}
|
||||
|
||||
void RefactoringEngine::globalRename(const CppEditor::CursorInEditor &cursor,
|
||||
|
@@ -88,7 +88,6 @@ public:
|
||||
virtual void setParserConfig(const BaseEditorDocumentParser::Configuration &config);
|
||||
|
||||
virtual QFuture<CursorInfo> cursorInfo(const CursorInfoParams ¶ms) = 0;
|
||||
virtual QFuture<CursorInfo> requestLocalReferences(const QTextCursor &cursor) = 0;
|
||||
|
||||
QString filePath() const { return m_filePath; }
|
||||
|
||||
|
@@ -251,15 +251,6 @@ BuiltinEditorDocumentProcessor::cursorInfo(const CursorInfoParams ¶ms)
|
||||
return BuiltinCursorInfo::run(params);
|
||||
}
|
||||
|
||||
QFuture<CursorInfo> BuiltinEditorDocumentProcessor::requestLocalReferences(const QTextCursor &)
|
||||
{
|
||||
QFutureInterface<CursorInfo> futureInterface;
|
||||
futureInterface.reportResult(CursorInfo());
|
||||
futureInterface.reportFinished();
|
||||
|
||||
return futureInterface.future();
|
||||
}
|
||||
|
||||
void BuiltinEditorDocumentProcessor::setSemanticHighlightingChecker(
|
||||
const SemanticHighlightingChecker &checker)
|
||||
{
|
||||
|
@@ -53,7 +53,6 @@ public:
|
||||
bool isParserRunning() const override;
|
||||
|
||||
QFuture<CursorInfo> cursorInfo(const CursorInfoParams ¶ms) override;
|
||||
QFuture<CursorInfo> requestLocalReferences(const QTextCursor &) override;
|
||||
|
||||
using SemanticHighlightingChecker = std::function<bool()>;
|
||||
void setSemanticHighlightingChecker(const SemanticHighlightingChecker &checker);
|
||||
|
Reference in New Issue
Block a user