summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorThomas Marshall <[email protected]>2024-10-08 17:30:51 +0100
committerNobuyoshi Nakada <[email protected]>2024-10-10 12:53:11 +0900
commit5792bd7149a30f7f43a739199d84603cc579f4e5 (patch)
tree1f45a917849c1b21a7b6c8b739f8feeddb0fe699 /test
parenta985695b9e7f58552cfa6b8700c4dabc137e41e8 (diff)
Emit warning for other method redefinition types
This commit ensures warnings about `object_id` and `__send__` method redefinitions are emitted for other method types such as aliases, procs, and attr readers—anything except C functions.
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_object.rb31
1 files changed, 23 insertions, 8 deletions
diff --git a/test/ruby/test_object.rb b/test/ruby/test_object.rb
index 37c09596a2..3afad0ef43 100644
--- a/test/ruby/test_object.rb
+++ b/test/ruby/test_object.rb
@@ -480,15 +480,30 @@ class TestObject < Test::Unit::TestCase
end
def test_redefine_method_which_may_case_serious_problem
- assert_in_out_err([], <<-INPUT, [], %r"warning: redefining 'object_id' may cause serious problems$")
- $VERBOSE = false
- def (Object.new).object_id; end
- INPUT
+ %w(object_id __send__).each do |m|
+ assert_in_out_err([], <<-INPUT, [], %r"warning: redefining '#{m}' may cause serious problems$")
+ $VERBOSE = false
+ def (Object.new).#{m}; end
+ INPUT
- assert_in_out_err([], <<-INPUT, [], %r"warning: redefining '__send__' may cause serious problems$")
- $VERBOSE = false
- def (Object.new).__send__; end
- INPUT
+ assert_in_out_err([], <<-INPUT, [], %r"warning: redefining '#{m}' may cause serious problems$")
+ $VERBOSE = false
+ Class.new.define_method(:#{m}) {}
+ INPUT
+
+ assert_in_out_err([], <<-INPUT, [], %r"warning: redefining '#{m}' may cause serious problems$")
+ $VERBOSE = false
+ Class.new.attr_reader(:#{m})
+ INPUT
+
+ assert_in_out_err([], <<-INPUT, [], %r"warning: redefining '#{m}' may cause serious problems$")
+ $VERBOSE = false
+ Class.new do
+ def foo; end
+ alias #{m} foo
+ end
+ INPUT
+ end
bug10421 = '[ruby-dev:48691] [Bug #10421]'
assert_in_out_err([], <<-INPUT, ["1"], [], bug10421)