use Moose::Meta::Role::Composite;
-our $VERSION = '0.79';
+our $VERSION = '0.89';
$VERSION = eval $VERSION;
our $AUTHORITY = 'cpan:STEVAN';
sub get_exclusions_for_role {
my ($self, $role) = @_;
$role = $role->name if blessed $role;
- if ($self->role_params->{$role} && defined $self->role_params->{$role}->{excludes}) {
- if (ref $self->role_params->{$role}->{excludes} eq 'ARRAY') {
- return $self->role_params->{$role}->{excludes};
+ my $excludes_key = exists $self->role_params->{$role}->{'-excludes'} ?
+ '-excludes' : 'excludes';
+ if ($self->role_params->{$role} && defined $self->role_params->{$role}->{$excludes_key}) {
+ if (ref $self->role_params->{$role}->{$excludes_key} eq 'ARRAY') {
+ return $self->role_params->{$role}->{$excludes_key};
}
- return [ $self->role_params->{$role}->{excludes} ];
+ return [ $self->role_params->{$role}->{$excludes_key} ];
}
return [];
}
sub get_method_aliases_for_role {
my ($self, $role) = @_;
$role = $role->name if blessed $role;
- if ($self->role_params->{$role} && defined $self->role_params->{$role}->{alias}) {
- return $self->role_params->{$role}->{alias};
+ my $alias_key = exists $self->role_params->{$role}->{'-alias'} ?
+ '-alias' : 'alias';
+ if ($self->role_params->{$role} && defined $self->role_params->{$role}->{$alias_key}) {
+ return $self->role_params->{$role}->{$alias_key};
}
return {};
}
my (%seen, %method_map);
foreach my $method (@all_methods) {
- if (exists $seen{$method->{name}}) {
- if ($seen{$method->{name}}->body != $method->{method}->body) {
- $c->add_required_methods($method->{name});
+ my $seen = $seen{$method->{name}};
+
+ if ($seen) {
+ if ($seen->{method}->body != $method->{method}->body) {
+ $c->add_conflicting_method(
+ name => $method->{name},
+ roles => [$method->{role}->name, $seen->{role}->name],
+ );
+
delete $method_map{$method->{name}};
next;
}
}
- $seen{$method->{name}} = $method->{method};
+ $seen{$method->{name}} = $method;
$method_map{$method->{name}} = $method->{method};
}