internal static object rb_yield(Proc block, Frame caller, ArgList args) { if (block == null) { throw new LocalJumpError("no block given").raise(caller); } return block.yield(caller, args); }
public override object Call1(Class last_class, object recv, Frame caller, Proc block, object val) { Array tmp; int i; tmp = new Array(); tmp.Add(val); for (i = 0; i < memo.args.Count; i++) { if (memo.args[i].Count > memo.index) tmp.Add(memo.args[i][memo.index]); else tmp.Add(null); } if (block != null) { block.yield(caller, tmp); } else { result.Add(tmp); } memo.index++; return null; }
internal static object rb_yield(Proc block, Frame caller, params object[] args) { //this test is performed in 'rb_yield_0' in c ruby. if (block == null) { throw new LocalJumpError("no block given").raise(caller); } return block.yield(caller, args); }