diff options
Diffstat (limited to 'src/libs/cplusplus/pp-engine.cpp')
-rw-r--r-- | src/libs/cplusplus/pp-engine.cpp | 14 |
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(¯oName))) { |