summaryrefslogtreecommitdiff
path: root/vm_method.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-12-06 23:06:13 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-12-06 23:06:13 +0000
commit76e3af82d5e6c1a612e6b173ddb326b2e866a74e (patch)
tree1496012e199d67b99dc4ca5e0d5aec077ab14da0 /vm_method.c
parent973f84ef558b6869ecc1e017cbe48b197726c7bf (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.c10
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__) {