use Sub::Name 'subname';
use Devel::GlobalDestruction 'in_global_destruction';
-our $VERSION = '0.79';
+our $VERSION = '0.81';
$VERSION = eval $VERSION;
our $AUTHORITY = 'cpan:STEVAN';
use Moose::Meta::Class;
use Moose::Meta::Role::Method;
use Moose::Meta::Role::Method::Required;
+use Moose::Meta::Role::Method::Conflicting;
use base 'Class::MOP::Module';
name => 'required_methods',
attr_reader => 'get_required_methods_map',
methods => {
- remove => 'remove_required_methods',
- get_keys => 'get_required_method_list',
- existence => 'requires_method',
+ remove => 'remove_required_methods',
+ get_values => 'get_required_method_list',
+ existence => 'requires_method',
}
},
{
default => 'Moose::Meta::Role::Method::Required',
);
+$META->add_attribute(
+ 'conflicting_method_metaclass',
+ reader => 'conflicting_method_metaclass',
+ default => 'Moose::Meta::Role::Method::Conflicting',
+);
+
## some things don't always fit, so they go here ...
sub add_attribute {
}
}
+sub add_conflicting_method {
+ my $self = shift;
+
+ my $method;
+ if (@_ == 1 && blessed($_[0])) {
+ $method = shift;
+ }
+ else {
+ $method = $self->conflicting_method_metaclass->new(@_);
+ }
+
+ $self->add_required_methods($method);
+}
+
## ------------------------------------------------------------------
## method modifiers
Removes the named methods from the role's list of required methods.
+=item B<< $metarole->add_conflicting_method(%params) >>
+
+Instantiate the parameters as a L<Moose::Meta::Role::Method::Conflicting>
+object, then add it to the required method list.
+
=back
=head2 Method modifiers