File Coverage

blib/lib/Class/Component/Component/Autocall/Autoload.pm
Criterion Covered Total %
statement 20 20 100.0
branch 5 8 62.5
condition 3 6 50.0
subroutine 4 4 100.0
pod n/a
total 32 38 84.2


line stmt bran cond sub pod time code
1             package Class::Component::Component::Autocall::Autoload;
2              
3 6     6   43 use strict;
  6         11  
  6         304  
4 6     6   35 use warnings;
  6         12  
  6         310  
5              
6 6     6   35 use Carp::Clan qw/Class::Component/;
  6         97  
  6         62  
7              
8             our $AUTOLOAD;
9             sub AUTOLOAD {
10 18     18   9438 my $self = shift;
11 18 50       64 return unless ref($self);
12 18         115 (my $method = $AUTOLOAD) =~ s/.*:://;
13 18 50       65 return if $method eq 'DESTROY';
14              
15 18         33 eval {
16             # $self->SUPER::can('AUTOLOAD')->(@_) if $self->SUPER::can('AUTOLOAD');
17             # $self->SUPER::can($method)->(@_) if $self->SUPER::can($method);
18 18         103 $self->NEXT($method => @_);
19             };
20 18         42 my $super_error = $@;
21              
22 18 100 66     142 if (ref($self) && (my $plugin = $self->class_component_methods->{$method})) {
23 17         74 return $self->call($method, @_);
24             }
25            
26 1 50       5 croak $super_error if $super_error;
27 1   33     13 croak sprintf('Can\'t locate object method "%s" via package "%s"', $method, ref($self) || $self);
28             }
29              
30             1;