do not generate an accessor on an rw attr if reader and writer are defined, this...
Christian Walde [Tue, 18 Dec 2012 16:11:24 +0000 (17:11 +0100)]
Changes
lib/Method/Generate/Accessor.pm
t/accessor-reader-writer.t

diff --git a/Changes b/Changes
index f04f028..5a35527 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,4 @@
+  - Don't generate an accessor for rw attributes if reader+writer both set
   - Support builder => sub {} ala MooseX::AttributeShortcuts
   - Fix 'no Moo;' to preserve non-sub package variables
   - Switch to testing for Mouse::Util->can('find_meta') to avoid
index 7a7bc26..c1ce749 100644 (file)
@@ -24,7 +24,8 @@ sub generate_method {
   if ($is eq 'ro') {
     $spec->{reader} = $name unless exists $spec->{reader};
   } elsif ($is eq 'rw') {
-    $spec->{accessor} = $name unless exists $spec->{accessor};
+    $spec->{accessor} = $name unless exists $spec->{accessor}
+      or ( $spec->{reader} and $spec->{writer} );
   } elsif ($is eq 'lazy') {
     $spec->{reader} = $name unless exists $spec->{reader};
     $spec->{lazy} = 1;
index eed47f9..04c0000 100644 (file)
@@ -14,6 +14,8 @@ my @result;
     reader => 'get_one',
     writer => 'set_one',
   );
+
+  sub one {'sub'}
 }
 
 {
@@ -33,6 +35,7 @@ my $bar = Bar->new(two => '...');
 is( $foo->get_one, 'lol', 'reader works' );
 $foo->set_one('rofl');
 is( $foo->get_one, 'rofl', 'writer works' );
+is( $foo->one, 'sub', 'reader+writer = no accessor' );
 
 ok( exception { $foo->get_one('blah') }, 'reader dies on write' );