File Coverage

blib/lib/Evo/Class/Syntax.pm
Criterion Covered Total %
statement 72 76 94.7
branch 12 24 50.0
condition n/a
subroutine 18 19 94.7
pod 0 8 0.0
total 102 127 80.3


line stmt bran cond sub pod time code
1             package Evo::Class::Syntax;
2 42     42   19520 use Evo '-Export *; Carp croak; Scalar::Util reftype';
  42         99  
  42         327  
3              
4 42     42   340 use constant SYNTAX_STATE => {};
  42         99  
  42         9436  
5              
6             export qw(SYNTAX_STATE);
7              
8 265 50   265   706 my sub _check_settled($key) {
  265 50       656  
  265         514  
  265         429  
9 265 100       1354 croak qq#syntax error: "$key" already settled# if SYNTAX_STATE()->{$key};
10             }
11              
12 25 50   25 0 108 sub inject($dep) : prototype($) : Export {
  25 50       60  
  25         46  
  25         38  
13 25         62 _check_settled('inject');
14 24         50 SYNTAX_STATE->{inject} = $dep;
15 24         106 SYNTAX_STATE;
16 42     42   315 }
  42         111  
  42         309  
17              
18 21 50   21 0 138 sub check($fn) : prototype($) : Export {
  21 50       80  
  21         57  
  21         39  
19 21         88 _check_settled('check');
20 20         56 SYNTAX_STATE->{check} = $fn;
21 20         111 SYNTAX_STATE;
22 42     42   8593 }
  42         105  
  42         177  
23              
24             sub lazy : prototype() : Export {
25 19     19 0 297 _check_settled('lazy');
26 18         38 SYNTAX_STATE->{lazy}++;
27 18         99 SYNTAX_STATE;
28 42     42   6247 }
  42         96  
  42         181  
29              
30 6 50   6 0 40 sub no_method() : prototype() : Export {
  6         14  
31 6         18 _check_settled('no_method');
32 5         11 SYNTAX_STATE()->{no_method}++;
33 5         18 SYNTAX_STATE;
34 42     42   6293 }
  42         102  
  42         173  
35              
36 50 50   50 0 216 sub ro() : prototype() : Export {
  50         106  
37 50         176 _check_settled('ro');
38 49         122 SYNTAX_STATE()->{ro}++;
39 49         249 SYNTAX_STATE;
40 42     42   6264 }
  42         115  
  42         171  
41              
42 0 0   0 0 0 sub rw() : prototype() : Export {
  0         0  
43 0         0 Carp::carp "rw is deprecated, all attributes are rw by default";
44 0         0 SYNTAX_STATE;
45 42     42   5877 }
  42         92  
  42         177  
46              
47 144 50   144 0 488 sub optional() : prototype() : Export {
  144         239  
48 144         481 _check_settled('optional');
49 143         362 SYNTAX_STATE->{optional}++;
50 143         493 SYNTAX_STATE;
51 42     42   6202 }
  42         105  
  42         181  
52              
53 449 50   449 0 1167 sub syntax_reset() : prototype() : Export {
  449         684  
54 449         1201 my %state = SYNTAX_STATE->%*;
55 449         895 SYNTAX_STATE->%* = ();
56 449         1313 %state;
57 42     42   6102 }
  42         127  
  42         178  
58              
59             1;
60              
61             __END__