use strict;
use warnings;
-our $VERSION = '0.57';
+our $VERSION = '0.62_01';
$VERSION = eval $VERSION;
our $AUTHORITY = 'cpan:STEVAN';
use base 'Moose::Meta::Method',
'Class::MOP::Method::Accessor';
-## Inline method generators
+sub _error_thrower {
+ my $self = shift;
+ ( ref $self && $self->associated_attribute ) || $self->SUPER::_error_thrower();
+}
sub _eval_code {
my ( $self, $code ) = @_;
# NOTE:
# set up the environment
+ my $environment = q{
my $attr = $self->associated_attribute;
my $attr_name = $attr->name;
- my $meta = $self,
+ my $meta = $self;
my $type_constraint_obj = $attr->type_constraint;
my $type_constraint_name = $type_constraint_obj && $type_constraint_obj->name;
my $type_constraint = $type_constraint_obj
? $type_constraint_obj->_compiled_type_constraint
: undef;
+};
#warn "code for $attr_name =>\n" . $code . "\n";
- my $sub = eval $code;
- $self->throw_error("Could not create writer for '$attr_name' because $@ \n code: $code", error => $@, data => $code ) if $@;
+ my $sub = $self->_eval_closure($environment, $code);
+ $self->throw_error("Could not create writer for '${\$self->associated_attribute->name}' because $@ \n code: $code", error => $@, data => $code ) if $@;
return $sub;
}
my ($self, $instance, $value) = @_;
my $attr = $self->associated_attribute;
return '' unless $attr->has_trigger;
- return sprintf('$attr->trigger->(%s, %s, $attr);', $instance, $value);
+ return sprintf('$attr->trigger->(%s, %s);', $instance, $value);
}
sub _inline_get {