summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-12-14 02:55:02 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-12-14 02:55:02 +0000
commitd515deb4f36fb5a320ba9ae00709146cff664f84 (patch)
tree976dc28ba2026a854c1dff29ea0aff1d7b70f417 /eval.c
parentd4ad42a6f1fba9899b5e4cc2a286d959d1584a9d (diff)
merge revision(s) 25890:
* eval.c (rb_method_missing): adjusted format and argument number. * eval.c (rb_call): fixed for super in cached method. [ruby-dev:39757] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@26088 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/eval.c b/eval.c
index c11b96fe37..ab7dbd0b4f 100644
--- a/eval.c
+++ b/eval.c
@@ -5699,7 +5699,7 @@ rb_method_missing(argc, argv, obj)
exc = rb_eNameError;
}
else if (last_call_status & CSTAT_SUPER) {
- format = "super: no superclass method `%s'";
+ format = "super: no superclass method `%s' for %s";
}
if (!format) {
format = "undefined method `%s' for %s";
@@ -6145,13 +6145,14 @@ rb_call(klass, recv, mid, argc, argv, scope, self)
ent = cache + EXPR1(klass, mid);
if (ent->mid == mid && ent->klass == klass) {
if (!ent->method)
- return method_missing(recv, mid, argc, argv, scope==2?CSTAT_VCALL:0);
+ goto nomethod;
klass = ent->origin;
id = ent->mid0;
noex = ent->noex;
body = ent->method;
}
else if ((body = rb_get_method_body(&klass, &id, &noex)) == 0) {
+ nomethod:
if (scope == 3) {
return method_missing(recv, mid, argc, argv, CSTAT_SUPER);
}