1 END {print "not ok 1\n" unless $loaded;}
3 use Attribute::Handlers;
6 CHECK { $main::phase++ }
8 ######################### End of black magic.
10 # Insert your test code below (better if it prints "ok 13"
11 # (correspondingly "not ok 13") depending on the success of chunk 13
14 sub ok { $::count++; push @::results, [$_[1], $_[0]?"":"not "]; }
16 END { print "1..$::count\n";
17 print map "$_->[1]ok $_->[0]\n",
18 sort {$a->[0]<=>$b->[0]}
19 grep $_->[0], @::results }
23 no warnings 'redefine';
25 sub UNIVERSAL::Lastly :ATTR(INIT) { ::ok $_[4][0] && $main::phase, $_[4][1] }
27 sub UNIVERSAL::Okay :ATTR(BEGIN) {
28 ::ok $_[4][0] && (!$main::phase || !ref $_[1] && $_[1] eq 'LEXICAL'), $_[4][1];
31 sub Dokay :ATTR(SCALAR) { ::ok @{$_[4]} }
32 sub Dokay :ATTR(HASH) { ::ok @{$_[4]} }
33 sub Dokay :ATTR(ARRAY) { ::ok @{$_[4]} }
34 sub Dokay :ATTR(CODE) { ::ok @{$_[4]} }
36 sub Vokay :ATTR(VAR) { ::ok @{$_[4]} }
38 sub Aokay :ATTR(ANY) { ::ok @{$_[4]} }
44 my @x1 :Lastly(1=>42);
46 sub x1 :Lastly(1,44) {}
48 my Test $x2 :Dokay(1,5);
52 my Test $x4 :Dokay(1,7);
63 # BEGIN {eval 'sub y2 :Vokay(0,16) {}; 1' or
70 sub z :Aokay(1,20) {};
77 my Test $x6 :Dokay(1,22);
92 BEGIN { eval 'my $x7 :Dokay(0,28)' or ::ok(1,28); }
93 my Test $x8 :Dokay(1,29);
94 eval 'sub x7 :Dokay(0,30) {}' or ::ok(1,30);
99 sub TIESCALAR { ::ok(1,31); bless {}, $_[0] }
100 sub FETCH { ::ok(1,32); return 1 }
101 sub STORE { ::ok(1,33); return 1 }
105 sub TIEARRAY { ::ok(1,$_[1]); bless {}, $_[0] }
106 sub FETCH { ::ok(1,35); return 1 }
107 sub STORE { ::ok(1,36); return 1 }
108 sub FETCHSIZE { 100 }
110 package Tie::Row::dy;
112 sub TIEHASH { ::ok(1,$_[1]); bless {}, $_[0] }
113 sub FETCH { ::ok(1,38); return 1 }
114 sub STORE { ::ok(1,39); return 1 }
118 eval 'sub x7 :ATTR(SCALAR) :ATTR(CODE) {}' and ::ok(0,40) or ::ok(1,40);
120 use Attribute::Handlers autotie => { Other::Loud => Tie::Loud,
122 UNIVERSAL::Rowdy => Tie::Row::dy,
125 my Other $loud : Loud;
128 my @noisy : Noisy(34);
131 my %rowdy : Rowdy(37,'this arg should be ignored');