diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-08-23 15:01:13 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-08-23 15:01:13 +0000 |
commit | de6c650f442ead03b7b4485b07f719a35e67524b (patch) | |
tree | a830a9502712da8b5cbcaff47a2d5faff49aea4f /eval.c | |
parent | cb8f50c4b521aef13bf9b989a3add94b0ccd9cce (diff) |
* eval.c (method_call): check receiver is defined.
* eval.c (umethod_call): removed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2739 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 17 |
1 files changed, 4 insertions, 13 deletions
@@ -6914,6 +6914,9 @@ method_call(argc, argv, method) volatile int safe = ruby_safe_level; Data_Get_Struct(method, struct METHOD, data); + if (data->recv == Qundef) { + rb_raise(rb_eTypeError, "you cannot call unbound method; bind first"); + } PUSH_ITER(rb_block_given_p()?ITER_PRE:ITER_NOT); PUSH_TAG(PROT_NONE); if (OBJ_TAINTED(method) && ruby_safe_level < 4) { @@ -6930,16 +6933,6 @@ method_call(argc, argv, method) } static VALUE -umethod_call(argc, argv, method) - int argc; - VALUE *argv; - VALUE method; -{ - rb_raise(rb_eTypeError, "you cannot call unbound method; bind first"); - return Qnil; /* not reached */ -} - -static VALUE umethod_bind(method, recv) VALUE method, recv; { @@ -7078,7 +7071,7 @@ static VALUE umcall(args, method) VALUE args, method; { - return umethod_call(0, 0, method); + return method_call(0, 0, method); } VALUE @@ -7212,8 +7205,6 @@ Init_Proc() rb_define_method(rb_mKernel, "method", rb_obj_method, 1); rb_cUnboundMethod = rb_define_class("UnboundMethod", rb_cMethod); - rb_define_method(rb_cUnboundMethod, "call", umethod_call, -1); - rb_define_method(rb_cUnboundMethod, "[]", umethod_call, -1); rb_define_method(rb_cUnboundMethod, "to_proc", umethod_proc, 0); rb_define_method(rb_cUnboundMethod, "bind", umethod_bind, 1); rb_define_method(rb_cUnboundMethod, "unbind", umethod_unbind, 0); |