#!./perl
# These tests are not necessarily normative, but until such time as we
# publicise an API for subclassing B::Deparse they can prevent us from
# gratuitously breaking conventions that CPAN modules already use.
use
warnings;
use
strict;
use
Test::More;
use
B::Deparse;
package
B::Deparse::NameMangler {
our
@ISA
=
"B::Deparse"
;
sub
padname { SUPER::padname{
@_
} .
'_groovy'
}
}
my
$nm
=
'B::Deparse::NameMangler'
->new;
like
$nm
->coderef2text(
sub
{
my
(
$a
,
$b
,
$c
) }),
qr/\$a_groovy, \$b_groovy, \$c_groovy/
,
'overriding padname works for renaming lexicals'
;
like
$nm
->coderef2text(
sub
{
my
$c
; /(??{
$c
})/; }),
qr/\Q(??{\E \$c_groovy/
,
'overriding padname works for renaming lexicals in regexp blocks'
;
done_testing();