diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp index c5fd46c567c..028613ebad6 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp @@ -217,15 +217,22 @@ ClangEditorDocumentProcessor *ClangEditorDocumentProcessor::get(const QString &f return qobject_cast(BaseEditorDocumentProcessor::get(filePath)); } +static bool isProjectPartLoadedOrIsFallback(CppTools::ProjectPart::Ptr projectPart) +{ + return projectPart + && (projectPart->id().isEmpty() || ClangCodeModel::Utils::isProjectPartValid(projectPart)); +} + void ClangEditorDocumentProcessor::updateProjectPartAndTranslationUnitForEditor() { const CppTools::ProjectPart::Ptr projectPart = m_parser->projectPart(); - QTC_ASSERT(projectPart, return); - updateTranslationUnitForEditor(*projectPart.data()); - requestDiagnostics(*projectPart.data()); + if (isProjectPartLoadedOrIsFallback(projectPart)) { + updateTranslationUnitForEditor(*projectPart.data()); + requestDiagnostics(*projectPart.data()); - m_projectPart = projectPart; + m_projectPart = projectPart; + } } void ClangEditorDocumentProcessor::onParserFinished()