Fix private methods reported as protected when called via Symbol#to_proc
Ref: bfa6a8ddc84fffe0aef5a0f91b417167e124dbbf Ref: [Bug #18826]
This commit is contained in:
parent
c2daa05693
commit
b2d0f78869
Notes:
git
2022-08-26 00:50:17 +09:00
@ -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…
x
Reference in New Issue
Block a user