diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-04-20 06:44:04 -0700 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-04-20 06:44:04 -0700 |
| commit | a70419bc4533133118fe8d6edf635b1e0e9bc084 (patch) | |
| tree | 9a7011dd94025c7f2ac44f32b3916d0082266837 /src/kernel.c | |
| parent | cc512dd8d0bd17fa6fba3dfc1b4046b4d4faf68b (diff) | |
| parent | 93b23357fe34e3a0534f92315fcb649d945d7e08 (diff) | |
| download | mruby-a70419bc4533133118fe8d6edf635b1e0e9bc084.tar.gz mruby-a70419bc4533133118fe8d6edf635b1e0e9bc084.zip | |
Merge pull request #1194 from carsonmcdonald/rtomissingimpl
Implement respond_to_missing?
Diffstat (limited to 'src/kernel.c')
| -rw-r--r-- | src/kernel.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/kernel.c b/src/kernel.c index 739f9b73f..b450d68ff 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -965,7 +965,7 @@ obj_respond_to(mrb_state *mrb, mrb_value self) mrb_value *argv; int argc; mrb_value mid, priv; - mrb_sym id; + mrb_sym id, rtm_id; mrb_bool respond_to_p; mrb_get_args(mrb, "*", &argv, &argc); @@ -976,6 +976,13 @@ obj_respond_to(mrb_state *mrb, mrb_value self) respond_to_p = basic_obj_respond_to(mrb, self, id, !mrb_test(priv)); + if(!respond_to_p) { + rtm_id = mrb_intern2(mrb, "respond_to_missing?", 19); + if(basic_obj_respond_to(mrb, self, rtm_id, !mrb_test(priv))) { + return mrb_funcall_argv(mrb, self, rtm_id, argc, argv); + } + } + return mrb_bool_value(respond_to_p); } |
