[ruby-core:77280] [Ruby trunk Bug#12761] Ruby 2.3.1 has a bug in `Module#alias` and `Module#alias_method`

From: shyouhei@...
Date: 2016-09-15 01:28:43 UTC
List: ruby-core #77280
Issue #12761 has been updated by Shyouhei Urabe.


IMHO this is a known bug yet to be fixed.

----------------------------------------
Bug #12761: Ruby 2.3.1 has a bug in `Module#alias` and `Module#alias_method`
https://bugs.ruby-lang.org/issues/12761#change-60514

* Author: Alexei Matyushkin
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux], ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
Consider the following code:
    
~~~ ruby
    module M
      def original ; puts __callee__ ; end
      alias_method :aliased, :original
    end
    class A
      include M
    end

    A.new.original
    #⇒ original
    A.new.aliased
    #⇒ aliased
~~~

The above code runs perfectly fine in Ruby 2.1 and returns the actual method name, as it is supposed to be done by [`Kernel#__callee__`](https://ruby-doc.org/core-2.3.1/Kernel.html#method-i-__callee__). 

Surprisingly enough, the code above _does not work as expected_ in Ruby 2.3.1:

~~~ ruby
    A.new.original
    #⇒ original
    A.new.aliased
    #⇒ original
~~~

The same happens for `alias` as well.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next