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() ) );
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;
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 {
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();
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 {
my $self = shift;
return $self->associated_class()
- ->inline_deinitialize_class_slot( $self->slots() );
+ ->_inline_deinitialize_class_slot( $self->slots() );
};
}
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 {
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 {
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 {
my $self = shift;
return $self->associated_class()
- ->inline_deinitialize_class_slot( $self->slots() );
+ ->_inline_deinitialize_class_slot( $self->slots() );
};
around _inline_weaken_value => sub {
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 . ';',