summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/FastPreprocessor.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2015-01-13 14:12:17 +0100
committerNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2015-01-14 12:07:03 +0100
commitdbeae8cb4378998c691d4ae37b94536428e75a13 (patch)
tree78d77e3e0e7196100c42bb472a87f3ade5b2b1e7 /src/libs/cplusplus/FastPreprocessor.cpp
parent8f988a0a21df96322dc09abf6825c16a8d71c301 (diff)
downloadqt-creator-dbeae8cb4378998c691d4ae37b94536428e75a13.tar.gz
C++: FastPreprocessor: Add only includes if there are none
For the case that the document is based upon another one (see Snapshot::preprocessedDocument(), the only client of FastPreprocessor) the FastPreprocessor added extra unresolved includes. Change-Id: I0a7719fa8806af59f87a48bc6914270efd653e84 Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
Diffstat (limited to 'src/libs/cplusplus/FastPreprocessor.cpp')
-rw-r--r--src/libs/cplusplus/FastPreprocessor.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/libs/cplusplus/FastPreprocessor.cpp b/src/libs/cplusplus/FastPreprocessor.cpp
index e6ef1d37f7..e6ece53074 100644
--- a/src/libs/cplusplus/FastPreprocessor.cpp
+++ b/src/libs/cplusplus/FastPreprocessor.cpp
@@ -40,11 +40,14 @@ using namespace CPlusPlus;
FastPreprocessor::FastPreprocessor(const Snapshot &snapshot)
: _snapshot(snapshot)
, _preproc(this, &_env)
+ , _addIncludesToCurrentDoc(false)
{ }
QByteArray FastPreprocessor::run(Document::Ptr newDoc, const QByteArray &source)
{
std::swap(newDoc, _currentDoc);
+ _addIncludesToCurrentDoc = _currentDoc->resolvedIncludes().isEmpty()
+ && _currentDoc->unresolvedIncludes().isEmpty();
const QString fileName = _currentDoc->fileName();
_preproc.setExpandFunctionlikeMacros(false);
_preproc.setKeepComments(true);
@@ -72,9 +75,11 @@ void FastPreprocessor::sourceNeeded(unsigned line, const QString &fileName, Incl
{
Q_UNUSED(initialIncludes)
Q_ASSERT(_currentDoc);
- // CHECKME: Is that cleanName needed?
- QString cleanName = QDir::cleanPath(fileName);
- _currentDoc->addIncludeFile(Document::Include(fileName, cleanName, line, mode));
+ if (_addIncludesToCurrentDoc) {
+ // CHECKME: Is that cleanName needed?
+ const QString cleanName = QDir::cleanPath(fileName);
+ _currentDoc->addIncludeFile(Document::Include(fileName, cleanName, line, mode));
+ }
mergeEnvironment(fileName);
}