Hi all,
    Is this a Moose make_immutable bug?

# a.pm

package a;
use Moose::Role;

1;

# b.pm
package b;
use Moose;
around 'BUILDARGS' => sub {
    my $orig = shift;
    my $self = shift;
    with 'a';
    $self->$orig;
};
sub BUILD {
    my $self  = shift;
    $self->meta->make_immutable;
}

1;

#a.pl
#!/usr/bin/perl
use strict;
use warnings;

use b;

my $c = b->new();
my $d = b->new();




$perl a.pl
The 'Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x6d7a90)'
method cannot be called on an immutable instance at
/opt/csw/lib/perl/site_perl/Class/MOP/Class/Immutable/Trait.pm line 32

Class::MOP::Class::Immutable::Trait::_immutable_cannot_call('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x6d7a90)')
called at /opt/csw/lib/perl/site_perl/Moose/Meta/Class/Immutable/Trait.pm
line 17
        Class::MOP::Class:::around('CODE(0x3b3580)',
'Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x6d7a90)',
'Moose::Meta::Role=HASH(0x7cdaa0)') called at
/opt/csw/lib/perl/site_perl/Class/MOP/Method/Wrapped.pm line 162

Class::MOP::Method::Wrapped::__ANON__('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x6d7a90)',
'Moose::Meta::Role=HASH(0x7cdaa0)') called at
/opt/csw/lib/perl/site_perl/Class/MOP/Method/Wrapped.pm line 91

Class::MOP::Class::Immutable::Moose::Meta::Class::add_role('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x6d7a90)',
'Moose::Meta::Role=HASH(0x7cdaa0)') called at
/opt/csw/lib/perl/site_perl/Moose/Meta/Role/Application/ToClass.pm line 38

Moose::Meta::Role::Application::ToClass::apply('Moose::Meta::Role::Application::ToClass=HASH(0x7bd1b0)',
'Moose::Meta::Role=HASH(0x7cdaa0)',
'Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x6d7a90)',
'HASH(0x7d22d0)') called at /opt/csw/lib/perl/site_perl/Moose/Meta/Role.pm
line 470
        Moose::Meta::Role::apply('Moose::Meta::Role=HASH(0x7cdaa0)',
'Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x6d7a90)') called
at /opt/csw/lib/perl/site_perl/Moose/Util.pm line 160

Moose::Util::_apply_all_roles('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x6d7a90)',
undef, 'a') called at /opt/csw/lib/perl/site_perl/Moose/Util.pm line 99

Moose::Util::apply_all_roles('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x6d7a90)',
'a') called at /opt/csw/lib/perl/site_perl/Moose.pm line 67

Moose::with('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x6d7a90)',
'a') called at /opt/csw/lib/perl/site_perl/Moose/Exporter.pm line 370
        Moose::with('a') called at b.pm line 6
        Class::MOP::Class:::around('CODE(0x626410)', 'b') called at
/opt/csw/lib/perl/site_perl/Class/MOP/Method/Wrapped.pm line 162
        Class::MOP::Method::Wrapped::__ANON__('b') called at
/opt/csw/lib/perl/site_perl/Class/MOP/Method/Wrapped.pm line 91
        b::BUILDARGS('b') called at constructor b::new (defined at
b.pmline 11) line 6
        b::new('b') called at a.pl line 8



-- 
woosley.xu.    http://twitter.com/redicaps

Reply via email to