Moose compat: throw an error on $self->reader(value)
Shawn M Moore [Tue, 10 Jun 2008 02:57:38 +0000 (02:57 +0000)]
lib/Mouse/Attribute.pm
t/007-attributes.t

index 1a971bf..b5dfb1d 100644 (file)
@@ -78,6 +78,7 @@ sub generate_accessor {
         $accessor .= '}';
     }
     else {
+        $accessor .= 'confess "Cannot assign a value to a read-only accessor" if @_;';
     }
 
     if ($attribute->is_lazy) {
index cf2b5a7..4316e25 100644 (file)
@@ -2,6 +2,7 @@
 use strict;
 use warnings;
 use Test::More tests => 10;
+use Test::Exception;
 
 do {
     package Class;
@@ -27,7 +28,11 @@ ok(!$object->can('x'), "No accessor is injected if 'is' has no value");
 can_ok($object, 'y', 'z');
 
 is($object->y, undef);
-is($object->y(10), undef);
+
+throws_ok {
+    $object->y(10);
+} qr/Cannot assign a value to a read-only accessor/;
+
 is($object->y, undef);
 
 is($object->z, undef);