Commit 605acda9 authored by Christian Kamm's avatar Christian Kamm

C++: Expand object-like macros in fast preprocessing mode again.

Task-number: QTCREATORBUG-7512
Change-Id: I59898a0449f1f6997963e0f31c47293358a773f6
Reviewed-by: default avatarLeandro Melo <leandro.melo@nokia.com>
parent e0e430e1
......@@ -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)) {
......
......@@ -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<QVector<PPToken> > allArgTks;
bool hasArgs = collectActualArguments(tk, &allArgTks);
......
......@@ -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;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment