Project

General

Profile

Bug #13592

Updated by nobu (Nobuyoshi Nakada) over 4 years ago

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. 

 ~~~ruby ~~~ 
 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.

Back