Stop Moose::Meta::Attribute::Native::Trait::Code from creating reader methods by...
Florian Ragwitz [Thu, 25 Mar 2010 17:13:43 +0000 (18:13 +0100)]
Changes
lib/Moose/Manual/Delta.pod
lib/Moose/Meta/Attribute/Native/Trait/Code.pm
t/070_native_traits/209_trait_code.t

diff --git a/Changes b/Changes
index 74d215f..aaed7f6 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,6 +1,10 @@
 Also see Moose::Manual::Delta for more details of, and workarounds
 for, noteworthy changes.
 
+  [BUG FIXES]
+  * Moose::Meta::Attribute::Native::Trait::Code no longer creates reader
+    methods by default. (Florian Ragwitz)
+
 0.99 Mon, Mar 8, 2010
 
   [NEW FEATURES]
index 94f3e49..b9f747e 100644 (file)
@@ -16,6 +16,18 @@ feature.  If you encounter a problem and have a solution but don't see
 it documented here, or think we missed an important feature, please
 send us a patch.
 
+=head1 1.00
+
+=over 4
+
+=item Moose::Meta::Attribute::Native::Trait::Code no longer creates reader methods by default
+
+Earlier versions of L<Moose::Meta::Attribute::Native::Trait::Code> created
+read-only accessors for the attributes it's been applied to, even if you didn't
+ask for it with C<< is => 'ro' >>. This incorrect behaviour has now been fixed.
+
+=back
+
 =head1 0.95
 
 =over 4
index b820128..fc45d8b 100644 (file)
@@ -15,7 +15,6 @@ has method_provider => (
     default   => 'Moose::Meta::Attribute::Native::MethodProvider::Code',
 );
 
-sub _default_is { 'ro' }
 sub _helper_type { 'CodeRef' }
 
 no Moose::Role;
index 5569902..8969d72 100644 (file)
@@ -9,7 +9,6 @@ use Test::More;
 
     has callback => (
         traits   => ['Code'],
-        is       => 'ro',
         isa      => 'CodeRef',
         required => 1,
         handles  => { 'invoke_callback' => 'execute' },
@@ -17,7 +16,6 @@ use Test::More;
 
     has callback_method => (
         traits   => ['Code'],
-        is       => 'ro',
         isa      => 'CodeRef',
         required => 1,
         handles  => { 'invoke_method_callback' => 'execute_method' },
@@ -25,7 +23,6 @@ use Test::More;
 
     has multiplier => (
         traits   => ['Code'],
-        is       => 'ro',
         isa      => 'CodeRef',
         required => 1,
         handles  => { 'multiply' => 'execute' },
@@ -45,4 +42,7 @@ is($i, 1);
 is($thingy->multiply(3), 6);
 is($thingy->invoke_method_callback(3), 6);
 
+ok(!$thingy->can($_), "Code trait didn't create reader method for $_")
+    for qw(callback callback_method multiplier);
+
 done_testing;