1
0
Fork 0
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:
Jean Boussier 2022-08-25 09:28:07 +02:00
parent c2daa05693
commit b2d0f78869
Notes: git 2022-08-26 00:50:17 +09:00
2 changed files with 5 additions and 4 deletions

View file

@ -58,8 +58,8 @@ describe "Symbol#to_proc" do
@a = []
singleton_class.class_eval(&body)
tap(&:pub)
proc{tap(&:pro)}.should raise_error(NoMethodError)
proc{tap(&:pri)}.should raise_error(NoMethodError)
proc{tap(&:pro)}.should raise_error(NoMethodError, /protected method `pro' called/)
proc{tap(&:pri)}.should raise_error(NoMethodError, /private method `pri' called/)
@a.should == [:pub]
@a = []
@ -67,8 +67,8 @@ describe "Symbol#to_proc" do
o = c.new
o.instance_variable_set(:@a, [])
o.tap(&:pub)
proc{tap(&:pro)}.should raise_error(NoMethodError)
proc{o.tap(&:pri)}.should raise_error(NoMethodError)
proc{tap(&:pro)}.should raise_error(NoMethodError, /protected method `pro' called/)
proc{o.tap(&:pri)}.should raise_error(NoMethodError, /private method `pri' called/)
o.a.should == [:pub]
end
end

View file

@ -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);
case METHOD_VISI_PRIVATE:
vm_cc_method_missing_reason_set(cc, MISSING_PRIVATE);
break;
case METHOD_VISI_PROTECTED:
vm_cc_method_missing_reason_set(cc, MISSING_PROTECTED);
break;