From 605acda9ae751f31b68f5416077410a22555c3c0 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Mon, 6 Aug 2012 15:28:00 +0200 Subject: [PATCH] C++: Expand object-like macros in fast preprocessing mode again. Task-number: QTCREATORBUG-7512 Change-Id: I59898a0449f1f6997963e0f31c47293358a773f6 Reviewed-by: Leandro Melo --- src/libs/cplusplus/FastPreprocessor.cpp | 2 +- src/libs/cplusplus/pp-engine.cpp | 16 ++++++++-------- src/libs/cplusplus/pp-engine.h | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/libs/cplusplus/FastPreprocessor.cpp b/src/libs/cplusplus/FastPreprocessor.cpp index a0923a2feb1..5382374249b 100644 --- a/src/libs/cplusplus/FastPreprocessor.cpp +++ b/src/libs/cplusplus/FastPreprocessor.cpp @@ -42,7 +42,7 @@ FastPreprocessor::FastPreprocessor(const Snapshot &snapshot) QByteArray FastPreprocessor::run(QString fileName, const QString &source) { - _preproc.setExpandMacros(false); + _preproc.setExpandFunctionlikeMacros(false); _preproc.setKeepComments(true); if (Document::Ptr doc = _snapshot.document(fileName)) { diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp index e6ba93de810..a7e06000273 100644 --- a/src/libs/cplusplus/pp-engine.cpp +++ b/src/libs/cplusplus/pp-engine.cpp @@ -593,7 +593,7 @@ void Preprocessor::State::popTokenBuffer() Preprocessor::Preprocessor(Client *client, Environment *env) : m_client(client) , m_env(env) - , m_expandMacros(true) + , m_expandFunctionlikeMacros(true) , m_keepComments(false) { } @@ -615,14 +615,14 @@ QByteArray Preprocessor::run(const QString &fileName, return preprocessed; } -bool Preprocessor::expandMacros() const +bool Preprocessor::expandFunctionlikeMacros() const { - return m_expandMacros; + return m_expandFunctionlikeMacros; } -void Preprocessor::setExpandMacros(bool expandMacros) +void Preprocessor::setExpandFunctionlikeMacros(bool expandMacros) { - m_expandMacros = expandMacros; + m_expandFunctionlikeMacros = expandMacros; } bool Preprocessor::keepComments() const @@ -741,9 +741,6 @@ void Preprocessor::skipPreprocesorDirective(PPToken *tk) bool Preprocessor::handleIdentifier(PPToken *tk) { - if (!expandMacros()) - return false; - ScopedBoolSwap s(m_state.m_inPreprocessorDirective, true); static const QByteArray ppLine("__LINE__"); @@ -813,6 +810,9 @@ bool Preprocessor::handleIdentifier(PPToken *tk) PPToken oldMarkerTk; if (macro->isFunctionLike()) { + if (!expandFunctionlikeMacros()) + return false; + // Collect individual tokens that form the macro arguments. QVector > allArgTks; bool hasArgs = collectActualArguments(tk, &allArgTks); diff --git a/src/libs/cplusplus/pp-engine.h b/src/libs/cplusplus/pp-engine.h index 310f1cef108..fef49ac6f1b 100644 --- a/src/libs/cplusplus/pp-engine.h +++ b/src/libs/cplusplus/pp-engine.h @@ -81,8 +81,8 @@ public: QByteArray run(const QString &filename, const QString &source); QByteArray run(const QString &filename, const QByteArray &source, bool noLines = false, bool markGeneratedTokens = true); - bool expandMacros() const; - void setExpandMacros(bool expandMacros); + bool expandFunctionlikeMacros() const; + void setExpandFunctionlikeMacros(bool expandFunctionlikeMacros); bool keepComments() const; void setKeepComments(bool keepComments); @@ -197,7 +197,7 @@ private: Environment *m_env; QByteArray m_scratchBuffer; - bool m_expandMacros; + bool m_expandFunctionlikeMacros; bool m_keepComments; State m_state;