From 8356d3360b37acb840431158e8b058ef0058dd46 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Wed, 30 Sep 2009 16:13:43 +0200 Subject: [PATCH] Delay the parsing of the document. --- src/libs/cplusplus/CppDocument.cpp | 4 +++- src/plugins/cpptools/cppsemanticsearch.cpp | 1 + src/plugins/cpptools/cpptoolseditorsupport.cpp | 2 ++ src/shared/cplusplus/TranslationUnit.cpp | 2 ++ 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libs/cplusplus/CppDocument.cpp b/src/libs/cplusplus/CppDocument.cpp index 675cf6edf91..4d86c52d742 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 808f060b58d..554290e4785 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 09ab7f15f07..12148820258 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 053f76f2af1..b661bf26a04 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); -- GitLab