IAsyncJob::AsyncPrepareResult UpdateAnnotationsJob::prepareAsyncRun() { const JobRequest jobRequest = context().jobRequest; QTC_ASSERT(isExpectedJobRequestType(jobRequest), return AsyncPrepareResult()); QTC_ASSERT(acquireDocument(), return AsyncPrepareResult()); const TranslationUnit translationUnit = *m_translationUnit; const TranslationUnitUpdateInput updateInput = createUpdateInput(m_pinnedDocument); setRunner([translationUnit, updateInput]() { TIME_SCOPE_DURATION("UpdateAnnotationsJobRunner"); // Update UpdateAnnotationsJob::AsyncResult asyncResult; asyncResult.updateResult = translationUnit.update(updateInput); // Collect translationUnit.extractAnnotations(asyncResult.firstHeaderErrorDiagnostic, asyncResult.diagnostics, asyncResult.tokenInfos, asyncResult.skippedSourceRanges); asyncResult.unresolvedFilePaths.unite( unresolvedFilePaths({asyncResult.firstHeaderErrorDiagnostic})); asyncResult.unresolvedFilePaths.unite(unresolvedFilePaths(asyncResult.diagnostics)); return asyncResult; }); return AsyncPrepareResult{translationUnit.id()}; }
TranslationUnitUpdater Document::createUpdater() const { TranslationUnit unit = translationUnit(); const TranslationUnitUpdateInput updateInput = createUpdateInput(); TranslationUnitUpdater updater(unit.id(), unit.cxIndex(), unit.cxTranslationUnit(), updateInput); return updater; }
IAsyncJob::AsyncPrepareResult UpdateExtraDocumentAnnotationsJob::prepareAsyncRun() { const JobRequest jobRequest = context().jobRequest; QTC_ASSERT(acquireDocument(), return AsyncPrepareResult()); const TranslationUnit translationUnit = *m_translationUnit; setRunner([translationUnit]() { TIME_SCOPE_DURATION("UpdateExtraDocumentAnnotationsJobRunner"); return translationUnit.fullTokenInfos().toTokenInfoContainers(); }); return AsyncPrepareResult{translationUnit.id()}; }
IAsyncJob::AsyncPrepareResult UpdateDocumentAnnotationsJob::prepareAsyncRun() { const JobRequest jobRequest = context().jobRequest; QTC_ASSERT(jobRequest.type == JobRequest::Type::UpdateDocumentAnnotations, return AsyncPrepareResult()); try { m_pinnedDocument = context().documentForJobRequest(); m_pinnedFileContainer = m_pinnedDocument.fileContainer(); const TranslationUnit translationUnit = m_pinnedDocument.translationUnit(jobRequest.preferredTranslationUnit); const TranslationUnitUpdateInput updateInput = m_pinnedDocument.createUpdateInput(); setRunner([translationUnit, updateInput]() { return runAsyncHelper(translationUnit, updateInput); }); return AsyncPrepareResult{translationUnit.id()}; } catch (const std::exception &exception) { qWarning() << "Error in UpdateDocumentAnnotationsJob::prepareAsyncRun:" << exception.what(); return AsyncPrepareResult(); } }