diff options
-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; |