Added some initial support for function overloading.

This commit is contained in:
Roberto Raggi
2010-12-10 10:32:46 +01:00
parent 610023f893
commit 63138eb808
10 changed files with 195 additions and 48 deletions

View File

@@ -362,6 +362,30 @@ void Function::visitSymbol0(SymbolVisitor *visitor)
}
}
bool Function::maybeValidPrototype(unsigned actualArgumentCount) const
{
unsigned minNumberArguments = 0;
for (; minNumberArguments < this->argumentCount(); ++minNumberArguments) {
Argument *arg = this->argumentAt(minNumberArguments)->asArgument();
if (arg->hasInitializer())
break;
}
if (actualArgumentCount < minNumberArguments) {
// not enough arguments.
return false;
} else if (! this->isVariadic() && actualArgumentCount > this->argumentCount()) {
// too many arguments.
return false;
}
return true;
}
Block::Block(TranslationUnit *translationUnit, unsigned sourceLocation)
: Scope(translationUnit, sourceLocation, /*name = */ 0)
{ }