fixing theplers test
Stevan Little [Tue, 22 Jul 2008 15:59:27 +0000 (15:59 +0000)]
Changes
lib/Class/MOP/Immutable.pm

diff --git a/Changes b/Changes
index f4f3f33..69b7c9b 100644 (file)
--- 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
index 0c11a37..ef95ddd 100644 (file)
@@ -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  },