File Coverage

blib/lib/Aspect/Pointcut/Wantarray.pm
Criterion Covered Total %
statement 28 28 100.0
branch 4 4 100.0
condition n/a
subroutine 11 11 100.0
pod 3 3 100.0
total 46 46 100.0


line stmt bran cond sub pod time code
1             package Aspect::Pointcut::Wantarray;
2              
3 26     26   141 use strict;
  26         45  
  26         825  
4 26     26   137 use Carp ();
  26         48  
  26         388  
5 26     26   130 use Aspect::Pointcut ();
  26         48  
  26         1188  
6              
7             our $VERSION = '1.04';
8             our @ISA = 'Aspect::Pointcut';
9              
10 26     26   129 use constant VOID => 1;
  26         44  
  26         1452  
11 26     26   133 use constant SCALAR => 2;
  26         48  
  26         10548  
12 26     26   173 use constant LIST => 3;
  26         47  
  26         7736  
13              
14              
15              
16              
17              
18             ######################################################################
19             # Constructor Methods
20              
21             sub new {
22 35 100   35 1 911 return bless [
23             LIST,
24             '$Aspect::POINT->{wantarray}',
25             ], $_[0] if $_[1];
26              
27 19 100       635 return bless [
28             SCALAR,
29             'defined $Aspect::POINT->{wantarray} and not $Aspect::POINT->{wantarray}',
30             ], $_[0] if defined $_[1];
31              
32 9         546 return bless [
33             VOID,
34             'not defined $Aspect::POINT->{wantarray}',
35             ], $_[0];
36             }
37              
38              
39              
40              
41              
42             ######################################################################
43             # Weaving Methods
44              
45             # This is a run-time only pointcut of no value at weave time
46             sub curry_weave {
47 30     30 1 105 return;
48             }
49              
50             # For wantarray pointcuts we keep the original
51             sub curry_runtime {
52 35     35 1 129 return $_[0];
53             }
54              
55             sub compile_runtime {
56             $_[0]->[1];
57             }
58              
59              
60              
61              
62              
63             ######################################################################
64             # Optional XS Acceleration
65              
66             BEGIN {
67 26     26   56 local $@;
68 26     26   1997 eval <<'END_PERL';
  26         156  
  26         511  
  26         233  
69             use Class::XSAccessor::Array 1.08 {
70             replace => 1,
71             getters => {
72             'compile_runtime' => 1,
73             },
74             };
75             END_PERL
76             }
77              
78             1;
79              
80             __END__