summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-06-17 07:54:54 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-06-17 07:54:54 +0900
commita528834df7a0baf16b7c505ed4c0b7b1b0347f8e (patch)
tree364d84e02dbb1fbfb46ded0acac48eb71802eca5
parent7893cbb5232f9bbefbaa650998fce49f59908512 (diff)
downloadmruby-a528834df7a0baf16b7c505ed4c0b7b1b0347f8e.tar.gz
mruby-a528834df7a0baf16b7c505ed4c0b7b1b0347f8e.zip
Revert "`instance_eval` for classes and modules should behave as `class_eval`."
This reverts commit ee3017496ba60ca418b5e54c1f8f5d8b38524a52. I misunderstood something and the new behavior was different from CRuby. The issue was reported by @dearblue, regarding #5478
-rw-r--r--src/vm.c12
1 files changed, 1 insertions, 11 deletions
diff --git a/src/vm.c b/src/vm.c
index d902716ca..1490ad232 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -792,21 +792,11 @@ mrb_value
mrb_obj_instance_eval(mrb_state *mrb, mrb_value self)
{
mrb_value a, b;
- struct RClass *c;
if (mrb_get_args(mrb, "|S&", &a, &b) == 1) {
mrb_raise(mrb, E_NOTIMP_ERROR, "instance_eval with string not implemented");
}
- switch (mrb_type(self)) {
- case MRB_TT_MODULE:
- case MRB_TT_CLASS:
- case MRB_TT_ICLASS:
- c = mrb_class_ptr(self);
- break;
- default:
- c = mrb_singleton_class_ptr(mrb, self);
- }
- return eval_under(mrb, self, b, c);
+ return eval_under(mrb, self, b, mrb_singleton_class_ptr(mrb, self));
}
MRB_API mrb_value