diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-02-05 18:50:35 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-02-05 18:50:35 +0000 |
commit | aa381d723c8f400363141d0b781f3d34375aa2bb (patch) | |
tree | ec7c2bdf59d69e9f2b87b1c45e51977b0ed792e2 /proc.c | |
parent | 949852abef9c9799f7558783c15daefe9c7ba74b (diff) | |
download | ruby-aa381d723c8f400363141d0b781f3d34375aa2bb.tar.gz ruby-aa381d723c8f400363141d0b781f3d34375aa2bb.tar.xz ruby-aa381d723c8f400363141d0b781f3d34375aa2bb.zip |
* 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
Diffstat (limited to 'proc.c')
-rw-r--r-- | proc.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -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); } |