Enumerable#reduce with symbol does not respect method visibility
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.