summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/pp-engine.cpp
diff options
context:
space:
mode:
authorLeandro Melo <leandro.melo@nokia.com>2012-06-12 14:51:48 +0200
committerhjk <qthjk@ovi.com>2012-06-12 18:10:56 +0200
commit2af60cb1bf3382d846f6c599002d5759de80ab56 (patch)
tree79c096e4103fcb8d679f834e3bd7ba11298b8b77 /src/libs/cplusplus/pp-engine.cpp
parentf9007eefc73e98bc01eae5c05273493c6ed1b53d (diff)
downloadqt-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.cpp16
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,