aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--vm_eval.c9
2 files changed, 12 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 874b7ea8ee..223714e1f5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
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();