On 14 November 2011 12:58, Thomas Sawyer <transfire / gmail.com> wrote:
>
> Issue #5628 has been updated by Thomas Sawyer.
>
>
> @Andrew File::basename is a class method, where as Module#basename is an instance method, so there isn't really any "polymorphic confliction".

Are you so sure? ;-)
A class method is an instance method on the class, so yes
File::basename conflicts with Module#basename:

> class Module
>        def basename
>            name.split("::").last
>          end
>      end
> Enumerator::Generator.basename
=> "Generator"
> File.basename
ArgumentError: wrong number of arguments (0 for 1..2)
	from (irb):7:in `basename'
> File.basename 'file.ext'
=> "file.ext"

So one calling 'basename' on a Module can expect either a String or an
ArgumentError.
And changing File::basename to be Module#basename when no arguments
are given does not seem a good design at all.