void ProcessCallableTypeInvocation(MethodInvocationExpression node, ICallableType type)
{
NamedArgumentsNotAllowed(node);
if (node.Arguments.Count == 1)
{
AssertTypeCompatibility(node.Arguments[0], type, GetExpressionType(node.Arguments[0]));
node.ParentNode.Replace(
node,
CodeBuilder.CreateCast(
type,
node.Arguments[0]));
}
else
{
IConstructor ctor = GetCorrectConstructor(node, type, node.Arguments);
if (null != ctor)
{
BindConstructorInvocation(node, ctor);
}
else
{
Error(node);
}
}
}