From: Stevan Little Date: Tue, 22 Jul 2008 15:59:27 +0000 (+0000) Subject: fixing theplers test X-Git-Tag: 0_64~3 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=84bc89b399cbb6b34550d61dd5fa6515b54007fa;p=gitmo%2FClass-MOP.git fixing theplers test --- diff --git a/Changes b/Changes index f4f3f33..69b7c9b 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,10 @@ Revision history for Perl extension Class-MOP. +0.64 + * Class::MOP::Immutable + - fixing subtle edge case in immutable when you + call ->meta (stevan) + 0.63 Mon July 7, 2008 * Class::MOP - load_class will initialize a metaclass even if diff --git a/lib/Class/MOP/Immutable.pm b/lib/Class/MOP/Immutable.pm index 0c11a37..ef95ddd 100644 --- a/lib/Class/MOP/Immutable.pm +++ b/lib/Class/MOP/Immutable.pm @@ -59,7 +59,15 @@ my %DEFAULT_METHODS = ( return Class::MOP::Class->initialize($self) unless blessed($self); # otherwise, they are asking for the metaclass # which has been made immutable, which is itself - return $self; + # except in the cases where it is a metaclass itself + # that has been made immutable and for that we need + # to dig a bit ... + if ($self->isa('Class::MOP::Class')) { + return $self->{'___original_class'}->meta; + } + else { + return $self; + } }, is_mutable => sub { 0 }, is_immutable => sub { 1 },