diff --git a/src/libs/cplusplus/FastPreprocessor.cpp b/src/libs/cplusplus/FastPreprocessor.cpp index e1e0bd8c50923a318b4f18568f4f26fc7bd962bd..481e2c715a962449279ce1ebe6ee8d3d7d9e8159 100644 --- a/src/libs/cplusplus/FastPreprocessor.cpp +++ b/src/libs/cplusplus/FastPreprocessor.cpp @@ -38,10 +38,20 @@ FastPreprocessor::FastPreprocessor(const Snapshot &snapshot) QByteArray FastPreprocessor::run(QString fileName, const QString &source) { + if (Document::Ptr doc = _snapshot.value(fileName)) { + _merged.insert(fileName); + + foreach (const Document::Include &i, doc->includes()) + mergeEnvironment(i.fileName()); + } + const QByteArray preprocessed = _preproc(fileName, source); return preprocessed; } +void FastPreprocessor::sourceNeeded(QString &fileName, IncludeType, unsigned) +{ mergeEnvironment(fileName); } + void FastPreprocessor::mergeEnvironment(const QString &fileName) { if (! _merged.contains(fileName)) { diff --git a/src/libs/cplusplus/FastPreprocessor.h b/src/libs/cplusplus/FastPreprocessor.h index bbdbd535ba010ca5834c4a3494ba7b31df99a614..c7e6e2f8b1c8c2032c31174dfe3d4a44b0b73d19 100644 --- a/src/libs/cplusplus/FastPreprocessor.h +++ b/src/libs/cplusplus/FastPreprocessor.h @@ -54,8 +54,7 @@ public: QByteArray run(QString fileName, const QString &source); // CPlusPlus::Client - virtual void sourceNeeded(QString &fileName, IncludeType, unsigned) - { mergeEnvironment(fileName); } + virtual void sourceNeeded(QString &fileName, IncludeType, unsigned); virtual void macroAdded(const Macro &) {}