summaryrefslogtreecommitdiffstats
path: root/src/tools/moc/moc.cpp
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@nokia.com>2010-08-04 12:12:57 (GMT)
committerPaul Olav Tvete <paul.tvete@nokia.com>2010-08-04 12:12:57 (GMT)
commitbabf1ff43584b454ac24728fbf93bf291b9f36d1 (patch)
treec1d7567183d4a124fd4417a23e558d4fcef847ad /src/tools/moc/moc.cpp
parent05e8e8056824dfa56830e12a6a50ec39018df6fc (diff)
parenta6633a9cf1bb2083d0ce41f4667b3f9349a39865 (diff)
downloadQt-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.cpp22
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;
}