diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-12-14 02:55:02 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-12-14 02:55:02 +0000 |
commit | d515deb4f36fb5a320ba9ae00709146cff664f84 (patch) | |
tree | 976dc28ba2026a854c1dff29ea0aff1d7b70f417 /eval.c | |
parent | d4ad42a6f1fba9899b5e4cc2a286d959d1584a9d (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.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -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); } |