forked from qt-creator/qt-creator
Clang: Move createJobRequest into Jobs
This simplifies the high level client ClangCodeModelServer and removes quite some duplication in tests. Change-Id: I4c6ab8646c8728990ebaca2b920ae514e949c54a Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -201,14 +201,14 @@ void ClangCodeModelServer::completeCode(const ClangBackEnd::CompleteCodeMessage
|
||||
TIME_SCOPE_DURATION("ClangCodeModelServer::completeCode");
|
||||
|
||||
try {
|
||||
auto document = documents.document(message.filePath(), message.projectPartId());
|
||||
Document document = documents.document(message.filePath(), message.projectPartId());
|
||||
DocumentProcessor processor = documentProcessors().processor(document);
|
||||
|
||||
JobRequest jobRequest = createJobRequest(document, JobRequest::Type::CompleteCode);
|
||||
JobRequest jobRequest = processor.createJobRequest(JobRequest::Type::CompleteCode);
|
||||
jobRequest.line = message.line();
|
||||
jobRequest.column = message.column();
|
||||
jobRequest.ticketNumber = message.ticketNumber();
|
||||
|
||||
DocumentProcessor processor = documentProcessors().processor(document);
|
||||
processor.addJob(jobRequest);
|
||||
processor.process();
|
||||
} catch (const std::exception &exception) {
|
||||
@@ -224,11 +224,8 @@ void ClangCodeModelServer::requestDocumentAnnotations(const RequestDocumentAnnot
|
||||
auto document = documents.document(message.fileContainer().filePath(),
|
||||
message.fileContainer().projectPartId());
|
||||
|
||||
const JobRequest jobRequest = createJobRequest(document,
|
||||
JobRequest::Type::RequestDocumentAnnotations);
|
||||
|
||||
DocumentProcessor processor = documentProcessors().processor(document);
|
||||
processor.addJob(jobRequest);
|
||||
processor.addJob(JobRequest::Type::RequestDocumentAnnotations);
|
||||
processor.process();
|
||||
} catch (const std::exception &exception) {
|
||||
qWarning() << "Error in ClangCodeModelServer::requestDocumentAnnotations:" << exception.what();
|
||||
@@ -294,9 +291,8 @@ void ClangCodeModelServer::addAndRunUpdateJobs(const std::vector<Document> &docu
|
||||
{
|
||||
for (const auto &document : documents) {
|
||||
DocumentProcessor processor = documentProcessors().processor(document);
|
||||
processor.addJob(createJobRequest(document,
|
||||
JobRequest::Type::UpdateDocumentAnnotations,
|
||||
PreferredTranslationUnit::PreviouslyParsed));
|
||||
processor.addJob(JobRequest::Type::UpdateDocumentAnnotations,
|
||||
PreferredTranslationUnit::PreviouslyParsed);
|
||||
processor.process();
|
||||
}
|
||||
}
|
||||
@@ -320,15 +316,8 @@ void ClangCodeModelServer::processInitialJobsForDocuments(const std::vector<Docu
|
||||
{
|
||||
for (const auto &document : documents) {
|
||||
DocumentProcessor processor = documentProcessors().create(document);
|
||||
const auto jobRequestCreator = [this](const Document &document,
|
||||
JobRequest::Type jobRequestType,
|
||||
PreferredTranslationUnit preferredTranslationUnit) {
|
||||
return createJobRequest(document, jobRequestType, preferredTranslationUnit);
|
||||
};
|
||||
processor.setJobRequestCreator(jobRequestCreator);
|
||||
|
||||
processor.addJob(createJobRequest(document, JobRequest::Type::UpdateDocumentAnnotations));
|
||||
processor.addJob(createJobRequest(document, JobRequest::Type::CreateInitialDocumentPreamble));
|
||||
processor.addJob(JobRequest::Type::UpdateDocumentAnnotations);
|
||||
processor.addJob(JobRequest::Type::CreateInitialDocumentPreamble);
|
||||
processor.process();
|
||||
}
|
||||
}
|
||||
@@ -357,25 +346,6 @@ void ClangCodeModelServer::startInitializingSupportiveTranslationUnits(
|
||||
}
|
||||
}
|
||||
|
||||
JobRequest ClangCodeModelServer::createJobRequest(
|
||||
const Document &document,
|
||||
JobRequest::Type type,
|
||||
PreferredTranslationUnit preferredTranslationUnit) const
|
||||
{
|
||||
JobRequest jobRequest;
|
||||
jobRequest.type = type;
|
||||
jobRequest.requirements = JobRequest::requirementsForType(type);
|
||||
jobRequest.filePath = document.filePath();
|
||||
jobRequest.projectPartId = document.projectPartId();
|
||||
jobRequest.unsavedFilesChangeTimePoint = unsavedFiles.lastChangeTimePoint();
|
||||
jobRequest.documentRevision = document.documentRevision();
|
||||
jobRequest.preferredTranslationUnit = preferredTranslationUnit;
|
||||
const ProjectPart &projectPart = projects.project(document.projectPartId());
|
||||
jobRequest.projectChangeTimePoint = projectPart.lastChangeTimePoint();
|
||||
|
||||
return jobRequest;
|
||||
}
|
||||
|
||||
void ClangCodeModelServer::setUpdateDocumentAnnotationsTimeOutInMsForTestsOnly(int value)
|
||||
{
|
||||
updateDocumentAnnotationsTimeOutInMs = value;
|
||||
|
||||
@@ -82,11 +82,6 @@ private:
|
||||
|
||||
void addAndRunUpdateJobs(const std::vector<Document> &documents);
|
||||
|
||||
JobRequest createJobRequest(const Document &document,
|
||||
JobRequest::Type type,
|
||||
PreferredTranslationUnit preferredTranslationUnit
|
||||
= PreferredTranslationUnit::RecentlyParsed) const;
|
||||
|
||||
private:
|
||||
ProjectParts projects;
|
||||
UnsavedFiles unsavedFiles;
|
||||
|
||||
@@ -62,7 +62,6 @@ public:
|
||||
Jobs jobs;
|
||||
|
||||
SupportiveTranslationUnitInitializer supportiveTranslationUnitInitializer;
|
||||
JobRequestCreator jobRequestCreator;
|
||||
};
|
||||
|
||||
DocumentProcessor::DocumentProcessor(const Document &document,
|
||||
@@ -78,9 +77,11 @@ DocumentProcessor::DocumentProcessor(const Document &document,
|
||||
{
|
||||
}
|
||||
|
||||
void DocumentProcessor::setJobRequestCreator(const JobRequestCreator &creator)
|
||||
JobRequest DocumentProcessor::createJobRequest(
|
||||
JobRequest::Type type,
|
||||
PreferredTranslationUnit preferredTranslationUnit) const
|
||||
{
|
||||
d->supportiveTranslationUnitInitializer.setJobRequestCreator(creator);
|
||||
return d->jobs.createJobRequest(d->document, type, preferredTranslationUnit);
|
||||
}
|
||||
|
||||
void DocumentProcessor::addJob(const JobRequest &jobRequest)
|
||||
@@ -88,6 +89,11 @@ void DocumentProcessor::addJob(const JobRequest &jobRequest)
|
||||
d->jobs.add(jobRequest);
|
||||
}
|
||||
|
||||
void DocumentProcessor::addJob(JobRequest::Type type, PreferredTranslationUnit preferredTranslationUnit)
|
||||
{
|
||||
d->jobs.add(d->document, type, preferredTranslationUnit);
|
||||
}
|
||||
|
||||
JobRequests DocumentProcessor::process()
|
||||
{
|
||||
return d->jobs.process();
|
||||
|
||||
@@ -49,9 +49,15 @@ public:
|
||||
ProjectParts &projects,
|
||||
ClangCodeModelClientInterface &client);
|
||||
|
||||
void setJobRequestCreator(const JobRequestCreator &creator);
|
||||
JobRequest createJobRequest(JobRequest::Type type,
|
||||
PreferredTranslationUnit preferredTranslationUnit
|
||||
= PreferredTranslationUnit::RecentlyParsed) const;
|
||||
|
||||
void addJob(const JobRequest &jobRequest);
|
||||
void addJob(JobRequest::Type type,
|
||||
PreferredTranslationUnit preferredTranslationUnit
|
||||
= PreferredTranslationUnit::RecentlyParsed);
|
||||
|
||||
JobRequests process();
|
||||
|
||||
Document document() const;
|
||||
|
||||
@@ -93,9 +93,6 @@ public:
|
||||
};
|
||||
|
||||
using JobRequests = QVector<JobRequest>;
|
||||
using JobRequestCreator = std::function<JobRequest(const Document &,
|
||||
JobRequest::Type ,
|
||||
PreferredTranslationUnit)>;
|
||||
|
||||
QDebug operator<<(QDebug debug, const JobRequest &jobRequest);
|
||||
|
||||
|
||||
@@ -25,7 +25,9 @@
|
||||
|
||||
#include "clangjobs.h"
|
||||
|
||||
#include "clangdocument.h"
|
||||
#include "clangiasyncjob.h"
|
||||
#include "projects.h"
|
||||
|
||||
#include <QDebug>
|
||||
#include <QFutureSynchronizer>
|
||||
@@ -42,6 +44,7 @@ Jobs::Jobs(Documents &documents,
|
||||
ClangCodeModelClientInterface &client)
|
||||
: m_documents(documents)
|
||||
, m_unsavedFiles(unsavedFiles)
|
||||
, m_projectParts(projectParts)
|
||||
, m_client(client)
|
||||
, m_queue(documents, projectParts)
|
||||
{
|
||||
@@ -66,11 +69,37 @@ Jobs::~Jobs()
|
||||
delete asyncJob;
|
||||
}
|
||||
|
||||
JobRequest Jobs::createJobRequest(const Document &document,
|
||||
JobRequest::Type type,
|
||||
PreferredTranslationUnit preferredTranslationUnit) const
|
||||
{
|
||||
JobRequest jobRequest;
|
||||
jobRequest.type = type;
|
||||
jobRequest.requirements = JobRequest::requirementsForType(type);
|
||||
jobRequest.filePath = document.filePath();
|
||||
jobRequest.projectPartId = document.projectPartId();
|
||||
jobRequest.unsavedFilesChangeTimePoint = m_unsavedFiles.lastChangeTimePoint();
|
||||
jobRequest.documentRevision = document.documentRevision();
|
||||
jobRequest.preferredTranslationUnit = preferredTranslationUnit;
|
||||
const ProjectPart &projectPart = m_projectParts.project(document.projectPartId());
|
||||
jobRequest.projectChangeTimePoint = projectPart.lastChangeTimePoint();
|
||||
|
||||
return jobRequest;
|
||||
}
|
||||
|
||||
void Jobs::add(const JobRequest &job)
|
||||
{
|
||||
m_queue.add(job);
|
||||
}
|
||||
|
||||
void Jobs::add(const Document &document,
|
||||
JobRequest::Type type,
|
||||
PreferredTranslationUnit preferredTranslationUnit)
|
||||
{
|
||||
const JobRequest jobRequest = createJobRequest(document, type, preferredTranslationUnit);
|
||||
m_queue.add(jobRequest);
|
||||
}
|
||||
|
||||
JobRequests Jobs::process()
|
||||
{
|
||||
const JobRequests jobsToRun = m_queue.processQueue();
|
||||
|
||||
@@ -59,7 +59,15 @@ public:
|
||||
ClangCodeModelClientInterface &client);
|
||||
~Jobs();
|
||||
|
||||
JobRequest createJobRequest(const Document &document, JobRequest::Type type,
|
||||
PreferredTranslationUnit preferredTranslationUnit
|
||||
= PreferredTranslationUnit::RecentlyParsed) const;
|
||||
|
||||
void add(const JobRequest &job);
|
||||
void add(const Document &document,
|
||||
JobRequest::Type type,
|
||||
PreferredTranslationUnit preferredTranslationUnit
|
||||
= PreferredTranslationUnit::RecentlyParsed);
|
||||
|
||||
JobRequests process();
|
||||
|
||||
@@ -79,6 +87,7 @@ private:
|
||||
private:
|
||||
Documents &m_documents;
|
||||
UnsavedFiles &m_unsavedFiles;
|
||||
ProjectParts &m_projectParts;
|
||||
ClangCodeModelClientInterface &m_client;
|
||||
|
||||
JobQueue m_queue;
|
||||
|
||||
@@ -42,11 +42,6 @@ SupportiveTranslationUnitInitializer::SupportiveTranslationUnitInitializer(
|
||||
{
|
||||
}
|
||||
|
||||
void SupportiveTranslationUnitInitializer::setJobRequestCreator(const JobRequestCreator &creator)
|
||||
{
|
||||
m_jobRequestCreator = creator;
|
||||
}
|
||||
|
||||
void SupportiveTranslationUnitInitializer::setIsDocumentClosedChecker(
|
||||
const IsDocumentClosedChecker &isDocumentClosedChecker)
|
||||
{
|
||||
@@ -124,11 +119,8 @@ bool SupportiveTranslationUnitInitializer::abortIfDocumentIsClosed()
|
||||
|
||||
void SupportiveTranslationUnitInitializer::addJob(JobRequest::Type jobRequestType)
|
||||
{
|
||||
QTC_CHECK(m_jobRequestCreator);
|
||||
|
||||
const JobRequest jobRequest = m_jobRequestCreator(m_document,
|
||||
jobRequestType,
|
||||
PreferredTranslationUnit::LastUninitialized);
|
||||
const JobRequest jobRequest = m_jobs.createJobRequest(
|
||||
m_document, jobRequestType, PreferredTranslationUnit::LastUninitialized);
|
||||
|
||||
m_jobs.add(jobRequest);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "clangdocument.h"
|
||||
#include "clangjobrequest.h"
|
||||
#include "clangjobs.h"
|
||||
|
||||
#include <functional>
|
||||
@@ -49,7 +48,6 @@ public:
|
||||
public:
|
||||
SupportiveTranslationUnitInitializer(const Document &document, Jobs &jobs);
|
||||
|
||||
void setJobRequestCreator(const JobRequestCreator &creator);
|
||||
void setIsDocumentClosedChecker(const IsDocumentClosedChecker &isDocumentClosedChecker);
|
||||
|
||||
State state() const;
|
||||
@@ -61,7 +59,6 @@ public: // for tests
|
||||
void checkIfReparseJobFinished(const Jobs::RunningJob &job);
|
||||
|
||||
private:
|
||||
|
||||
bool abortIfDocumentIsClosed();
|
||||
void addJob(JobRequest::Type jobRequestType);
|
||||
|
||||
@@ -70,7 +67,6 @@ private:
|
||||
Jobs &m_jobs;
|
||||
|
||||
State m_state = State::NotInitialized;
|
||||
JobRequestCreator m_jobRequestCreator;
|
||||
IsDocumentClosedChecker m_isDocumentClosedChecker;
|
||||
};
|
||||
|
||||
|
||||
@@ -44,54 +44,8 @@ using namespace ClangBackEnd;
|
||||
|
||||
namespace {
|
||||
|
||||
class DocumentProcessor : public ::testing::Test
|
||||
{
|
||||
protected:
|
||||
void SetUp() override;
|
||||
void TearDown() override;
|
||||
|
||||
ClangBackEnd::JobRequest createJobRequest(ClangBackEnd::JobRequest::Type type) const;
|
||||
|
||||
bool waitUntilAllJobsFinished(int timeOutInMs = 10000) const;
|
||||
|
||||
protected:
|
||||
ClangBackEnd::ProjectParts projects;
|
||||
ClangBackEnd::UnsavedFiles unsavedFiles;
|
||||
ClangBackEnd::Documents documents{projects, unsavedFiles};
|
||||
ClangBackEnd::Document document;
|
||||
|
||||
DummyIpcClient dummyIpcClient;
|
||||
|
||||
Utf8String filePath{Utf8StringLiteral(TESTDATA_DIR"/translationunits.cpp")};
|
||||
Utf8String projectPartId{Utf8StringLiteral("/path/to/projectfile")};
|
||||
|
||||
ClangBackEnd::DocumentProcessor documentProcessor{document,
|
||||
documents,
|
||||
unsavedFiles,
|
||||
projects,
|
||||
dummyIpcClient};
|
||||
};
|
||||
|
||||
using DocumentProcessorSlowTest = DocumentProcessor;
|
||||
|
||||
TEST_F(DocumentProcessor, ProcessEmpty)
|
||||
{
|
||||
const JobRequests jobsStarted = documentProcessor.process();
|
||||
|
||||
ASSERT_THAT(jobsStarted.size(), 0);
|
||||
}
|
||||
|
||||
TEST_F(DocumentProcessorSlowTest, ProcessSingleJob)
|
||||
{
|
||||
const JobRequest jobRequest = createJobRequest(JobRequest::Type::UpdateDocumentAnnotations);
|
||||
documentProcessor.addJob(jobRequest);
|
||||
|
||||
const JobRequests jobsStarted = documentProcessor.process();
|
||||
|
||||
ASSERT_THAT(jobsStarted.size(), 1);
|
||||
}
|
||||
|
||||
void DocumentProcessor::SetUp()
|
||||
struct Data {
|
||||
Data()
|
||||
{
|
||||
projects.createOrUpdate({ProjectPartContainer(projectPartId)});
|
||||
|
||||
@@ -101,28 +55,69 @@ void DocumentProcessor::SetUp()
|
||||
documents.setUsedByCurrentEditor(filePath);
|
||||
}
|
||||
|
||||
ClangBackEnd::ProjectParts projects;
|
||||
ClangBackEnd::UnsavedFiles unsavedFiles;
|
||||
ClangBackEnd::Documents documents{projects, unsavedFiles};
|
||||
ClangBackEnd::Document document;
|
||||
|
||||
DummyIpcClient dummyIpcClient;
|
||||
|
||||
Utf8String filePath{Utf8StringLiteral(TESTDATA_DIR"/translationunits.cpp")};
|
||||
Utf8String projectPartId{Utf8StringLiteral("/path/to/projectfile")};
|
||||
};
|
||||
|
||||
class DocumentProcessor : public ::testing::Test
|
||||
{
|
||||
protected:
|
||||
void SetUp() override;
|
||||
void TearDown() override;
|
||||
|
||||
protected:
|
||||
std::unique_ptr<Data> d;
|
||||
std::unique_ptr<ClangBackEnd::DocumentProcessor> documentProcessor;
|
||||
|
||||
bool waitUntilAllJobsFinished(int timeOutInMs = 10000) const;
|
||||
};
|
||||
|
||||
using DocumentProcessorSlowTest = DocumentProcessor;
|
||||
|
||||
TEST_F(DocumentProcessor, ProcessEmpty)
|
||||
{
|
||||
const JobRequests jobsStarted = documentProcessor->process();
|
||||
|
||||
ASSERT_THAT(jobsStarted.size(), 0);
|
||||
}
|
||||
|
||||
TEST_F(DocumentProcessorSlowTest, ProcessSingleJob)
|
||||
{
|
||||
const JobRequest jobRequest
|
||||
= documentProcessor->createJobRequest(JobRequest::Type::UpdateDocumentAnnotations);
|
||||
documentProcessor->addJob(jobRequest);
|
||||
|
||||
const JobRequests jobsStarted = documentProcessor->process();
|
||||
|
||||
ASSERT_THAT(jobsStarted.size(), 1);
|
||||
}
|
||||
|
||||
void DocumentProcessor::SetUp()
|
||||
{
|
||||
d.reset(new Data);
|
||||
documentProcessor.reset(new ClangBackEnd::DocumentProcessor(d->document,
|
||||
d->documents,
|
||||
d->unsavedFiles,
|
||||
d->projects,
|
||||
d->dummyIpcClient));
|
||||
}
|
||||
|
||||
void DocumentProcessor::TearDown()
|
||||
{
|
||||
ASSERT_TRUE(waitUntilAllJobsFinished()); // QFuture/QFutureWatcher is implemented with events
|
||||
}
|
||||
|
||||
JobRequest DocumentProcessor::createJobRequest(JobRequest::Type type) const
|
||||
{
|
||||
JobRequest jobRequest;
|
||||
jobRequest.type = type;
|
||||
jobRequest.requirements = JobRequest::requirementsForType(type);
|
||||
jobRequest.filePath = filePath;
|
||||
jobRequest.projectPartId = projectPartId;
|
||||
jobRequest.unsavedFilesChangeTimePoint = unsavedFiles.lastChangeTimePoint();
|
||||
jobRequest.documentRevision = document.documentRevision();
|
||||
jobRequest.projectChangeTimePoint = projects.project(projectPartId).lastChangeTimePoint();
|
||||
|
||||
return jobRequest;
|
||||
d.reset();
|
||||
}
|
||||
|
||||
bool DocumentProcessor::waitUntilAllJobsFinished(int timeOutInMs) const
|
||||
{
|
||||
const auto noJobsRunningAnymore = [this](){ return documentProcessor.runningJobs().isEmpty(); };
|
||||
const auto noJobsRunningAnymore = [this](){ return documentProcessor->runningJobs().isEmpty(); };
|
||||
|
||||
return ProcessEventUtilities::processEventsUntilTrue(noJobsRunningAnymore, timeOutInMs);
|
||||
}
|
||||
|
||||
@@ -54,8 +54,6 @@ protected:
|
||||
void SetUp() override;
|
||||
void TearDown() override;
|
||||
|
||||
ClangBackEnd::JobRequest createJobRequest(ClangBackEnd::JobRequest::Type type) const;
|
||||
|
||||
bool waitUntilAllJobsFinished(int timeOutInMs = 10000) const;
|
||||
|
||||
protected:
|
||||
@@ -149,8 +147,7 @@ TEST_F(DocumentProcessors, ProcessEmpty)
|
||||
TEST_F(DocumentProcessorsSlowTest, ProcessSingle)
|
||||
{
|
||||
DocumentProcessor documentProcessor = documentProcessors.create(document);
|
||||
const JobRequest jobRequest = createJobRequest(JobRequest::Type::UpdateDocumentAnnotations);
|
||||
documentProcessor.addJob(jobRequest);
|
||||
documentProcessor.addJob(JobRequest::Type::UpdateDocumentAnnotations);
|
||||
|
||||
const JobRequests jobsStarted = documentProcessors.process();
|
||||
|
||||
@@ -172,20 +169,6 @@ void DocumentProcessors::TearDown()
|
||||
ASSERT_TRUE(waitUntilAllJobsFinished()); // QFuture/QFutureWatcher is implemented with events
|
||||
}
|
||||
|
||||
JobRequest DocumentProcessors::createJobRequest(JobRequest::Type type) const
|
||||
{
|
||||
JobRequest jobRequest;
|
||||
jobRequest.type = type;
|
||||
jobRequest.requirements = JobRequest::requirementsForType(type);
|
||||
jobRequest.filePath = filePath;
|
||||
jobRequest.projectPartId = projectPartId;
|
||||
jobRequest.unsavedFilesChangeTimePoint = unsavedFiles.lastChangeTimePoint();
|
||||
jobRequest.documentRevision = document.documentRevision();
|
||||
jobRequest.projectChangeTimePoint = projects.project(projectPartId).lastChangeTimePoint();
|
||||
|
||||
return jobRequest;
|
||||
}
|
||||
|
||||
bool DocumentProcessors::waitUntilAllJobsFinished(int timeOutInMs) const
|
||||
{
|
||||
const auto noJobsRunningAnymore = [this](){ return documentProcessors.runningJobs().isEmpty(); };
|
||||
|
||||
@@ -58,9 +58,6 @@ protected:
|
||||
bool waitUntilAllJobsFinished(int timeOutInMs = 10000) const;
|
||||
bool waitUntilJobChainFinished(int timeOutInMs = 10000) const;
|
||||
|
||||
JobRequest createJobRequest(const Utf8String &filePath,
|
||||
JobRequest::Type type) const;
|
||||
|
||||
protected:
|
||||
ClangBackEnd::ProjectParts projects;
|
||||
ClangBackEnd::UnsavedFiles unsavedFiles;
|
||||
@@ -86,7 +83,7 @@ TEST_F(Jobs, ProcessEmptyQueue)
|
||||
|
||||
TEST_F(JobsSlowTest, ProcessQueueWithSingleJob)
|
||||
{
|
||||
jobs.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations));
|
||||
jobs.add(document, JobRequest::Type::UpdateDocumentAnnotations);
|
||||
|
||||
const JobRequests jobsStarted = jobs.process();
|
||||
|
||||
@@ -96,9 +93,9 @@ TEST_F(JobsSlowTest, ProcessQueueWithSingleJob)
|
||||
|
||||
TEST_F(JobsSlowTest, ProcessQueueUntilEmpty)
|
||||
{
|
||||
jobs.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations));
|
||||
jobs.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations));
|
||||
jobs.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations));
|
||||
jobs.add(document, JobRequest::Type::UpdateDocumentAnnotations);
|
||||
jobs.add(document, JobRequest::Type::UpdateDocumentAnnotations);
|
||||
jobs.add(document, JobRequest::Type::UpdateDocumentAnnotations);
|
||||
|
||||
jobs.process();
|
||||
|
||||
@@ -107,7 +104,7 @@ TEST_F(JobsSlowTest, ProcessQueueUntilEmpty)
|
||||
|
||||
TEST_F(JobsSlowTest, IsJobRunning)
|
||||
{
|
||||
jobs.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations));
|
||||
jobs.add(document, JobRequest::Type::UpdateDocumentAnnotations);
|
||||
jobs.process();
|
||||
|
||||
const bool isJobRunning = jobs.isJobRunningForTranslationUnit(document.translationUnit().id());
|
||||
@@ -146,19 +143,4 @@ bool Jobs::waitUntilJobChainFinished(int timeOutInMs) const
|
||||
return ProcessEventUtilities::processEventsUntilTrue(noJobsRunningAnymore, timeOutInMs);
|
||||
}
|
||||
|
||||
JobRequest Jobs::createJobRequest(const Utf8String &filePath,
|
||||
JobRequest::Type type) const
|
||||
{
|
||||
JobRequest jobRequest;
|
||||
jobRequest.type = type;
|
||||
jobRequest.requirements = JobRequest::requirementsForType(type);
|
||||
jobRequest.filePath = filePath;
|
||||
jobRequest.projectPartId = projectPartId;
|
||||
jobRequest.unsavedFilesChangeTimePoint = unsavedFiles.lastChangeTimePoint();
|
||||
jobRequest.documentRevision = document.documentRevision();
|
||||
jobRequest.projectChangeTimePoint = projects.project(projectPartId).lastChangeTimePoint();
|
||||
|
||||
return jobRequest;
|
||||
}
|
||||
|
||||
} // anonymous
|
||||
|
||||
@@ -65,32 +65,8 @@ public:
|
||||
const Utf8String &projectPartId) {
|
||||
return !documents.hasDocument(filePath, projectPartId);
|
||||
};
|
||||
const auto jobRequestCreator = [this](const Document &document,
|
||||
JobRequest::Type type,
|
||||
PreferredTranslationUnit preferredTranslationUnit) {
|
||||
return createJobRequest(document, type, preferredTranslationUnit);
|
||||
};
|
||||
initializer.reset(new ClangBackEnd::SupportiveTranslationUnitInitializer{document, jobs});
|
||||
initializer->setIsDocumentClosedChecker(isDocumentClosed);
|
||||
initializer->setJobRequestCreator(jobRequestCreator);
|
||||
}
|
||||
|
||||
JobRequest createJobRequest(const Document &document,
|
||||
JobRequest::Type type,
|
||||
PreferredTranslationUnit preferredTranslationUnit) const
|
||||
{
|
||||
JobRequest jobRequest;
|
||||
jobRequest.type = type;
|
||||
jobRequest.requirements = JobRequest::requirementsForType(type);
|
||||
jobRequest.filePath = document.filePath();
|
||||
jobRequest.projectPartId = document.projectPartId();
|
||||
jobRequest.unsavedFilesChangeTimePoint = unsavedFiles.lastChangeTimePoint();
|
||||
jobRequest.documentRevision = document.documentRevision();
|
||||
jobRequest.preferredTranslationUnit = preferredTranslationUnit;
|
||||
const ProjectPart &projectPart = projects.project(document.projectPartId());
|
||||
jobRequest.projectChangeTimePoint = projectPart.lastChangeTimePoint();
|
||||
|
||||
return jobRequest;
|
||||
}
|
||||
|
||||
public:
|
||||
@@ -234,7 +210,7 @@ void SupportiveTranslationUnitInitializer::parse()
|
||||
|
||||
Jobs::RunningJob SupportiveTranslationUnitInitializer::createRunningJob(JobRequest::Type type) const
|
||||
{
|
||||
const JobRequest jobRequest = d.createJobRequest(document,
|
||||
const JobRequest jobRequest = jobs.createJobRequest(document,
|
||||
type,
|
||||
PreferredTranslationUnit::LastUninitialized);
|
||||
return Jobs::RunningJob{jobRequest, Utf8String(), QFuture<void>()};
|
||||
|
||||
Reference in New Issue
Block a user