diff --git a/src/libs/cplusplus/CppDocument.cpp b/src/libs/cplusplus/CppDocument.cpp index 675cf6edf91a6a95ae683e2084ac0cc3be241c68..4d86c52d742c9e0d34d7570c670032fd9ce8f70f 100644 --- a/src/libs/cplusplus/CppDocument.cpp +++ b/src/libs/cplusplus/CppDocument.cpp @@ -390,6 +390,9 @@ void Document::check(CheckMode mode) { Q_ASSERT(!_globalNamespace); + if (! isParsed()) + parse(); + Semantic semantic(_control); if (mode == FastCheck) semantic.setSkipFunctionBodies(true); @@ -450,7 +453,6 @@ Document::Ptr Snapshot::documentFromSource(const QByteArray &preprocessedCode, } newDoc->setSource(preprocessedCode); - newDoc->parse(); return newDoc; } diff --git a/src/plugins/cpptools/cppsemanticsearch.cpp b/src/plugins/cpptools/cppsemanticsearch.cpp index 808f060b58d49cfffaa8f8b116f43c9e6d73cedd..554290e478589a417edb7b7af8ac6ad2603480fb 100644 --- a/src/plugins/cpptools/cppsemanticsearch.cpp +++ b/src/plugins/cpptools/cppsemanticsearch.cpp @@ -288,6 +288,7 @@ static void semanticSearch_helper(QFutureInterface<Core::Utils::FileSearchResult } Document::Ptr newDoc = snapshot.documentFromSource(source, fileName); + newDoc->parse(); if (SemanticSearch *search = factory->create(future, newDoc, snapshot)) { search->setSource(source); diff --git a/src/plugins/cpptools/cpptoolseditorsupport.cpp b/src/plugins/cpptools/cpptoolseditorsupport.cpp index 09ab7f15f07657c28a3850577014e9cf6c063d4f..121488202585832697c5aa39dce555ace2c0c457 100644 --- a/src/plugins/cpptools/cpptoolseditorsupport.cpp +++ b/src/plugins/cpptools/cpptoolseditorsupport.cpp @@ -412,6 +412,8 @@ void CppEditorSupport::checkDocumentNow() const QByteArray preprocessedCode = snapshot.preprocessedCode(plainText, fileName); if (Document::Ptr doc = snapshot.documentFromSource(preprocessedCode, fileName)) { + doc->parse(); + CheckDocument checkDocument(doc, snapshot); QList<QuickFixOperationPtr> quickFixes = checkDocument(ed->textCursor()); if (! quickFixes.isEmpty()) { diff --git a/src/shared/cplusplus/TranslationUnit.cpp b/src/shared/cplusplus/TranslationUnit.cpp index 053f76f2af1275dc5444727ee16789bdcde56310..b661bf26a0474cb8ca55b448cbafcc4f75951ca9 100644 --- a/src/shared/cplusplus/TranslationUnit.cpp +++ b/src/shared/cplusplus/TranslationUnit.cpp @@ -255,6 +255,8 @@ bool TranslationUnit::parse(ParseMode mode) if (! isTokenized()) tokenize(); + f._parsed = true; + Parser parser(this); parser.setQtMocRunEnabled(f._qtMocRunEnabled); parser.setObjCEnabled(f._objCEnabled);