diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-12-06 23:06:13 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-12-06 23:06:13 +0000 |
commit | 76e3af82d5e6c1a612e6b173ddb326b2e866a74e (patch) | |
tree | 1496012e199d67b99dc4ca5e0d5aec077ab14da0 /vm_method.c | |
parent | 973f84ef558b6869ecc1e017cbe48b197726c7bf (diff) |
Warn redefinitions of some methods on Object
[Bug #5473] [Bug #14670] [Bug #15382]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66262 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_method.c')
-rw-r--r-- | vm_method.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/vm_method.c b/vm_method.c index 697621258c..ffe6f12166 100644 --- a/vm_method.c +++ b/vm_method.c @@ -605,8 +605,14 @@ rb_method_entry_make(VALUE klass, ID mid, VALUE defined_class, rb_method_visibil rb_clear_method_cache_by_class(klass); /* check mid */ - if (klass == rb_cObject && mid == idInitialize) { - rb_warn("redefining Object#initialize may cause infinite loop"); + if (klass == rb_cObject) { + switch (mid) { + case idInitialize: + case idRespond_to_missing: + case idMethodMissing: + case idRespond_to: + rb_warn("redefining Object#%s may cause infinite loop", rb_id2name(mid)); + } } /* check mid */ if (mid == object_id || mid == id__send__) { |