aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2009-11-19 10:13:25 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2009-11-19 10:13:25 -0300
commit7909835691c3589364169c3c8b8e06263490cb07 (patch)
treebeb45c120090486a70e3e9f76ee1eb521970b864
parent403d2ff8d2c073d673a983b87c9813705ca39496 (diff)
Fixed OverloadData::isFinalOccurrence method to consider removed arguments.
-rw-r--r--overloaddata.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/overloaddata.cpp b/overloaddata.cpp
index 70059245e..860e9fa9a 100644
--- a/overloaddata.cpp
+++ b/overloaddata.cpp
@@ -182,7 +182,7 @@ OverloadData* OverloadData::addOverloadData(const AbstractMetaFunction* func,
const AbstractMetaFunction* OverloadData::referenceFunction() const
{
- return m_overloads.at(0);
+ return m_overloads.first();
}
const AbstractMetaArgument* OverloadData::argument(const AbstractMetaFunction* func) const
@@ -261,7 +261,12 @@ bool OverloadData::isFinalOccurrence(const AbstractMetaFunction* func) const
bool OverloadData::hasDefaultValue() const
{
foreach (const AbstractMetaFunction* func, m_overloads) {
- if (!func->arguments()[m_argPos]->defaultValueExpression().isEmpty())
+ int removedArgs = 0;
+ for (int i = 0; i <= m_argPos + removedArgs; i++) {
+ if (func->argumentRemoved(i + 1))
+ removedArgs++;
+ }
+ if (!func->arguments()[m_argPos + removedArgs]->defaultValueExpression().isEmpty())
return true;
}
return false;