Remove third argument to trigger
Shawn M Moore [Wed, 1 Apr 2009 03:07:35 +0000 (23:07 -0400)]
Changes
lib/Mouse/Meta/Attribute.pm
lib/Mouse/Meta/Method/Constructor.pm
lib/Mouse/Object.pm
t/016-trigger.t

diff --git a/Changes b/Changes
index fada970..4b0bf08 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,6 +1,8 @@
 Revision history for Mouse
 
 0.20
+    * To improve Moose compat, the third argument to trigger
+      (the attribute metaobject) has been removed (Sartak)
 
 0.19 Sun Mar 8 04:38:01 2009
     * Parameterized type constraints for ArrayRef and HashRef (lestrrat)
index 20e8006..6c90b30 100644 (file)
@@ -105,7 +105,7 @@ sub generate_accessor {
         }
 
         if ($trigger) {
-            $accessor .= '$trigger->('.$self.', '.$value.', $attribute);' . "\n";
+            $accessor .= '$trigger->('.$self.', '.$value.');' . "\n";
         }
 
         $accessor .= "}\n";
index a11479d..8b3f3a1 100644 (file)
@@ -64,7 +64,7 @@ sub _generate_processattrs {
             }
 
             if ($attr->has_trigger) {
-                $code .= "\$attrs[$index]->{trigger}->( \$instance, \$value, \$attrs[$index] );\n";
+                $code .= "\$attrs[$index]->{trigger}->( \$instance, \$value );\n";
             }
 
             $code .= "\n} else {\n";
index 079aa80..2a80b0e 100644 (file)
@@ -27,7 +27,7 @@ sub new {
                 if ref($instance->{$key}) && $attribute->is_weak_ref;
 
             if ($attribute->has_trigger) {
-                $attribute->trigger->($instance, $args->{$from}, $attribute);
+                $attribute->trigger->($instance, $args->{$from});
             }
         }
         else {
index 223e387..2f3a666 100644 (file)
@@ -44,9 +44,9 @@ is(@trigger, 0, "trigger not called on read");
 
 is($object->attr(50), 50, "setting the value");
 is(@trigger, 1, "trigger was called on read");
-is_deeply([splice @trigger], [[$object, 50, $object->meta->get_attribute('attr')]], "correct arguments to trigger in the accessor");
+is_deeply([splice @trigger], [[$object, 50, undef]], "correct arguments to trigger in the accessor");
 
 my $object2 = Class->new(attr => 100);
 is(@trigger, 1, "trigger was called on new with the attribute specified");
-is_deeply([splice @trigger], [[$object2, 100, $object2->meta->get_attribute('attr')]], "correct arguments to trigger in the constructor");
+is_deeply([splice @trigger], [[$object2, 100, undef]], "correct arguments to trigger in the constructor");