Bug #13817
Updated by nobu (Nobuyoshi Nakada) over 7 years ago
Consider the following program: ~~~ruby ~~~ #!/usr/bin/env ruby BEGIN {$VERBOSE = true} require 'test/unit' class Hash STDERR.puts method_defined?(:<<) alias << merge! STDERR.puts method_defined?(:<<) end ~~~ In older Ruby versions (1.9.3, 2.3.3), the output of this program was: ``` ** false true ``` ** In Ruby 2.4.1, the output is ``` ** false ~/work/stash/vp5/src/test/test_xx.rb:6: warning: method redefined; discarding old << true ``` ** Please note: 1. The warning occurs, even though `method_defined?` method_defined? tells us that no `<<` << method is in `Hash`. Hash. 2. The warning disappears, when we do **not** require test/unit, which suggests that the problem is caused by test/unit 3. Changing the offending line to `alias *alias :<< :merge!` :merge!* does not make any difference