From a761b0b0e439811fb2ce8b9a64b249f50cad02a5 Mon Sep 17 00:00:00 2001 From: Hugo Lima Date: Thu, 4 Feb 2010 18:26:09 -0200 Subject: Fixed OverloadData::invalidArgumentLengths(), so it take care of removed arguments. Reviewed by Marcelo Lira --- overloaddata.cpp | 15 +++++++++++---- 1 file 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 OverloadData::invalidArgumentLengths() const { QSet 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 invalidArgLengths; -- cgit v1.2.3