}
Class::MOP::load_class($application_class);
+
+ my $deprecation_check = 0;
+
+ if ( exists $args{excludes} && !exists $args{'-excludes'} ) {
+ $args{'-excludes'} = delete $args{excludes};
+ $deprecation_check = 1;
+ }
+ if ( exists $args{alias} && !exists $args{'-alias'} ) {
+ $args{'-alias'} = delete $args{alias};
+ $deprecation_check = 1;
+ }
+
+ if ( $deprecation_check ) {
+
+ Moose::Deprecated::deprecated(
+ feature => 'alias or excludes',
+ message =>
+ 'The alias and excludes options for role application'.
+ ' have been renamed -alias and -excludes'.
+ " (${\$other->name} is consuming ${\$self->name}".
+ " - do you need to upgrade ${\$other->name}?)"
+ );
+ }
+
+ if ( exists $args{'-excludes'} ) {
+
+ # I wish we had coercion here :)
+ $args{'-excludes'} = (
+ ref $args{'-excludes'} eq 'ARRAY'
+ ? $args{'-excludes'}
+ : [ $args{'-excludes'} ]
+ );
+ }
+
return $application_class->new(%args)->apply($self, $other, \%args);
}
default => sub { {} }
));
-__PACKAGE__->meta->add_attribute('fire_alias_excludes_warning' => (
- init_arg => 'fire_alias_excludes_warning',
- reader => 'fire_alias_excludes_warning',
- default => 0
-));
-
sub new {
my ($class, %params) = @_;
-
- if ( exists $params{excludes} || exists $params{alias} ) {
- $params{fire_alias_excludes_warning} = 1;
- }
-
- if ( exists $params{excludes} && !exists $params{'-excludes'} ) {
- $params{'-excludes'} = delete $params{excludes};
- }
- if ( exists $params{alias} && !exists $params{'-alias'} ) {
- $params{'-alias'} = delete $params{alias};
- }
-
- if ( exists $params{'-excludes'} ) {
-
- # I wish we had coercion here :)
- $params{'-excludes'} = (
- ref $params{'-excludes'} eq 'ARRAY'
- ? $params{'-excludes'}
- : [ $params{'-excludes'} ]
- );
- }
-
$class->_new(\%params);
}
sub apply {
my $self = shift;
- if ($self->fire_alias_excludes_warning) {
- Moose::Deprecated::deprecated(
- feature => 'alias or excludes',
- message =>
- "The alias and excludes options for role application have been renamed -alias and -excludes (applying ${\$_[0]->name} to ${\$_[1]->name} - do you need to upgrade ${\$_[1]->name}?)"
- );
- }
-
$self->check_role_exclusions(@_);
$self->check_required_methods(@_);
$self->check_required_attributes(@_);
::stderr_like{ with 'Role' =>
{ excludes => ['thing'], alias => { thing => 'thing2' } };
}
- qr/\QThe alias and excludes options for role application have been renamed -alias and -excludes (applying Role to Foo - do you need to upgrade Foo?)/,
+ qr/\QThe alias and excludes options for role application have been renamed -alias and -excludes (Foo is consuming Role - do you need to upgrade Foo?)/,
'passing excludes or alias with a leading dash warns';
::ok(
!Foo->meta->has_method('thing'),
Foo->meta->has_method('thing2'),
'thing2 method is created as alias in role application'
);
- } );
- }
+ }
+ );
+}
{
package Pack1;
q{},
'Providing a accessor for a String trait avoids default is warning';
}
+<<<<<<< HEAD
+=======
+ qr/\QThe alias and excludes options for role application have been renamed -alias and -excludes (Foo is consuming Role - do you need to upgrade Foo?)/,
+ 'passing excludes or alias with a leading dash warns';
+ ::ok(
+ !Foo->meta->has_method('thing'),
+ 'thing method is excluded from role application'
+ );
+ ::ok(
+ Foo->meta->has_method('thing2'),
+ 'thing2 method is created as alias in role application'
+>>>>>>> Move logic into Moose::Meta::Role for deprecation check of excludes and alias. Add friendlier wording to the warning. Update the test to check for new wording
);
sub _build_foo { q{} }