Ruby 2.3.1在`Module#alias`和`Module#alias_method`中有一个错误?

时间:2016-09-14 11:04:46

标签: ruby alias

请考虑以下代码:

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

上面的代码在Ruby 2.1中运行得非常好,并返回实际的方法名称,因为它应该由Kernel#__callee__完成。

令人惊讶的是,上面的代码在Ruby 2.3.1中没有按预期工作

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

这是我在发行说明中找不到的理想行为,还是2.3中的MRI错误? alias也是如此。

PS我创建了一个问题https://bugs.ruby-lang.org/issues/12761

0 个答案:

没有答案