From de6c650f442ead03b7b4485b07f719a35e67524b Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 23 Aug 2002 15:01:13 +0000 Subject: * 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 --- eval.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index dc88795fc5..54b6ee0d04 100644 --- a/eval.c +++ b/eval.c @@ -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) { @@ -6929,16 +6932,6 @@ method_call(argc, argv, method) return result; } -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); -- cgit v1.2.3