private void BuildDelegateConstructorCall(MetaObjectBuilder/*!*/ metaBuilder, CallArguments/*!*/ args, Type/*!*/ type) {
if (args.Signature.HasBlock) {
RubyOverloadResolver.NormalizeArguments(metaBuilder, args, 0, 0);
if (!metaBuilder.Error) {
metaBuilder.Result = Methods.CreateDelegateFromProc.OpCall(
AstUtils.Constant(type),
AstUtils.Convert(args.GetBlockExpression(), typeof(Proc))
);
}
} else {
var actualArgs = RubyOverloadResolver.NormalizeArguments(metaBuilder, args, 1, 1);
if (!metaBuilder.Error) {
var convertBinder = args.RubyContext.CreateConvertBinder(type, true);
var converted = convertBinder.Bind(actualArgs[0], DynamicMetaObject.EmptyMetaObjects);
metaBuilder.SetMetaResult(converted, args);
}
}
}