b8583bc8c15ae7611adf9478fdd545f58a534008
[gitmo/Moose.git] / lib / Moose / Meta / Method / Accessor / Native / String / Writer.pm
1 package Moose::Meta::Method::Accessor::Native::String::Writer;
2
3 use strict;
4 use warnings;
5
6 our $VERSION = '1.13';
7 $VERSION = eval $VERSION;
8 our $AUTHORITY = 'cpan:STEVAN';
9
10 use base 'Moose::Meta::Method::Accessor::Native::Writer';
11
12 sub _new_value {'$_[0]'}
13
14 sub _constraint_must_be_checked {
15     my $self = shift;
16
17     my $attr = $self->associated_attribute;
18
19     return $attr->has_type_constraint
20         && ( $attr->type_constraint->name ne 'Str'
21         || ( $attr->should_coerce && $attr->type_constraint->has_coercion ) );
22 }
23
24 sub _inline_check_coercion {
25     my ( $self, $value ) = @_;
26
27     my $attr = $self->associated_attribute;
28
29     return ''
30         unless $attr->should_coerce && $attr->type_constraint->has_coercion;
31
32     # We want to break the aliasing in @_ in case the coercion tries to make a
33     # destructive change to an array member.
34     return '@_ = @{ $attr->type_constraint->coerce($value) };';
35 }
36
37 1;