1*91f110e0Safresh1 2*91f110e0Safresh1# Test that PL_check hooks for RV2*V can override symbol lookups. 3*91f110e0Safresh1 4*91f110e0Safresh1# So far we only test RV2CV. 5*91f110e0Safresh1 6*91f110e0Safresh1use XS::APItest; 7*91f110e0Safresh1use Test::More tests => 4; 8*91f110e0Safresh1 9*91f110e0Safresh1BEGIN { 10*91f110e0Safresh1 setup_rv2cv_addunderbar; 11*91f110e0Safresh1 $^H{'XS::APItest/addunder'} = 1; # make foo() actually call foo_() 12*91f110e0Safresh1} 13*91f110e0Safresh1 14*91f110e0Safresh1sub foo_ { @_ ? shift . "___" : "phew" } 15*91f110e0Safresh1 16*91f110e0Safresh1is(foo(), "phew"); 17*91f110e0Safresh1 18*91f110e0Safresh1# Make sure subs looked up via rv2cv check hooks are not treated as second- 19*91f110e0Safresh1# class subs. 20*91f110e0Safresh1 21*91f110e0Safresh1BEGIN { # If there is a foo symbol, this test will not be testing anything. 22*91f110e0Safresh1 delete $::{foo}; 23*91f110e0Safresh1 delete $::{goo}; 24*91f110e0Safresh1} 25*91f110e0Safresh1is((foo bar), 'bar___'); 26*91f110e0Safresh1$bar = "baz"; 27*91f110e0Safresh1is((foo $bar), 'baz___'); 28*91f110e0Safresh1 29*91f110e0Safresh1# Proto should cause goo() to override Foo->goo interpretation. 30*91f110e0Safresh1{package Foom} 31*91f110e0Safresh1sub goo_ (*) { shift . "===" } 32*91f110e0Safresh1is((goo Foom), "Foom==="); 33