forked from qt-creator/qt-creator
Clang: Remove project tracking on clangbackend side
...as it is not needed. Just provide the compilation arguments as part of the Document. As a side effect, re-initializing the backend after a crash is cheaper and will not freeze the UI anymore (referenced bug). Task-number: QTCREATORBUG-21097 Change-Id: I866e25ef1fd5e4d318df16612a7564469e6baa11 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -80,9 +80,6 @@ public:
|
||||
void documentsClosed(const DocumentsClosedMessage &) override {}
|
||||
void documentVisibilityChanged(const DocumentVisibilityChangedMessage &) override {}
|
||||
|
||||
void projectPartsUpdated(const ProjectPartsUpdatedMessage &) override {}
|
||||
void projectPartsRemoved(const ProjectPartsRemovedMessage &) override {}
|
||||
|
||||
void unsavedFilesUpdated(const UnsavedFilesUpdatedMessage &) override {}
|
||||
void unsavedFilesRemoved(const UnsavedFilesRemovedMessage &) override {}
|
||||
|
||||
@@ -137,42 +134,6 @@ void BackendCommunicator::initializeBackend()
|
||||
m_backendStartTimeOut.start(backEndStartTimeOutInMs);
|
||||
}
|
||||
|
||||
static QStringList projectPartOptions(const CppTools::ProjectPart::Ptr &projectPart)
|
||||
{
|
||||
const QStringList options = ClangCodeModel::Utils::createClangOptions(projectPart,
|
||||
CppTools::ProjectFile::Unsupported); // No language option
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
static ProjectPartContainer toProjectPartContainer(
|
||||
const CppTools::ProjectPart::Ptr &projectPart)
|
||||
{
|
||||
const QStringList options = projectPartOptions(projectPart);
|
||||
|
||||
return ProjectPartContainer(projectPart->id(), Utf8StringVector(options));
|
||||
}
|
||||
|
||||
static QVector<ProjectPartContainer> toProjectPartContainers(
|
||||
const QVector<CppTools::ProjectPart::Ptr> projectParts)
|
||||
{
|
||||
QVector<ProjectPartContainer> projectPartContainers;
|
||||
projectPartContainers.reserve(projectParts.size());
|
||||
|
||||
foreach (const CppTools::ProjectPart::Ptr &projectPart, projectParts)
|
||||
projectPartContainers << toProjectPartContainer(projectPart);
|
||||
|
||||
return projectPartContainers;
|
||||
}
|
||||
|
||||
void BackendCommunicator::projectPartsUpdatedForFallback()
|
||||
{
|
||||
const auto projectPart = CppTools::CppModelManager::instance()->fallbackProjectPart();
|
||||
const auto projectPartContainer = toProjectPartContainer(projectPart);
|
||||
|
||||
projectPartsUpdated({projectPartContainer});
|
||||
}
|
||||
|
||||
namespace {
|
||||
Utf8String currentCppEditorDocumentFilePath()
|
||||
{
|
||||
@@ -253,15 +214,6 @@ void BackendCommunicator::documentVisibilityChanged(const Utf8String ¤tEdi
|
||||
m_sender->documentVisibilityChanged(message);
|
||||
}
|
||||
|
||||
void BackendCommunicator::projectPartsUpdatedForCurrentProjects()
|
||||
{
|
||||
using namespace CppTools;
|
||||
|
||||
const QList<ProjectInfo> projectInfos = CppModelManager::instance()->projectInfos();
|
||||
foreach (const ProjectInfo &projectInfo, projectInfos)
|
||||
projectPartsUpdated(projectInfo.projectParts());
|
||||
}
|
||||
|
||||
void BackendCommunicator::restoreCppEditorDocuments()
|
||||
{
|
||||
resetCppEditorDocumentProcessors();
|
||||
@@ -289,12 +241,6 @@ void BackendCommunicator::unsavedFilesUpdatedForUiHeaders()
|
||||
}
|
||||
}
|
||||
|
||||
void BackendCommunicator::projectPartsUpdated(const QVector<CppTools::ProjectPart::Ptr> projectParts)
|
||||
{
|
||||
const auto projectPartContainers = toProjectPartContainers(projectParts);
|
||||
projectPartsUpdated(projectPartContainers);
|
||||
}
|
||||
|
||||
void BackendCommunicator::documentsChangedFromCppEditorDocument(const QString &filePath)
|
||||
{
|
||||
const CppTools::CppEditorDocumentHandle *document = ClangCodeModel::Utils::cppDocument(filePath);
|
||||
@@ -316,7 +262,6 @@ void BackendCommunicator::documentsChanged(const QString &filePath,
|
||||
const bool hasUnsavedContent = true;
|
||||
|
||||
documentsChanged({{filePath,
|
||||
Utf8String(),
|
||||
Utf8String::fromByteArray(contents),
|
||||
hasUnsavedContent,
|
||||
documentRevision}});
|
||||
@@ -330,7 +275,6 @@ void BackendCommunicator::unsavedFilesUpdated(const QString &filePath,
|
||||
|
||||
// TODO: Send new only if changed
|
||||
unsavedFilesUpdated({{filePath,
|
||||
Utf8String(),
|
||||
Utf8String::fromByteArray(contents),
|
||||
hasUnsavedContent,
|
||||
documentRevision}});
|
||||
@@ -412,10 +356,8 @@ void BackendCommunicator::documentsChangedWithRevisionCheck(Core::IDocument *doc
|
||||
{
|
||||
const auto textDocument = qobject_cast<TextDocument*>(document);
|
||||
const auto filePath = textDocument->filePath().toString();
|
||||
const QString projectPartId = CppTools::CppToolsBridge::projectPartIdForFile(filePath);
|
||||
|
||||
documentsChangedWithRevisionCheck(FileContainer(filePath,
|
||||
projectPartId,
|
||||
Utf8StringVector(),
|
||||
textDocument->document()->revision()));
|
||||
}
|
||||
@@ -510,8 +452,6 @@ void BackendCommunicator::logError(const QString &text)
|
||||
|
||||
void BackendCommunicator::initializeBackendWithCurrentData()
|
||||
{
|
||||
projectPartsUpdatedForFallback();
|
||||
projectPartsUpdatedForCurrentProjects();
|
||||
unsavedFilesUpdatedForUiHeaders();
|
||||
restoreCppEditorDocuments();
|
||||
documentVisibilityChanged();
|
||||
@@ -537,19 +477,6 @@ void BackendCommunicator::documentsClosed(const FileContainers &fileContainers)
|
||||
m_sender->documentsClosed(message);
|
||||
}
|
||||
|
||||
void BackendCommunicator::projectPartsUpdated(
|
||||
const ProjectPartContainers &projectPartContainers)
|
||||
{
|
||||
const ProjectPartsUpdatedMessage message(projectPartContainers);
|
||||
m_sender->projectPartsUpdated(message);
|
||||
}
|
||||
|
||||
void BackendCommunicator::projectPartsRemoved(const QStringList &projectPartIds)
|
||||
{
|
||||
const ProjectPartsRemovedMessage message((Utf8StringVector(projectPartIds)));
|
||||
m_sender->projectPartsRemoved(message);
|
||||
}
|
||||
|
||||
void BackendCommunicator::unsavedFilesUpdated(const FileContainers &fileContainers)
|
||||
{
|
||||
const UnsavedFilesUpdatedMessage message(fileContainers);
|
||||
@@ -566,14 +493,12 @@ void BackendCommunicator::requestCompletions(ClangCompletionAssistProcessor *ass
|
||||
const QString &filePath,
|
||||
quint32 line,
|
||||
quint32 column,
|
||||
const QString &projectFilePath,
|
||||
qint32 funcNameStartLine,
|
||||
qint32 funcNameStartColumn)
|
||||
{
|
||||
const RequestCompletionsMessage message(filePath,
|
||||
line,
|
||||
column,
|
||||
projectFilePath,
|
||||
funcNameStartLine,
|
||||
funcNameStartColumn);
|
||||
m_sender->requestCompletions(message);
|
||||
|
||||
Reference in New Issue
Block a user