From: matthew@... Date: 2017-05-19T00:25:12+00:00 Subject: [ruby-core:81231] [Ruby trunk Bug#13574] Method redefinition warning Issue #13574 has been updated by matthewd (Matthew Draper). As there's no other way to silence the redefinition warning (apart from removing the method first, which isn't atomic), the fact aliases silence it is very useful. As a special case, aliasing it back to itself is particularly helpful for this purpose: it avoids polluting the method table with extra names, and is a clear indication we're not actually trying to give the method another name. I don't know whether it was originally intended to work this way, but I think it is useful enough to keep. I also think a warning is unnecessary because it's not a likely error for a developer to make: there is no similar code that would make more sense. ---------------------------------------- Bug #13574: Method redefinition warning https://bugs.ruby-lang.org/issues/13574#change-64885 * Author: tenderlovemaking (Aaron Patterson) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.0dev (2017-03-22 gc-compact 58059) [x86_64-darwin16] * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- Hi, If I redefine a method like this, I get a warning: ~~~ruby class Foo def bar end end class Foo def bar end end ~~~ If I alias the method to a different name, I don't get a warning: ~~~ruby class Foo def bar end end class Foo alias :foo :bar def bar end end ~~~ I think this is expected. However, if I alias the method to itself, I don't get a warning: ~~~ruby class Foo def bar end end class Foo alias :bar :bar def bar end end ~~~ I think this case should cause a warning. ---Files-------------------------------- warn-on-same-name-alias.diff (425 Bytes) -- https://bugs.ruby-lang.org/ Unsubscribe: