diff options
author | Thomas Marshall <[email protected]> | 2024-10-08 17:30:51 +0100 |
---|---|---|
committer | Nobuyoshi Nakada <[email protected]> | 2024-10-10 12:53:11 +0900 |
commit | 5792bd7149a30f7f43a739199d84603cc579f4e5 (patch) | |
tree | 1f45a917849c1b21a7b6c8b739f8feeddb0fe699 /test/ruby | |
parent | a985695b9e7f58552cfa6b8700c4dabc137e41e8 (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/ruby')
-rw-r--r-- | test/ruby/test_object.rb | 31 |
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) |