summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/pp-engine.cpp
diff options
context:
space:
mode:
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))) {