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   17143 use Evo '-Export *; Carp croak; Scalar::Util reftype';
  42         90  
  42         223  
3              
4 42     42   280 use constant SYNTAX_STATE => {};
  42         82  
  42         8018  
5              
6             export qw(SYNTAX_STATE);
7              
8 265 50   265   712 my sub _check_settled($key) {
  265 50       761  
  265         461  
  265         428  
9 265 100       1299 croak qq#syntax error: "$key" already settled# if SYNTAX_STATE()->{$key};
10             }
11              
12 25 50   25 0 156 sub inject($dep) : prototype($) : Export {
  25 50       79  
  25         53  
  25         50  
13 25         78 _check_settled('inject');
14 24         64 SYNTAX_STATE->{inject} = $dep;
15 24         139 SYNTAX_STATE;
16 42     42   322 }
  42         88  
  42         287  
17              
18 21 50   21 0 116 sub check($fn) : prototype($) : Export {
  21 50       72  
  21         45  
  21         39  
19 21         73 _check_settled('check');
20 20         48 SYNTAX_STATE->{check} = $fn;
21 20         87 SYNTAX_STATE;
22 42     42   7674 }
  42         100  
  42         165  
23              
24             sub lazy : prototype() : Export {
25 19     19 0 281 _check_settled('lazy');
26 18         44 SYNTAX_STATE->{lazy}++;
27 18         103 SYNTAX_STATE;
28 42     42   5388 }
  42         95  
  42         162  
29              
30 6 50   6 0 30 sub no_method() : prototype() : Export {
  6         13  
31 6         19 _check_settled('no_method');
32 5         12 SYNTAX_STATE()->{no_method}++;
33 5         28 SYNTAX_STATE;
34 42     42   5963 }
  42         85  
  42         158  
35              
36 50 50   50 0 182 sub ro() : prototype() : Export {
  50         90  
37 50         142 _check_settled('ro');
38 49         111 SYNTAX_STATE()->{ro}++;
39 49         211 SYNTAX_STATE;
40 42     42   5881 }
  42         88  
  42         155  
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   5279 }
  42         93  
  42         163  
46              
47 144 50   144 0 501 sub optional() : prototype() : Export {
  144         211  
48 144         344 _check_settled('optional');
49 143         282 SYNTAX_STATE->{optional}++;
50 143         419 SYNTAX_STATE;
51 42     42   5629 }
  42         89  
  42         160  
52              
53 449 50   449 0 1083 sub syntax_reset() : prototype() : Export {
  449         621  
54 449         1125 my %state = SYNTAX_STATE->%*;
55 449         834 SYNTAX_STATE->%* = ();
56 449         1209 %state;
57 42     42   5772 }
  42         93  
  42         159  
58              
59             1;
60              
61             __END__