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()}; }
void Document::reparse() const { checkIfNull(); const TranslationUnitUpdateInput updateInput = createUpdateInput(); TranslationUnitUpdateResult result = translationUnit().reparse(updateInput); incorporateUpdaterResult(result); }
TranslationUnitUpdater Document::createUpdater() const { TranslationUnit unit = translationUnit(); const TranslationUnitUpdateInput updateInput = createUpdateInput(); TranslationUnitUpdater updater(unit.id(), unit.cxIndex(), unit.cxTranslationUnit(), updateInput); return updater; }