aboutsummaryrefslogtreecommitdiffstats
path: root/overloaddata.cpp
diff options
context:
space:
mode:
authorHugo Lima <hugo.lima@openbossa.org>2010-02-04 18:26:09 -0200
committerHugo Lima <hugo.lima@openbossa.org>2010-02-04 18:26:09 -0200
commita761b0b0e439811fb2ce8b9a64b249f50cad02a5 (patch)
tree04f6bb5b2b7ed59c865c44fdaab5cb4c5fe0eaa0 /overloaddata.cpp
parent22f1f61fec7cff3721c895b3d3071943405c57fa (diff)
Fixed OverloadData::invalidArgumentLengths(), so it take care of removed arguments.
Reviewed by Marcelo Lira <marcelo.lira@openbossa.org>
Diffstat (limited to 'overloaddata.cpp')
-rw-r--r--overloaddata.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/overloaddata.cpp b/overloaddata.cpp
index c658d0daa..8b18b3456 100644
--- a/overloaddata.cpp
+++ b/overloaddata.cpp
@@ -394,12 +394,19 @@ const AbstractMetaFunction* OverloadData::getFunctionWithDefaultValue() const
QList<int> OverloadData::invalidArgumentLengths() const
{
QSet<int> validArgLengths;
+
foreach (const AbstractMetaFunction* func, m_headOverloadData->m_overloads) {
- validArgLengths << func->arguments().size();
- foreach (const AbstractMetaArgument* arg, func->arguments()) {
- if (!arg->defaultValueExpression().isEmpty())
- validArgLengths << arg->argumentIndex();
+ const AbstractMetaArgumentList args = func->arguments();
+ int offset = 0;
+ for (int i = 0; i < args.size(); ++i) {
+ if (func->argumentRemoved(i+1)) {
+ offset++;
+ } else {
+ if (!args[i]->defaultValueExpression().isEmpty())
+ validArgLengths << i-offset;
+ }
}
+ validArgLengths << args.size() - offset;
}
QList<int> invalidArgLengths;