// R(1, *) public override object InvokeSplat(BlockParam /*!*/ param, object self, object arg1, object splattee) { var list = splattee as List <object>; if (list == null) { if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(2); } arg1 = RubyOps.MakeArray2(arg1, splattee); } else if (list.Count > 0) { var array = RubyOps.MakeArray1(arg1); array.AddRange(list); arg1 = array; if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(array.Count); } } return(_block(param, self, arg1)); }
// R(0, *) public override object InvokeSplat(BlockParam /*!*/ param, object self, IList /*!*/ splattee) { object item; switch (splattee.Count) { case 0: if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(splattee.Count); } item = null; break; case 1: item = splattee[0]; break; default: if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(splattee.Count); } item = new RubyArray(splattee); break; } return(_block(param, self, item)); }
// R(0, *) public override object InvokeSplat(BlockParam /*!*/ param, object self, object splattee) { var list = splattee as List <object>; if (list != null) { switch (list.Count) { case 0: if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(list.Count); } splattee = null; break; case 1: splattee = list[0]; break; default: if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(list.Count); } splattee = new RubyArray(list); break; } } return(_block(param, self, splattee)); }
// R(4, -) public override object Invoke(BlockParam /*!*/ param, object self, object arg1, object arg2, object arg3, object arg4) { if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(4); } return(_block(param, self, RubyOps.MakeArray4(arg1, arg2, arg3, arg4))); }
// R(0, -) public override object Invoke(BlockParam /*!*/ param, object self) { if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(0); } return(_block(param, self, null)); }
// R(N, -) public override object Invoke(BlockParam /*!*/ param, object self, object[] /*!*/ args) { Debug.Assert(args.Length > MaxBlockArity); if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(args.Length); } return(_block(param, self, RubyOps.MakeArrayN(args))); }
private object InvokeSplatInternal(BlockParam /*!*/ param, object self, RubyArray /*!*/ array, object splattee) { Debug.Assert(array.Count >= 2); RubyOps.SplatAppend(array, splattee); if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(array.Count); } return(_block(param, self, array)); }
// R(1, *) public override object InvokeSplat(BlockParam /*!*/ param, object self, object arg1, IList /*!*/ splattee) { if (splattee.Count > 0) { var array = new RubyArray(1 + splattee.Count); array.Add(arg1); array.AddRange(splattee); arg1 = array; if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(array.Count); } } return(_block(param, self, arg1)); }
// R(N, *, =) public override object InvokeSplatRhs(BlockParam /*!*/ param, object self, object[] /*!*/ args, object splattee, object rhs) { var array = new RubyArray(args); RubyOps.SplatAppend(array, splattee); array.Add(rhs); if (array.Count == 1) { return(_block(param, self, rhs)); } Debug.Assert(array.Count >= 2); if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(array.Count); } return(_block(param, self, array)); }
// R(N, *, =) public override object InvokeSplatRhs(BlockParam/*!*/ param, object self, object[]/*!*/ args, object splattee, object rhs) { var array = new RubyArray(args); RubyOps.SplatAppend(array, splattee); array.Add(rhs); if (array.Count == 1) { return _block(param, self, rhs); } Debug.Assert(array.Count >= 2); if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(array.Count); } return _block(param, self, array); }
private object InvokeSplatInternal(BlockParam/*!*/ param, object self, RubyArray/*!*/ array, object splattee) { Debug.Assert(array.Count >= 2); RubyOps.SplatAppend(array, splattee); if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(array.Count); } return _block(param, self, array); }
// R(1, *) public override object InvokeSplat(BlockParam/*!*/ param, object self, object arg1, object splattee) { var list = splattee as IList; if (list == null) { if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(2); } arg1 = RubyOps.MakeArray2(arg1, splattee); } else if (list.Count > 0) { var array = RubyOps.MakeArray1(arg1); array.AddRange(list); arg1 = array; if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(array.Count); } } return _block(param, self, arg1); }
// R(0, *) public override object InvokeSplat(BlockParam/*!*/ param, object self, object splattee) { var list = splattee as IList; if (list != null) { switch (list.Count) { case 0: if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(list.Count); } splattee = null; break; case 1: splattee = list[0]; break; default: if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(list.Count); } splattee = new RubyArray(list); break; } } return _block(param, self, splattee); }
// R(N, -) public override object Invoke(BlockParam/*!*/ param, object self, object[]/*!*/ args) { Debug.Assert(args.Length > MaxBlockArity); if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(args.Length); } return _block(param, self, RubyOps.MakeArrayN(args)); }
// R(4, -) public override object Invoke(BlockParam/*!*/ param, object self, object arg1, object arg2, object arg3, object arg4) { if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(4); } return _block(param, self, RubyOps.MakeArray4(arg1, arg2, arg3, arg4)); }
// R(0, -) public override object Invoke(BlockParam/*!*/ param, object self) { if (!HasSingleCompoundParameter) { param.MultipleValuesForBlockParameterWarning(0); } return _block(param, self, null); }