accessor overwriting warning now reflects reality
Yuval Kogman [Fri, 26 Jun 2009 23:42:49 +0000 (19:42 -0400)]
The error says you cannot overwrite the accessor, when it in fact just
does get overwritten (and this behavior is necessary for backwards
compatibility)

lib/Moose/Meta/Attribute.pm
t/020_attributes/027_accessor_override_method.t

index 31d96a3..c00e952 100644 (file)
@@ -585,7 +585,7 @@ sub _process_accessors {
      && (!$self->definition_context
       || $method->package_name eq $self->definition_context->{package})) {
         Carp::cluck(
-            "You cannot overwrite a locally defined method ($accessor) with "
+            "You are overwriting a locally defined method ($accessor) with "
           . "an accessor"
         );
     }
index 22f562a..16ab21a 100644 (file)
@@ -22,12 +22,12 @@ BEGIN {
 
 my $foo_meta = Foo->meta;
 stderr_like(sub { $foo_meta->add_attribute(a => (reader => 'get_a')) },
-            qr/^You cannot overwrite a locally defined method \(get_a\) with an accessor/, 'reader overriding gives proper warning');
+            qr/^You are overwriting a locally defined method \(get_a\) with an accessor/, 'reader overriding gives proper warning');
 stderr_like(sub { $foo_meta->add_attribute(b => (writer => 'set_b')) },
-            qr/^You cannot overwrite a locally defined method \(set_b\) with an accessor/, 'writer overriding gives proper warning');
+            qr/^You are overwriting a locally defined method \(set_b\) with an accessor/, 'writer overriding gives proper warning');
 stderr_like(sub { $foo_meta->add_attribute(c => (predicate => 'has_c')) },
-            qr/^You cannot overwrite a locally defined method \(has_c\) with an accessor/, 'predicate overriding gives proper warning');
+            qr/^You are overwriting a locally defined method \(has_c\) with an accessor/, 'predicate overriding gives proper warning');
 stderr_like(sub { $foo_meta->add_attribute(d => (clearer => 'clear_d')) },
-            qr/^You cannot overwrite a locally defined method \(clear_d\) with an accessor/, 'clearer overriding gives proper warning');
+            qr/^You are overwriting a locally defined method \(clear_d\) with an accessor/, 'clearer overriding gives proper warning');
 stderr_like(sub { $foo_meta->add_attribute(e => (is => 'rw')) },
-            qr/^You cannot overwrite a locally defined method \(e\) with an accessor/, 'accessor overriding gives proper warning');
+            qr/^You are overwriting a locally defined method \(e\) with an accessor/, 'accessor overriding gives proper warning');