my ($name, $method) = %{$accessor};
$method = $self->accessor_metaclass->wrap(
$method,
+ attribute => $self,
package_name => $self->associated_class->name,
name => $name,
+ associated_metaclass => $self->associated_class,
definition_context => $method_ctx,
);
$self->associate_method($method);
accessor_type => $type,
package_name => $self->associated_class->name,
name => $accessor,
+ associated_metaclass => $self->associated_class,
definition_context => $method_ctx,
);
}
Moose::Meta::TypeCoercion::Union
Moose::Meta::Method
- Moose::Meta::Method::Accessor
Moose::Meta::Method::Constructor
Moose::Meta::Method::Destructor
Moose::Meta::Method::Overridden
Moose::Meta::Role::Application::ToInstance
);
-Moose::Meta::Mixin::AttributeCore->meta->make_immutable(
+$_->make_immutable(
inline_constructor => 0,
constructor_name => undef,
+ # these are Class::MOP accessors, so they need inlining
+ inline_accessors => 1
+ ) for grep { $_->is_mutable }
+ map { $_->meta }
+ qw(
+ Moose::Meta::Method::Accessor
+ Moose::Meta::Method::Delegation
+ Moose::Meta::Mixin::AttributeCore
);
1;
use base 'Moose::Meta::Method',
'Class::MOP::Method::Accessor';
+# multiple inheritance is terrible
+sub new {
+ goto &Class::MOP::Method::Accessor::new;
+}
+
+sub _new {
+ goto &Class::MOP::Method::Accessor::_new;
+}
+
sub _error_thrower {
my $self = shift;
return $self->associated_attribute