void TranslationUnit::createTranslationUnitIfNeeded() const { if (!d->translationUnit) { d->translationUnit = CXTranslationUnit(); const auto args = commandLineArguments(); if (isVerboseModeEnabled()) args.print(); CXErrorCode errorCode = clang_parseTranslationUnit2(index(), NULL, args.data(), args.count(), unsavedFiles().cxUnsavedFiles(), unsavedFiles().count(), defaultOptions(), &d->translationUnit); checkTranslationUnitErrorCode(errorCode); updateIncludeFilePaths(); updateLastProjectPartChangeTimePoint(); } }
void TranslationUnitUpdater::createTranslationUnitIfNeeded() { if (!m_cxTranslationUnit) { m_cxTranslationUnit = CXTranslationUnit(); const auto args = commandLineArguments(); if (isVerboseModeEnabled()) args.print(); UnsavedFilesShallowArguments unsaved = m_in.unsavedFiles.shallowArguments(); m_parseErrorCode = clang_parseTranslationUnit2(m_cxIndex, NULL, args.data(), args.count(), unsaved.data(), unsaved.count(), defaultParseOptions(), &m_cxTranslationUnit); if (parseWasSuccessful()) { updateIncludeFilePaths(); m_out.parseTimePoint = Clock::now(); } else { qWarning() << "Parsing" << m_in.filePath << "failed:" << errorCodeToText(m_parseErrorCode); m_out.hasParseOrReparseFailed = true; } } }
void TranslationUnit::reparseTranslationUnit() const { clang_reparseTranslationUnit(d->translationUnit, unsavedFiles().count(), unsavedFiles().cxUnsavedFiles(), clang_defaultReparseOptions(d->translationUnit)); updateIncludeFilePaths(); d->needsToBeReparsed = false; }
void TranslationUnit::createTranslationUnitIfNeeded() const { if (!d->translationUnit) { d->translationUnit = CXTranslationUnit(); CXErrorCode errorCode = clang_parseTranslationUnit2(index(), d->filePath.constData(), d->projectPart.cxArguments(), d->projectPart.argumentCount(), unsavedFiles().cxUnsavedFiles(), unsavedFiles().count(), defaultOptions(), &d->translationUnit); checkTranslationUnitErrorCode(errorCode); updateIncludeFilePaths(); updateLastProjectPartChangeTimePoint(); } }
void TranslationUnitUpdater::reparse() { UnsavedFilesShallowArguments unsaved = m_in.unsavedFiles.shallowArguments(); m_reparseErrorCode = clang_reparseTranslationUnit( m_cxTranslationUnit, unsaved.count(), unsaved.data(), clang_defaultReparseOptions(m_cxTranslationUnit)); if (reparseWasSuccessful()) { updateIncludeFilePaths(); m_out.reparseTimePoint = Clock::now(); m_out.needsToBeReparsedChangeTimePoint = m_in.needsToBeReparsedChangeTimePoint; } else { qWarning() << "Reparsing" << m_in.filePath << "failed:" << m_reparseErrorCode; m_out.hasParseOrReparseFailed = true; } }