summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm.c')
-rw-r--r--src/vm.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/vm.c b/src/vm.c
index 1f3b05df2..15a3926e3 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1074,9 +1074,14 @@ RETRY_TRY_BLOCK:
m = mrb_method_search_vm(mrb, &c, mid);
if (!m) {
mrb_value sym = mrb_symbol_value(mid);
+ mrb_sym missing = mrb_intern_lit(mrb, "method_missing");
- mid = mrb_intern_lit(mrb, "method_missing");
- m = mrb_method_search_vm(mrb, &c, mid);
+ m = mrb_method_search_vm(mrb, &c, missing);
+ if (!m) {
+ mrb_no_method_error(mrb, mid, n, regs+a+1,
+ "undefined method '%S' for %S", mrb_sym2str(mrb, mid), recv);
+ }
+ mid = missing;
if (n == CALL_MAXARGS) {
mrb_ary_unshift(mrb, regs[a+1], sym);
}