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   21432 use Evo '-Export *; Carp croak; Scalar::Util reftype';
  42         108  
  42         246  
3              
4 42     42   327 use constant SYNTAX_STATE => {};
  42         92  
  42         9738  
5              
6             export qw(SYNTAX_STATE);
7              
8 265 50   265   734 my sub _check_settled($key) {
  265 50       654  
  265         498  
  265         440  
9 265 100       1297 croak qq#syntax error: "$key" already settled# if SYNTAX_STATE()->{$key};
10             }
11              
12 25 50   25 0 105 sub inject($dep) : prototype($) : Export {
  25 50       60  
  25         41  
  25         35  
13 25         62 _check_settled('inject');
14 24         45 SYNTAX_STATE->{inject} = $dep;
15 24         147 SYNTAX_STATE;
16 42     42   324 }
  42         105  
  42         339  
17              
18 21 50   21 0 133 sub check($fn) : prototype($) : Export {
  21 50       73  
  21         49  
  21         40  
19 21         79 _check_settled('check');
20 20         47 SYNTAX_STATE->{check} = $fn;
21 20         108 SYNTAX_STATE;
22 42     42   9581 }
  42         99  
  42         190  
23              
24             sub lazy : prototype() : Export {
25 19     19 0 297 _check_settled('lazy');
26 18         37 SYNTAX_STATE->{lazy}++;
27 18         93 SYNTAX_STATE;
28 42     42   6129 }
  42         122  
  42         194  
29              
30 6 50   6 0 36 sub no_method() : prototype() : Export {
  6         13  
31 6         19 _check_settled('no_method');
32 5         11 SYNTAX_STATE()->{no_method}++;
33 5         20 SYNTAX_STATE;
34 42     42   6716 }
  42         107  
  42         184  
35              
36 50 50   50 0 228 sub ro() : prototype() : Export {
  50         102  
37 50         192 _check_settled('ro');
38 49         135 SYNTAX_STATE()->{ro}++;
39 49         259 SYNTAX_STATE;
40 42     42   6276 }
  42         100  
  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   5612 }
  42         97  
  42         177  
46              
47 144 50   144 0 495 sub optional() : prototype() : Export {
  144         249  
48 144         409 _check_settled('optional');
49 143         327 SYNTAX_STATE->{optional}++;
50 143         484 SYNTAX_STATE;
51 42     42   6066 }
  42         98  
  42         173  
52              
53 449 50   449 0 1200 sub syntax_reset() : prototype() : Export {
  449         718  
54 449         1185 my %state = SYNTAX_STATE->%*;
55 449         919 SYNTAX_STATE->%* = ();
56 449         1308 %state;
57 42     42   6338 }
  42         108  
  42         164  
58              
59             1;
60              
61             __END__