From: jesse.sielaff@... Date: 2016-02-09T00:24:58+00:00 Subject: [ruby-core:73744] [Ruby trunk Bug#12058] Unexpected value of __callee__ when including a module Issue #12058 has been updated by Jesse Sielaff. ruby -v changed from 2.3.0p0 to ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15] ---------------------------------------- Bug #12058: Unexpected value of __callee__ when including a module https://bugs.ruby-lang.org/issues/12058#change-56929 * Author: Jesse Sielaff * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- I noticed a surprising behavior when invoking `__callee__` in an aliased method. When invoked via a method created by `alias_method`, `__callee__` ignores the name of the old method (here `xxx`) and returns the name of the new method, as below: ~~~ class Foo def xxx() __callee__ end alias_method :foo, :xxx end Foo.new.foo # => :foo ~~~ This behavior holds even when `xxx` is inherited from a superclass: ~~~ class Sup def xxx() __callee__ end end class Bar < Sup alias_method :bar, :xxx end Bar.new.bar # => :bar ~~~ Given both of the above, I would expect that the same behavior would hold when `xxx` is included via a module. However, that is not the case: ~~~ module Mod def xxx() __callee__ end end class Baz include Mod alias_method :baz, :xxx end Baz.new.baz # => :xxx ~~~ I expect the return value to be `:baz`, not `:xxx`. Is this a bug, or is there an important difference between superclass inheritance and module inclusion that I've failed to grasp here? Origin: http://stackoverflow.com/questions/35281623/unexpected-value-of-callee-when-including-a-module-is-this-a-ruby-bug -- https://bugs.ruby-lang.org/ Unsubscribe: