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