File Coverage

blib/lib/Kavorka/TraitFor/Parameter/ro.pm
Criterion Covered Total %
statement 11 11 100.0
branch n/a
condition n/a
subroutine 4 4 100.0
pod n/a
total 15 15 100.0


line stmt bran cond sub pod time code
1 1     1   439 use 5.014;
  1         3  
2 1     1   3 use strict;
  1         1  
  1         18  
3 1     1   2 use warnings;
  1         1  
  1         56  
4              
5             package Kavorka::TraitFor::Parameter::ro;
6              
7             our $AUTHORITY = 'cpan:TOBYINK';
8             our $VERSION = '0.037';
9              
10 1     1   4 use Moo::Role;
  1         1  
  1         5  
11              
12             around _injection_assignment => sub
13             {
14             my $next = shift;
15             my $self = shift;
16             my ($sig, $var, $val) = @_;
17            
18             my $str = $self->$next(@_);
19            
20             $str .= sprintf(
21             '&Internals::SvREADONLY(\\%s, 1);',
22             $var,
23             );
24            
25             return $str;
26             };
27              
28             after sanity_check => sub
29             {
30             my $self = shift;
31            
32             my $traits = $self->traits;
33             my $name = $self->name;
34            
35             croak("Parameter $name cannot be rw and ro") if $traits->{rw};
36             };
37              
38             1;