use strict;
use warnings;
-our $VERSION = '1.14';
-$VERSION = eval $VERSION;
-our $AUTHORITY = 'cpan:STEVAN';
+use Moose::Role;
-use base 'Moose::Meta::Method::Accessor::Native::Writer';
+with 'Moose::Meta::Method::Accessor::Native::Writer';
-sub _minimum_arguments { 0 }
sub _maximum_arguments { 0 }
sub _potential_value {
- my ( $self, $slot_access ) = @_;
+ my $self = shift;
+ my ($slot_access) = @_;
- return "\$attr->default(\$self)"
+ my $attr = $self->associated_attribute;
+
+ return '(do { '
+ . join(' ', $attr->_inline_generate_default(
+ '$self', '$default_for_reset'
+ )) . ' '
+ . '$default_for_reset; '
+ . '})';
}
sub _inline_optimized_set_new_value {
- my ( $self, $inv, $new, $slot_access ) = @_;
+ my $self = shift;
+ my ($inv, $new, $slot_access) = @_;
- return "$slot_access = \$attr->default(\$self)";
+ return $slot_access . ' = ' . $self->_potential_value . ';';
}
+no Moose::Role;
+
1;