Project

General

Profile

Actions

Bug #13592

closed

Enumerable#reduce with symbol does not respect method visibility

Added by americodls (Americo Duarte) over 4 years ago. Updated about 4 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin15]
[ruby-core:81349]

Description

When use reduce with symbol, I expect the symbol is called in object but respecting the method visibility.

Example with source code written in a file.

Fixnum.instance_eval do
  private :+
end

p [1,2,3].reduce(:+)

The behavior in IRB is different.

irb(main):001:0> [1,2,3].reduce(:+)
=> 6
irb(main):002:0> Fixnum.instance_eval do
irb(main):003:1*   private :+
irb(main):004:1> end
=> Fixnum
irb(main):005:0>
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/input-method.rb:154:in `gets': private method `+' called for 4:Fixnum (NoMethodError)

Now, I am confused. Those behaviors are expected? In doc this is not clear.

Actions

Also available in: Atom PDF