void BuiltinEditorDocumentProcessor::onParserFinished(CPlusPlus::Document::Ptr document, CPlusPlus::Snapshot snapshot) { if (document.isNull()) return; if (document->fileName() != filePath()) return; // some other document got updated if (document->editorRevision() != revision()) return; // outdated content, wait for a new document to be parsed if (debug) { qDebug() << "BuiltinEditorDocumentProcessor: document parsed" << document->fileName() << document->editorRevision(); } // Emit ifdefed out blocks const auto ifdefoutBlocks = toTextEditorBlocks(document->skippedBlocks()); emit ifdefedOutBlocksUpdated(revision(), ifdefoutBlocks); // Emit code warnings auto codeWarnings = toTextEditorSelections(document->diagnosticMessages(), textDocument()); emit codeWarningsUpdated(revision(), codeWarnings); emit cppDocumentUpdated(document); m_documentSnapshot = snapshot; const auto source = createSemanticInfoSource(false); QTC_CHECK(source.snapshot.contains(document->fileName())); m_semanticInfoUpdater.updateDetached(source); }
void CppElementEvaluator::checkDiagnosticMessage(const CPlusPlus::Document::Ptr &document, unsigned line) { foreach (const Document::DiagnosticMessage &m, document->diagnosticMessages()) { if (m.line() == line) { m_diagnosis = m.text(); break; } } }