From 6a9ae7e25f6841cfd56be5560ecde9de52378526 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Wed, 16 Jul 2014 11:25:15 +0200 Subject: CppTools: Auto-include pre-compiled headers So far the pre-compiled headers were processed (thus defines from those headers were visible), but the actual includes for the documents were not added, which is necessary for lookup/completion. Note that this will be only done if pre-compiled headers are not ignored (Options > C++ > Code Model > [] Ignore pre-compiled headers). Change-Id: I54a8e6b00597af164d958e3e9f2a1075ea187788 Reviewed-by: Erik Verbruggen --- src/plugins/cpptools/cppsourceprocessor.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/plugins/cpptools/cppsourceprocessor.cpp') diff --git a/src/plugins/cpptools/cppsourceprocessor.cpp b/src/plugins/cpptools/cppsourceprocessor.cpp index 47986331b3..33b2a0896e 100644 --- a/src/plugins/cpptools/cppsourceprocessor.cpp +++ b/src/plugins/cpptools/cppsourceprocessor.cpp @@ -148,9 +148,10 @@ void CppSourceProcessor::addFrameworkPath(const ProjectPart::HeaderPath &framewo void CppSourceProcessor::setTodo(const QStringList &files) { m_todo = QSet::fromList(files); } -void CppSourceProcessor::run(const QString &fileName) +void CppSourceProcessor::run(const QString &fileName, + const QStringList &initialIncludes) { - sourceNeeded(0, fileName, IncludeGlobal); + sourceNeeded(0, fileName, IncludeGlobal, initialIncludes); } void CppSourceProcessor::removeFromCache(const QString &fileName) @@ -377,7 +378,8 @@ void CppSourceProcessor::stopSkippingBlocks(unsigned utf16charsOffset) m_currentDoc->stopSkippingBlocks(utf16charsOffset); } -void CppSourceProcessor::sourceNeeded(unsigned line, const QString &fileName, IncludeType type) +void CppSourceProcessor::sourceNeeded(unsigned line, const QString &fileName, IncludeType type, + const QStringList &initialIncludes) { if (fileName.isEmpty()) return; @@ -417,6 +419,11 @@ void CppSourceProcessor::sourceNeeded(unsigned line, const QString &fileName, In Document::Ptr document = Document::create(absoluteFileName); document->setRevision(m_revision); document->setEditorRevision(editorRevision); + foreach (const QString &include, initialIncludes) { + m_included.insert(include); + Document::Include inc(include, include, 0, IncludeLocal); + document->addIncludeFile(inc); + } const QFileInfo info(absoluteFileName); if (info.exists()) document->setLastModified(info.lastModified()); -- cgit v1.2.1