diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-09-03 01:07:52 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-09-03 01:07:52 +0000 |
commit | e26ba49bd15079b5567048ef1714c2b6d1719eee (patch) | |
tree | 1b51547b40e6ca6ad5100565a6e8f49a20954b02 | |
parent | 4a14d94418dc50b817e4e5811c822a3a07584acf (diff) |
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
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | vm_eval.c | 9 |
2 files changed, 12 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Thu Sep 3 10:07:49 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * vm_eval.c (raise_method_missing): refine error messages when a + symbol is not given. [Fix GH-1013] + Wed Sep 2 18:49:55 2015 SHIBATA Hiroshi <hsbt@ruby-lang.org> * ext/psych/*: merge psych master(8737e5b). It contains following fixes. @@ -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(); |