summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/pp-engine.cpp
diff options
context:
space:
mode:
authorLeandro Melo <leandro.melo@nokia.com>2012-05-29 15:27:56 +0200
committerhjk <qthjk@ovi.com>2012-06-05 15:05:19 +0200
commitd90264d6c2a7f9e53863de98145774727ea64e58 (patch)
tree607fac2bf81c2743018fdf31704cc8402220fe41 /src/libs/cplusplus/pp-engine.cpp
parent809a4ed91adc7018dedb09042977ddae0d97e32a (diff)
downloadqt-creator-d90264d6c2a7f9e53863de98145774727ea64e58.tar.gz
C++: Also expand first token after macro define
It was previously beeing skipped. Change-Id: Iadd9b03acbcf0ee0fb4db537b8597661cb93af3f Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'src/libs/cplusplus/pp-engine.cpp')
-rw-r--r--src/libs/cplusplus/pp-engine.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp
index f6010994d8..b82f9a2731 100644
--- a/src/libs/cplusplus/pp-engine.cpp
+++ b/src/libs/cplusplus/pp-engine.cpp
@@ -1257,16 +1257,22 @@ void Preprocessor::handleDefineDirective(PPToken *tk)
QVector<PPToken> bodyTokens;
PPToken firstBodyToken = *tk;
while (isValidToken(*tk)) {
- tk->f.generated = true;
- bodyTokens.push_back(*tk);
- lex(tk);
- if (eagerExpansion)
+ if (eagerExpansion) {
+ PPToken idTk = *tk;
while (tk->is(T_IDENTIFIER)
&& (!tk->newline() || tk->joined())
&& !isQtReservedWord(tk->asByteArrayRef())
&& handleIdentifier(tk)) {
lex(tk);
+ if (tk->asByteArrayRef() == macroName) {
+ *tk = idTk;
+ break;
+ }
}
+ }
+ tk->f.generated = true;
+ bodyTokens.push_back(*tk);
+ lex(tk);
}
if (isQtReservedWord(ByteArrayRef(&macroName))) {