Commit | Line | Data |
---|---|---|
cab6c672 DF |
1 | #!perl |
2 | ||
3 | BEGIN { | |
4 | if ($ENV{PERL_CORE}) { | |
5 | chdir 't' if -d 't'; | |
6 | @INC = '../lib'; | |
7 | } | |
8 | } | |
9 | ||
2560d050 | 10 | use Test::More tests => 18; |
cab6c672 DF |
11 | use Attribute::Handlers; |
12 | ||
13 | sub Args : ATTR(CODE) { | |
14 | my ($package, $symbol, $referent, $attr, $data, $phase, $filename, $linenum) = @_; | |
15 | is( $package, 'main', 'package' ); | |
16 | is( $symbol, \*foo, 'symbol' ); | |
17 | is( $referent, \&foo, 'referent' ); | |
18 | is( $attr, 'Args', 'attr' ); | |
2560d050 DC |
19 | is( ref $data, 'ARRAY', 'data' ); |
20 | is( $data->[0], 'bar', 'data' ); | |
cab6c672 DF |
21 | is( $phase, 'CHECK', 'phase' ); |
22 | is( $filename, __FILE__, 'filename' ); | |
2560d050 | 23 | is( $linenum, 26, 'linenum' ); |
cab6c672 DF |
24 | } |
25 | ||
26 | sub foo :Args(bar) {} | |
27 | ||
e016bc2d RGS |
28 | my $ref; |
29 | sub myref { $ref = shift; } | |
30 | my $b; | |
7ffb7798 | 31 | #line 42 |
e016bc2d RGS |
32 | eval "my \$bar :SArgs(grumpf); \$b = \\\$bar"; |
33 | is( $b, $ref, 'referent' ); | |
cab6c672 DF |
34 | |
35 | sub SArgs : ATTR(SCALAR) { | |
36 | my ($package, $symbol, $referent, $attr, $data, $phase, $filename, $linenum) = @_; | |
37 | is( $package, 'main', 'package' ); | |
38 | is( $symbol, 'LEXICAL', 'symbol' ); | |
e016bc2d | 39 | myref($referent); |
cab6c672 | 40 | is( $attr, 'SArgs', 'attr' ); |
2560d050 DC |
41 | is( ref $data, 'ARRAY', 'data' ); |
42 | is( $data->[0], 'grumpf', 'data' ); | |
cab6c672 DF |
43 | is( $phase, 'CHECK', 'phase' ); |
44 | TODO: { | |
7ffb7798 | 45 | local $TODO = "Doesn't work correctly" if $] < 5.011; |
cab6c672 | 46 | is( $filename, __FILE__, 'filename' ); |
7ffb7798 | 47 | is( $linenum, 42, 'linenum' ); |
cab6c672 DF |
48 | } |
49 | } |