make class data unlock and relock classes if immutable
Guillermo Roditi [Mon, 23 Jun 2008 21:21:21 +0000 (21:21 +0000)]
r18589@martha (orig r7911):  groditi | 2008-06-12 12:43:58 -0400

lib/Catalyst/ClassData.pm

index 04e074c..76cdbec 100644 (file)
@@ -34,9 +34,17 @@ sub mk_classdata {
     unless ref $accessor eq 'CODE';
 
   my $meta = $class->meta;
+  my $immutable_options;
+  if( $meta->is_immutable ){
+    $immutable_options = $meta->get_immutable_options;
+    $meta->make_mutable;
+  }
   my $alias = "_${attribute}_accessor";
   $meta->add_method($alias, $accessor);
   $meta->add_method($attribute, $accessor);
+  if(defined $immutable_options){
+    $meta->make_immutable($immutable_options);
+  }
   $class->$attribute($_[2]) if(@_ > 2);
   return $accessor;
 }