Moose icon indicating copy to clipboard operation
Moose copied to clipboard

support method modifiers for overridden accessor

Open potatogim opened this issue 6 years ago • 1 comments

method modifiers for overrided attribute's accessors(reader/writer/accessor) are not executed when I try to use method modifiers in child class for that.

#!/usr/bin/env perl 

{
    package My;

    use Moose;

    has 'name' =>
    (
        is      => 'ro',
        isa     => 'Str',
        default => 'noname',
        writer  => 'set_name',
    );

    around 'set_name' => sub
    {
        my $orig = shift;
        my $self = shift;

        print __PACKAGE__ . "::set_name\n";

        $self->$orig(@_);
    };
}

{
    package My::Child;

    use Moose;

    extends 'My';

    has '+name' =>
    (
        coerce => 1,
    );

    around 'set_name' => sub
    {
        my $orig = shift;
        my $self = shift;

        print __PACKAGE__ . "::set_name\n";

        $self->$orig(@_);
    };
}

my $mychild = My::Child->new();

printf "Name: %s\n", $mychild->set_name('potatogim');
# before
> perl test.pl
My::Child::set_name
Name: potatogim

# after
> perl test.pl
My::Child::set_name
My::set_name
Name: potatogim
# Test result
> make test
...
t/type_constraints/type_names.t .................................. ok   
t/type_constraints/type_notation_parser.t ........................ ok    
t/type_constraints/types_and_undef.t ............................. ok    
t/type_constraints/union_is_a_type_of.t .......................... ok    
t/type_constraints/union_types.t ................................. ok    
t/type_constraints/union_types_and_coercions.t ................... ok    
t/type_constraints/util_find_type_constraint.t ................... ok    
t/type_constraints/util_more_type_coercion.t ..................... ok    
t/type_constraints/util_std_type_constraints.t ................... ok      
t/type_constraints/util_type_coercion.t .......................... ok    
t/type_constraints/util_type_constraints.t ....................... ok     
t/type_constraints/util_type_constraints_export.t ................ ok   
t/type_constraints/util_type_reloading.t ......................... ok   
t/type_constraints/with-specio.t ................................. ok   
t/type_constraints/with-type-tiny.t .............................. ok   
All tests successful.
Files=477, Tests=17326, 161 wallclock secs ( 2.83 usr  0.66 sys + 146.96 cusr 10.50 csys = 160.95 CPU)
Result: PASS

Signed-off-by: Ji-Hyeon Gim [email protected]

potatogim avatar May 11 '19 20:05 potatogim

Hello! Could you let me know what kinds of things needed for this PR? 😄

potatogim avatar Nov 13 '20 18:11 potatogim