diff options
author | Paul Olav Tvete <paul.tvete@nokia.com> | 2010-08-04 12:12:57 (GMT) |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@nokia.com> | 2010-08-04 12:12:57 (GMT) |
commit | babf1ff43584b454ac24728fbf93bf291b9f36d1 (patch) | |
tree | c1d7567183d4a124fd4417a23e558d4fcef847ad /src/tools/moc/moc.cpp | |
parent | 05e8e8056824dfa56830e12a6a50ec39018df6fc (diff) | |
parent | a6633a9cf1bb2083d0ce41f4667b3f9349a39865 (diff) | |
download | Qt-babf1ff43584b454ac24728fbf93bf291b9f36d1.zip Qt-babf1ff43584b454ac24728fbf93bf291b9f36d1.tar.gz Qt-babf1ff43584b454ac24728fbf93bf291b9f36d1.tar.bz2 |
Merge remote branch 'qt/master' into lighthouse-master
Conflicts:
configure
Diffstat (limited to 'src/tools/moc/moc.cpp')
-rw-r--r-- | src/tools/moc/moc.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp index 10a80f3..84d1567 100644 --- a/src/tools/moc/moc.cpp +++ b/src/tools/moc/moc.cpp @@ -1208,6 +1208,12 @@ bool Moc::until(Token target) { default: break; } } + + //when searching commas within the default argument, we should take care of template depth (anglecount) + // unfortunatelly, we do not have enough semantic information to know if '<' is the operator< or + // the begining of a template type. so we just use heuristics. + int possible = -1; + while (index < symbols.size()) { Token t = symbols.at(index++).token; switch (t) { @@ -1226,8 +1232,16 @@ bool Moc::until(Token target) { && braceCount <= 0 && brackCount <= 0 && parenCount <= 0 - && (target != RANGLE || angleCount <= 0)) + && (target != RANGLE || angleCount <= 0)) { + if (target != COMMA || angleCount <= 0) + return true; + possible = index; + } + + if (target == COMMA && t == EQ && possible != -1) { + index = possible; return true; + } if (braceCount < 0 || brackCount < 0 || parenCount < 0 || (target == RANGLE && angleCount < 0)) { @@ -1235,6 +1249,12 @@ bool Moc::until(Token target) { break; } } + + if(target == COMMA && angleCount != 0 && possible != -1) { + index = possible; + return true; + } + return false; } |