From aa381d723c8f400363141d0b781f3d34375aa2bb Mon Sep 17 00:00:00 2001 From: ko1 Date: Mon, 5 Feb 2007 18:50:35 +0000 Subject: * proc.c: support Binding#eval. * yarvtest/test_eval.rb: add a test for above change. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@11635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- proc.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'proc.c') diff --git a/proc.c b/proc.c index f058f7251..0e37b90e4 100644 --- a/proc.c +++ b/proc.c @@ -282,10 +282,13 @@ rb_f_binding(VALUE self) */ static VALUE -bind_eval(int argc, VALUE *argv, VALUE bind) +bind_eval(int argc, VALUE *argv, VALUE bindval) { - UNSUPPORTED(bind_eval); - return Qnil; + VALUE args[4]; + + rb_scan_args(argc, argv, "12", &args[0], &args[2], &args[3]); + args[1] = bindval; + return rb_f_eval(argc+1, args, Qnil /* self will be searched in eval */); } #define PROC_TSHIFT (FL_USHIFT+1) @@ -1584,6 +1587,7 @@ Init_Binding(void) rb_undef_method(CLASS_OF(rb_cBinding), "new"); rb_define_method(rb_cBinding, "clone", binding_clone, 0); rb_define_method(rb_cBinding, "dup", binding_dup, 0); + rb_define_method(rb_cBinding, "eval", bind_eval, -1); rb_define_global_function("binding", rb_f_binding, 0); } -- cgit