From f1290da3cd65a9a0fe20ffd1eb49ccdaf92b5f92 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Thu, 18 Oct 2018 14:38:50 +0200 Subject: [PATCH] Clang: Avoid running pointless UpdateDocumentJobs Opening a document (without typing in it), switching away and back to it resulted in running UpdateDocumentJobs for that document for nothing. As for documents we are going to reset, simply set opened documents initially dirty. Change-Id: I8edc2d1fb8f6f92950b4e2067f60609176bd5b26 Reviewed-by: Ivan Donchevskii --- src/tools/clangbackend/source/clangcodemodelserver.cpp | 9 +++++---- tests/unit/unittest/clangcodemodelserver-test.cpp | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/tools/clangbackend/source/clangcodemodelserver.cpp b/src/tools/clangbackend/source/clangcodemodelserver.cpp index 66caaf2b492..218679c3cb9 100644 --- a/src/tools/clangbackend/source/clangcodemodelserver.cpp +++ b/src/tools/clangbackend/source/clangcodemodelserver.cpp @@ -102,9 +102,11 @@ void ClangCodeModelServer::documentsOpened(const ClangBackEnd::DocumentsOpenedMe QVector toCreate; categorizeFileContainers(message.fileContainers, toCreate, toReset); - const std::vector createdDocuments = documents.create(toCreate); - for (const auto &document : createdDocuments) + std::vector createdDocuments = documents.create(toCreate); + for (auto &document : createdDocuments) { + document.setDirtyIfDependencyIsMet(document.filePath()); documentProcessors().create(document); + } const std::vector resetDocuments_ = resetDocuments(toReset); unsavedFiles.createOrUpdate(message.fileContainers); @@ -341,8 +343,7 @@ void ClangCodeModelServer::processJobsForVisibleDocuments() void ClangCodeModelServer::processJobsForCurrentDocument() { auto currentDocuments = documents.filtered([](const Document &document) { - return document.isUsedByCurrentEditor() - && (document.isDirty() || document.documentRevision() == 1); + return document.isUsedByCurrentEditor() && document.isDirty(); }); QTC_CHECK(currentDocuments.size() <= 1); diff --git a/tests/unit/unittest/clangcodemodelserver-test.cpp b/tests/unit/unittest/clangcodemodelserver-test.cpp index 0446384232d..ea0be4a6187 100644 --- a/tests/unit/unittest/clangcodemodelserver-test.cpp +++ b/tests/unit/unittest/clangcodemodelserver-test.cpp @@ -311,11 +311,11 @@ TEST_F(ClangCodeModelServerSlowTest, GetNewCodeCompletionAfterUpdatingUnsavedFil requestCompletionsInFileA(); } -TEST_F(ClangCodeModelServerSlowTest, TranslationUnitAfterCreationIsNotDirty) +TEST_F(ClangCodeModelServerSlowTest, OpenedDocumentsAreDirty) { openDocument(filePathA, AnnotationJobsMultiplier); - ASSERT_THAT(clangServer, HasDirtyDocument(filePathA, 0U, false, false)); + ASSERT_THAT(clangServer, HasDirtyDocument(filePathA, 0U, true, false)); } TEST_F(ClangCodeModelServerSlowTest, SetCurrentAndVisibleEditor)