X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FClassData.pm;fp=lib%2FCatalyst%2FClassData.pm;h=553a8511f0fd873e95b654e80960ceab41bd513b;hp=0f0b27de3274c890b8b256217674c18f7b475463;hb=46435d36b97afe22955a7f7188ec5cefbb8886f0;hpb=30305469e1d8f922119d64d631ccd800358a7698 diff --git a/lib/Catalyst/ClassData.pm b/lib/Catalyst/ClassData.pm index 0f0b27d..553a851 100644 --- a/lib/Catalyst/ClassData.pm +++ b/lib/Catalyst/ClassData.pm @@ -46,17 +46,16 @@ sub mk_classdata { my $meta = $class->Class::MOP::Object::meta(); confess "${class}'s metaclass is not a Class::MOP::Class" unless $meta->isa('Class::MOP::Class'); - my $immutable_options; - if( $meta->is_immutable ){ - $immutable_options = $meta->get_immutable_options; - $meta->make_mutable; - } + + my $was_immutable = $meta->is_immutable; + $meta->make_mutable if $was_immutable; + my $alias = "_${attribute}_accessor"; $meta->add_method($alias, $accessor); $meta->add_method($attribute, $accessor); - if(defined $immutable_options){ - $meta->make_immutable(%{ $immutable_options }); - } + + $meta->make_immutable if $was_immutable; + $class->$attribute($_[2]) if(@_ > 2); return $accessor; }