Make prereq requirements explicit in code
[gitmo/MooseX-ClassAttribute.git] / lib / MooseX / ClassAttribute / Trait / Attribute.pm
index 966eb08..5519c54 100644 (file)
@@ -42,7 +42,8 @@ sub _initialize {
     my $metaclass = shift;
 
     if ( $self->has_default() ) {
-        $self->set_value( undef, $self->default() );
+        $self->set_value( undef,
+            $self->default( $self->associated_class() ) );
     }
     elsif ( $self->has_builder() ) {
         $self->set_value( undef, $self->_call_builder( $metaclass->name() ) );
@@ -55,8 +56,8 @@ around default => sub {
 
     my $default = $self->$orig();
 
-    if ( $self->is_default_a_coderef() ) {
-        return $default->( $self->associated_class() );
+    if ( $self->is_default_a_coderef() && @_ ) {
+        return $default->(@_);
     }
 
     return $default;
@@ -119,7 +120,7 @@ if ( $Moose::VERSION < 1.99 ) {
         my $self = shift;
 
         return $self->associated_class()
-            ->inline_get_class_slot_value( $self->slots() );
+            ->_inline_get_class_slot_value( $self->slots() );
     };
 
     around inline_set => sub {
@@ -131,10 +132,10 @@ if ( $Moose::VERSION < 1.99 ) {
         my $meta = $self->associated_class();
 
         my $code
-            = $meta->inline_set_class_slot_value( $self->slots(), $value )
+            = $meta->_inline_set_class_slot_value( $self->slots(), $value )
             . ";";
         $code
-            .= $meta->inline_weaken_class_slot_value( $self->slots(), $value )
+            .= $meta->_inline_weaken_class_slot_value( $self->slots(), $value )
             . "    if ref $value;"
             if $self->is_weak_ref();
 
@@ -146,7 +147,7 @@ if ( $Moose::VERSION < 1.99 ) {
         my $self = shift;
 
         return $self->associated_class()
-            ->inline_is_class_slot_initialized( $self->slots() );
+            ->_inline_is_class_slot_initialized( $self->slots() );
     };
 
     around inline_clear => sub {
@@ -154,7 +155,7 @@ if ( $Moose::VERSION < 1.99 ) {
         my $self = shift;
 
         return $self->associated_class()
-            ->inline_deinitialize_class_slot( $self->slots() );
+            ->_inline_deinitialize_class_slot( $self->slots() );
     };
 }
 else {
@@ -163,7 +164,7 @@ else {
         my $self = shift;
 
         return $self->associated_class()
-            ->inline_get_class_slot_value( $self->slots() );
+            ->_inline_get_class_slot_value( $self->slots() );
     };
 
     around _inline_instance_set => sub {
@@ -173,7 +174,7 @@ else {
         my $value = shift;
 
         return $self->associated_class()
-            ->inline_set_class_slot_value( $self->slots(), $value );
+            ->_inline_set_class_slot_value( $self->slots(), $value );
     };
 
     around _inline_instance_has => sub {
@@ -181,7 +182,7 @@ else {
         my $self = shift;
 
         return $self->associated_class()
-            ->inline_is_class_slot_initialized( $self->slots() );
+            ->_inline_is_class_slot_initialized( $self->slots() );
     };
 
     around _inline_instance_clear => sub {
@@ -189,7 +190,7 @@ else {
         my $self = shift;
 
         return $self->associated_class()
-            ->inline_deinitialize_class_slot( $self->slots() );
+            ->_inline_deinitialize_class_slot( $self->slots() );
     };
 
     around _inline_weaken_value => sub {
@@ -201,7 +202,7 @@ else {
         return unless $self->is_weak_ref();
 
         return (
-            $self->associated_class->inline_weaken_class_slot_value(
+            $self->associated_class->_inline_weaken_class_slot_value(
                 $self->slots(), $value
             ),
             'if ref ' . $value . ';',