diff options
author | Leandro Melo <leandro.melo@nokia.com> | 2012-06-12 14:51:48 +0200 |
---|---|---|
committer | hjk <qthjk@ovi.com> | 2012-06-12 18:10:56 +0200 |
commit | 2af60cb1bf3382d846f6c599002d5759de80ab56 (patch) | |
tree | 79c096e4103fcb8d679f834e3bd7ba11298b8b77 /src/libs/cplusplus/pp-engine.cpp | |
parent | f9007eefc73e98bc01eae5c05273493c6ed1b53d (diff) | |
download | qt-creator-2af60cb1bf3382d846f6c599002d5759de80ab56.tar.gz |
C++: Track macro argument reference even when empty
Change-Id: I6d226b4e42f94ebee41d012050c5109895f0c432
Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'src/libs/cplusplus/pp-engine.cpp')
-rw-r--r-- | src/libs/cplusplus/pp-engine.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp index b82f9a2731..718f3dd0df 100644 --- a/src/libs/cplusplus/pp-engine.cpp +++ b/src/libs/cplusplus/pp-engine.cpp @@ -801,16 +801,20 @@ bool Preprocessor::handleIdentifier(PPToken *tk) if (m_client && !idTk.generated()) { // Bundle each token sequence into a macro argument "reference" for notification. + // Even empty ones, which are not necessarily important on its own, but for the matter + // of couting their number - such as in foo(,) QVector<MacroArgumentReference> argRefs; for (int i = 0; i < allArgTks.size(); ++i) { const QVector<PPToken> &argTks = allArgTks.at(i); - if (argTks.isEmpty()) - continue; + if (argTks.isEmpty()) { + argRefs.push_back(MacroArgumentReference()); + } else { - argRefs.push_back( - MacroArgumentReference( - m_state.m_offsetRef + argTks.first().begin(), - argTks.last().begin() + argTks.last().length() - argTks.first().begin())); + argRefs.push_back(MacroArgumentReference( + m_state.m_offsetRef + argTks.first().begin(), + argTks.last().begin() + argTks.last().length() + - argTks.first().begin())); + } } m_client->startExpandingMacro(m_state.m_offsetRef + idTk.offset, *macro, macroNameRef, |