CppTools: fix inclusion of "injected" defines.

Task-number: QTCREATORBUG-10280

Change-Id: Ibc6ffeedb97a31a35a2d1f00625506f844692e16
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
Erik Verbruggen
2013-10-01 14:48:31 +02:00
committed by Nikolai Kosjar
parent 336644a70d
commit d57b405f29
4 changed files with 19 additions and 5 deletions

View File

@@ -63,7 +63,11 @@ QByteArray FastPreprocessor::run(Document::Ptr newDoc, const QByteArray &source)
if (Document::Ptr doc = _snapshot.document(fileName)) {
_merged.insert(fileName);
mergeEnvironment(Preprocessor::configurationFileName);
for (Snapshot::const_iterator i = _snapshot.begin(), ei = _snapshot.end(); i != ei; ++i) {
if (isInjectedFile(i.key()))
mergeEnvironment(i.key());
}
foreach (const Document::Include &i, doc->resolvedIncludes())
mergeEnvironment(i.resolvedFileName());
}

View File

@@ -32,11 +32,11 @@
#include <cplusplus/CPlusPlusForwardDeclarations.h>
#include <QString>
#include <QVector>
QT_BEGIN_NAMESPACE
class QByteArray;
class QString;
QT_END_NAMESPACE
namespace CPlusPlus {
@@ -99,6 +99,11 @@ public:
virtual void stopSkippingBlocks(unsigned offset) = 0;
virtual void sourceNeeded(unsigned line, const QString &fileName, IncludeType mode) = 0;
static inline bool isInjectedFile(const QString &fileName)
{
return fileName.startsWith(QLatin1Char('<')) && fileName.endsWith(QLatin1Char('>'));
}
};
} // namespace CPlusPlus