X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FClass%2FMOP%2FClass%2FImmutable%2FTrait.pm;h=df4064f8cb86b61f238981d9eab4cb9af36c9e3a;hb=4fbd4b9bca7c0d3fead3f42a49e3671a6e7fc54f;hp=5b616442583fe6b7d7bb72d313b8c87c1d616ded;hpb=4b18c1b3cf8de42c2454663de378e9c3f2180352;p=gitmo%2FClass-MOP.git diff --git a/lib/Class/MOP/Class/Immutable/Trait.pm b/lib/Class/MOP/Class/Immutable/Trait.pm index 5b61644..df4064f 100644 --- a/lib/Class/MOP/Class/Immutable/Trait.pm +++ b/lib/Class/MOP/Class/Immutable/Trait.pm @@ -8,14 +8,12 @@ use MRO::Compat; use Carp 'confess'; use Scalar::Util 'blessed', 'weaken'; -our $VERSION = '0.91'; +our $VERSION = '0.98'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; # the original class of the metaclass instance -sub get_mutable_metaclass_name { $_[0]{__immutable}{original_class} } - -sub immutable_options { %{ $_[0]{__immutable}{options} } } +sub _get_mutable_metaclass_name { $_[0]{__immutable}{original_class} } sub is_mutable { 0 } sub is_immutable { 1 } @@ -30,15 +28,14 @@ sub superclasses { } sub _immutable_cannot_call { - Carp::confess "This method cannot be called on an immutable instance"; + my $name = shift; + Carp::confess "The '$name' method cannot be called on an immutable instance"; } -sub add_method { _immutable_cannot_call() } -sub alias_method { _immutable_cannot_call() } -sub remove_method { _immutable_cannot_call() } -sub add_attribute { _immutable_cannot_call() } -sub remove_attribute { _immutable_cannot_call() } -sub remove_package_symbol { _immutable_cannot_call() } +for my $name (qw/add_method alias_method remove_method add_attribute remove_attribute remove_package_symbol/) { + no strict 'refs'; + *{__PACKAGE__."::$name"} = sub { _immutable_cannot_call($name) }; +} sub class_precedence_list { my $orig = shift; @@ -77,10 +74,10 @@ sub get_meta_instance { $self->{__immutable}{get_meta_instance} ||= $self->$orig; } -sub get_method_map { +sub _get_method_map { my $orig = shift; my $self = shift; - $self->{__immutable}{get_method_map} ||= $self->$orig; + $self->{__immutable}{_get_method_map} ||= $self->$orig; } sub add_package_symbol {