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)
|
void BackendCommunicator::documentsChangedWithRevisionCheck(Core::IDocument *document)
|
||||||
{
|
{
|
||||||
const auto textDocument = qobject_cast<TextDocument*>(document);
|
const auto textDocument = qobject_cast<TextDocument*>(document);
|
||||||
|
@@ -91,15 +91,6 @@ public:
|
|||||||
qint32 funcNameStartLine = -1,
|
qint32 funcNameStartLine = -1,
|
||||||
qint32 funcNameStartColumn = -1);
|
qint32 funcNameStartColumn = -1);
|
||||||
void cancelCompletions(TextEditor::IAssistProcessor *processor);
|
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);
|
void updateChangeContentStartPosition(const QString &filePath, int position);
|
||||||
bool isNotWaitingForCompletion() const;
|
bool isNotWaitingForCompletion() const;
|
||||||
|
@@ -108,21 +108,6 @@ void BackendReceiver::deleteProcessorsOfEditorWidget(TextEditor::TextEditorWidge
|
|||||||
m_assistProcessorsTable.remove(item);
|
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
|
bool BackendReceiver::isExpectingCompletionsMessage() const
|
||||||
{
|
{
|
||||||
return !m_assistProcessorsTable.isEmpty();
|
return !m_assistProcessorsTable.isEmpty();
|
||||||
|
@@ -58,10 +58,6 @@ public:
|
|||||||
void cancelProcessor(TextEditor::IAssistProcessor *processor);
|
void cancelProcessor(TextEditor::IAssistProcessor *processor);
|
||||||
void deleteProcessorsOfEditorWidget(TextEditor::TextEditorWidget *textEditorWidget);
|
void deleteProcessorsOfEditorWidget(TextEditor::TextEditorWidget *textEditorWidget);
|
||||||
|
|
||||||
QFuture<CppEditor::CursorInfo>
|
|
||||||
addExpectedReferencesMessage(quint64 ticket,
|
|
||||||
const CppEditor::SemanticInfo::LocalUseMap &localUses
|
|
||||||
= CppEditor::SemanticInfo::LocalUseMap());
|
|
||||||
bool isExpectingCompletionsMessage() const;
|
bool isExpectingCompletionsMessage() const;
|
||||||
|
|
||||||
void reset();
|
void reset();
|
||||||
|
@@ -205,64 +205,10 @@ CppEditor::BaseEditorDocumentParser::Configuration ClangEditorDocumentProcessor:
|
|||||||
return m_parser->configuration();
|
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>
|
QFuture<CppEditor::CursorInfo>
|
||||||
ClangEditorDocumentProcessor::cursorInfo(const CppEditor::CursorInfoParams ¶ms)
|
ClangEditorDocumentProcessor::cursorInfo(const CppEditor::CursorInfoParams ¶ms)
|
||||||
{
|
{
|
||||||
int line, column;
|
return m_builtinProcessor.cursorInfo(params);
|
||||||
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));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ClangEditorDocumentProcessor *ClangEditorDocumentProcessor::get(const QString &filePath)
|
ClangEditorDocumentProcessor *ClangEditorDocumentProcessor::get(const QString &filePath)
|
||||||
|
@@ -78,7 +78,6 @@ public:
|
|||||||
CppEditor::BaseEditorDocumentParser::Configuration parserConfig() const;
|
CppEditor::BaseEditorDocumentParser::Configuration parserConfig() const;
|
||||||
|
|
||||||
QFuture<CppEditor::CursorInfo> cursorInfo(const CppEditor::CursorInfoParams ¶ms) override;
|
QFuture<CppEditor::CursorInfo> cursorInfo(const CppEditor::CursorInfoParams ¶ms) override;
|
||||||
QFuture<CppEditor::CursorInfo> requestLocalReferences(const QTextCursor &cursor) override;
|
|
||||||
|
|
||||||
void closeBackendDocument();
|
void closeBackendDocument();
|
||||||
|
|
||||||
|
@@ -24,11 +24,9 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "clangrefactoringengine.h"
|
#include "clangrefactoringengine.h"
|
||||||
#include "clangeditordocumentprocessor.h"
|
|
||||||
|
|
||||||
#include "clangdclient.h"
|
#include "clangdclient.h"
|
||||||
#include "clangmodelmanagersupport.h"
|
#include "clangmodelmanagersupport.h"
|
||||||
#include "sourcelocationscontainer.h"
|
|
||||||
|
|
||||||
#include <cppeditor/cppmodelmanager.h>
|
#include <cppeditor/cppmodelmanager.h>
|
||||||
#include <languageclient/languageclientsymbolsupport.h>
|
#include <languageclient/languageclientsymbolsupport.h>
|
||||||
@@ -39,7 +37,7 @@ namespace ClangCodeModel {
|
|||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
void RefactoringEngine::startLocalRenaming(const CppEditor::CursorInEditor &data,
|
void RefactoringEngine::startLocalRenaming(const CppEditor::CursorInEditor &data,
|
||||||
const CppEditor::ProjectPart *,
|
const CppEditor::ProjectPart *projectPart,
|
||||||
RenameCallback &&renameSymbolsCallback)
|
RenameCallback &&renameSymbolsCallback)
|
||||||
{
|
{
|
||||||
ClangdClient * const client
|
ClangdClient * const client
|
||||||
@@ -50,47 +48,8 @@ void RefactoringEngine::startLocalRenaming(const CppEditor::CursorInEditor &data
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ClangEditorDocumentProcessor *processor = ClangEditorDocumentProcessor::get(
|
CppEditor::CppModelManager::builtinRefactoringEngine()
|
||||||
data.filePath().toString());
|
->startLocalRenaming(data, projectPart, std::move(renameSymbolsCallback));
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RefactoringEngine::globalRename(const CppEditor::CursorInEditor &cursor,
|
void RefactoringEngine::globalRename(const CppEditor::CursorInEditor &cursor,
|
||||||
|
@@ -88,7 +88,6 @@ public:
|
|||||||
virtual void setParserConfig(const BaseEditorDocumentParser::Configuration &config);
|
virtual void setParserConfig(const BaseEditorDocumentParser::Configuration &config);
|
||||||
|
|
||||||
virtual QFuture<CursorInfo> cursorInfo(const CursorInfoParams ¶ms) = 0;
|
virtual QFuture<CursorInfo> cursorInfo(const CursorInfoParams ¶ms) = 0;
|
||||||
virtual QFuture<CursorInfo> requestLocalReferences(const QTextCursor &cursor) = 0;
|
|
||||||
|
|
||||||
QString filePath() const { return m_filePath; }
|
QString filePath() const { return m_filePath; }
|
||||||
|
|
||||||
|
@@ -251,15 +251,6 @@ BuiltinEditorDocumentProcessor::cursorInfo(const CursorInfoParams ¶ms)
|
|||||||
return BuiltinCursorInfo::run(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(
|
void BuiltinEditorDocumentProcessor::setSemanticHighlightingChecker(
|
||||||
const SemanticHighlightingChecker &checker)
|
const SemanticHighlightingChecker &checker)
|
||||||
{
|
{
|
||||||
|
@@ -53,7 +53,6 @@ public:
|
|||||||
bool isParserRunning() const override;
|
bool isParserRunning() const override;
|
||||||
|
|
||||||
QFuture<CursorInfo> cursorInfo(const CursorInfoParams ¶ms) override;
|
QFuture<CursorInfo> cursorInfo(const CursorInfoParams ¶ms) override;
|
||||||
QFuture<CursorInfo> requestLocalReferences(const QTextCursor &) override;
|
|
||||||
|
|
||||||
using SemanticHighlightingChecker = std::function<bool()>;
|
using SemanticHighlightingChecker = std::function<bool()>;
|
||||||
void setSemanticHighlightingChecker(const SemanticHighlightingChecker &checker);
|
void setSemanticHighlightingChecker(const SemanticHighlightingChecker &checker);
|
||||||
|
Reference in New Issue
Block a user