/**
* Check a super() or super(a,b,c) call.
*/
public void checkExplicitSuperCall(IASNode iNode, Vector<? extends Object> args)
{
LanguageIdentifierNode super_node = (LanguageIdentifierNode)((IFunctionCallNode)iNode).getNameNode();
// Check that this super() call is in a constructor.
if ( !SemanticUtils.isInConstructor(iNode) )
{
addProblem(new InvalidSuperStatementProblem(iNode));
}
else
{
// Check that this super call does not follow a construct
// that invalidates it.
if ( this.superState != SuperState.Initial )
addProblem(new ExtraneousSuperStatementProblem(iNode));
else
this.superState = SuperState.Armed;
}
// Check parameters if possible.
ClassDefinition super_def = (ClassDefinition) super_node.resolveType(project);
if (super_def != null)
{
IFunctionDefinition ctor = super_def.getConstructor();