diff options
author | Hugo Lima <hugo.lima@openbossa.org> | 2010-02-04 18:26:09 -0200 |
---|---|---|
committer | Hugo Lima <hugo.lima@openbossa.org> | 2010-02-04 18:26:09 -0200 |
commit | a761b0b0e439811fb2ce8b9a64b249f50cad02a5 (patch) | |
tree | 04f6bb5b2b7ed59c865c44fdaab5cb4c5fe0eaa0 /overloaddata.cpp | |
parent | 22f1f61fec7cff3721c895b3d3071943405c57fa (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.cpp | 15 |
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; |