mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	Fix private methods reported as protected when called via Symbol#to_proc
Ref: bfa6a8ddc8
Ref: [Bug #18826]
			
			
This commit is contained in:
		
							parent
							
								
									c2daa05693
								
							
						
					
					
						commit
						b2d0f78869
					
				
				
				Notes:
				
					git
				
				2022-08-26 00:50:17 +09:00 
				
			
			
			
		
		
					 2 changed files with 5 additions and 4 deletions
				
			
		| 
						 | 
					@ -58,8 +58,8 @@ describe "Symbol#to_proc" do
 | 
				
			||||||
      @a = []
 | 
					      @a = []
 | 
				
			||||||
      singleton_class.class_eval(&body)
 | 
					      singleton_class.class_eval(&body)
 | 
				
			||||||
      tap(&:pub)
 | 
					      tap(&:pub)
 | 
				
			||||||
      proc{tap(&:pro)}.should raise_error(NoMethodError)
 | 
					      proc{tap(&:pro)}.should raise_error(NoMethodError, /protected method `pro' called/)
 | 
				
			||||||
      proc{tap(&:pri)}.should raise_error(NoMethodError)
 | 
					      proc{tap(&:pri)}.should raise_error(NoMethodError, /private method `pri' called/)
 | 
				
			||||||
      @a.should == [:pub]
 | 
					      @a.should == [:pub]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      @a = []
 | 
					      @a = []
 | 
				
			||||||
| 
						 | 
					@ -67,8 +67,8 @@ describe "Symbol#to_proc" do
 | 
				
			||||||
      o = c.new
 | 
					      o = c.new
 | 
				
			||||||
      o.instance_variable_set(:@a, [])
 | 
					      o.instance_variable_set(:@a, [])
 | 
				
			||||||
      o.tap(&:pub)
 | 
					      o.tap(&:pub)
 | 
				
			||||||
      proc{tap(&:pro)}.should raise_error(NoMethodError)
 | 
					      proc{tap(&:pro)}.should raise_error(NoMethodError, /protected method `pro' called/)
 | 
				
			||||||
      proc{o.tap(&:pri)}.should raise_error(NoMethodError)
 | 
					      proc{o.tap(&:pri)}.should raise_error(NoMethodError, /private method `pri' called/)
 | 
				
			||||||
      o.a.should == [:pub]
 | 
					      o.a.should == [:pub]
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3256,6 +3256,7 @@ vm_call_symbol(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
 | 
				
			||||||
            return vm_call_method_each_type(ec, reg_cfp, calling);
 | 
					            return vm_call_method_each_type(ec, reg_cfp, calling);
 | 
				
			||||||
          case METHOD_VISI_PRIVATE:
 | 
					          case METHOD_VISI_PRIVATE:
 | 
				
			||||||
            vm_cc_method_missing_reason_set(cc, MISSING_PRIVATE);
 | 
					            vm_cc_method_missing_reason_set(cc, MISSING_PRIVATE);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
          case METHOD_VISI_PROTECTED:
 | 
					          case METHOD_VISI_PROTECTED:
 | 
				
			||||||
            vm_cc_method_missing_reason_set(cc, MISSING_PROTECTED);
 | 
					            vm_cc_method_missing_reason_set(cc, MISSING_PROTECTED);
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue