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:
Christian Kandeler
2022-04-28 14:52:47 +02:00
parent 998a8d7369
commit b86c0a13e6
10 changed files with 4 additions and 162 deletions

View File

@@ -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);

View File

@@ -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;

View File

@@ -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();

View File

@@ -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();

View File

@@ -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 &params)
{
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)

View File

@@ -78,7 +78,6 @@ public:
CppEditor::BaseEditorDocumentParser::Configuration parserConfig() const;
QFuture<CppEditor::CursorInfo> cursorInfo(const CppEditor::CursorInfoParams &params) override;
QFuture<CppEditor::CursorInfo> requestLocalReferences(const QTextCursor &cursor) override;
void closeBackendDocument();

View File

@@ -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,

View File

@@ -88,7 +88,6 @@ public:
virtual void setParserConfig(const BaseEditorDocumentParser::Configuration &config);
virtual QFuture<CursorInfo> cursorInfo(const CursorInfoParams &params) = 0;
virtual QFuture<CursorInfo> requestLocalReferences(const QTextCursor &cursor) = 0;
QString filePath() const { return m_filePath; }

View File

@@ -251,15 +251,6 @@ BuiltinEditorDocumentProcessor::cursorInfo(const CursorInfoParams &params)
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)
{

View File

@@ -53,7 +53,6 @@ public:
bool isParserRunning() const override;
QFuture<CursorInfo> cursorInfo(const CursorInfoParams &params) override;
QFuture<CursorInfo> requestLocalReferences(const QTextCursor &) override;
using SemanticHighlightingChecker = std::function<bool()>;
void setSemanticHighlightingChecker(const SemanticHighlightingChecker &checker);