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