From e26ba49bd15079b5567048ef1714c2b6d1719eee Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 3 Sep 2015 01:07:52 +0000 Subject: vm_eval.c: refine messages * vm_eval.c (raise_method_missing): refine error messages when a symbol is not given. [Fix GH-1013] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51742 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vm_eval.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'vm_eval.c') diff --git a/vm_eval.c b/vm_eval.c index 00b47e5843..e12006af29 100644 --- a/vm_eval.c +++ b/vm_eval.c @@ -693,8 +693,13 @@ raise_method_missing(rb_thread_t *th, int argc, const VALUE *argv, VALUE obj, VALUE exc = rb_eNoMethodError; const char *format = 0; - if (argc == 0 || !SYMBOL_P(argv[0])) { - rb_raise(rb_eArgError, "no id given"); + if (UNLIKELY(argc == 0)) { + rb_raise(rb_eArgError, "no method names given"); + } + else if (UNLIKELY(!SYMBOL_P(argv[0]))) { + const VALUE e = rb_eArgError; /* TODO: TypeError? */ + rb_raise(e, "method name must be a Symbol but %"PRIsVALUE" is given", + rb_obj_class(argv[0])); } stack_check(); -- cgit v1.2.3