main package. This applied to Moose and Moose::Role, among
others. (nothingmuch)
+ * Moose::Meta::Attribute
+ - Don't remove attribute accessors we never installed, during
+ remove_accessors. (doy)
+
0.92 Tue, Sep 22, 2009
* Moose::Util::TypeConstraints
- added the match_on_type operator (Stevan)
use warnings;
use Scalar::Util 'blessed', 'weaken';
+use List::MoreUtils 'any';
use Try::Tiny;
use overload ();
my %handles = $self->_canonicalize_handles;
my $associated_class = $self->associated_class;
foreach my $handle (keys %handles) {
+ next unless any { $handle eq $_ } $self->associated_methods;
$self->associated_class->remove_method($handle);
}
}
handles => sub { map { $_, $_ } $_[1]->get_all_method_names },
);
} "Can't override exisiting class method in delegate";
- { our $TODO; local $TODO = 'if add_attribute dies because a delegate would have overridden a local method, the rollback code removes the original method';
::can_ok('Parent', 'parent_method_1');
- }
::lives_ok {
has child_i => (
is => "ro",
default => sub { ChildI->new },
handles => sub {
- map { $_, $_ } grep { !/^parent_method_1$/ }
+ map { $_, $_ } grep { !/^parent_method_1|meta$/ }
$_[1]->get_all_method_names;
},
);
is( $p->child_g_method_1, "g1", "delegate to moose class without reader (child_g_method_1)" );
can_ok( $p, "child_i_method_1" );
-{ local $TODO = 'if add_attribute dies because a delegate would have overridden a local method, the rollback code removes the original method';
-lives_and { is( $p->parent_method_1, "parent_1", "delegate doesn't override existing method" ) };
-}
+is( $p->parent_method_1, "parent_1", "delegate doesn't override existing method" );