tweak the initializer args, document set_initial_value
Ricardo SIGNES [Thu, 7 Feb 2008 03:39:02 +0000 (03:39 +0000)]
lib/Class/MOP/Attribute.pm
lib/Class/MOP/Instance.pm
t/024_attribute_initializer.t

index bee7036..6bc203a 100644 (file)
@@ -569,6 +569,11 @@ know what you are doing.
 Set the value without going through the accessor. Note that this may be done to
 even attributes with just read only accessors.
 
+=item B<set_initial_value ($instance, $value)>
+
+This method sets the value without going through the accessor -- but it is only
+called when the instance data is first initialized.
+
 =item B<get_value ($instance)>
 
 Return the value without going through the accessor. Note that this may be done
index d1ed877..8c0a73a 100644 (file)
@@ -89,7 +89,7 @@ sub _set_initial_slot_value {
   };
 
   # most things will just want to set a value, so make it first arg
-  $instance->$initializer($value, $slot_name, $callback);
+  $instance->$initializer($value, $callback, $self);
 }
 
 sub initialize_slot {
index cf39b7a..db9aca5 100644 (file)
@@ -25,7 +25,7 @@ This checks that the initializer is used to set the initial value.
         reader => 'get_bar',
         writer => 'set_bar',
         initializer => sub {
-          my ($self, $value, $name, $callback) = @_;
+          my ($self, $value, $callback, $attr) = @_;
           $callback->($value * 2);
         },
     );