3 use Test::More tests => 18;
4 use Attribute::Handlers;
6 sub Args : ATTR(CODE) {
7 my ($package, $symbol, $referent, $attr, $data, $phase, $filename, $linenum) = @_;
8 is( $package, 'main', 'package' );
9 is( $symbol, \*foo, 'symbol' );
10 is( $referent, \&foo, 'referent' );
11 is( $attr, 'Args', 'attr' );
12 is( ref $data, 'ARRAY', 'data' );
13 is( $data->[0], 'bar', 'data' );
14 is( $phase, 'CHECK', 'phase' );
15 is( $filename, __FILE__, 'filename' );
16 is( $linenum, 19, 'linenum' );
22 sub myref { $ref = shift; }
25 eval "my \$bar :SArgs(grumpf); \$b = \\\$bar";
26 is( $b, $ref, 'referent' );
28 sub SArgs : ATTR(SCALAR) {
29 my ($package, $symbol, $referent, $attr, $data, $phase, $filename, $linenum) = @_;
30 is( $package, 'main', 'package' );
31 is( $symbol, 'LEXICAL', 'symbol' );
33 is( $attr, 'SArgs', 'attr' );
34 is( ref $data, 'ARRAY', 'data' );
35 is( $data->[0], 'grumpf', 'data' );
36 is( $phase, 'CHECK', 'phase' );
38 local $TODO = "Doesn't work correctly" if $] < 5.008;
39 is( $filename, __FILE__, 'filename' );
40 is( $linenum, 42, 'linenum' );