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} ) {
- Moose::Deprecated::deprecated(
- feature => 'alias or excludes',
- message =>
- "The alias and excludes options for role application have been renamed -alias and -excludes"
- );
+ $params{fire_alias_excludes_warning} = 1;
}
if ( exists $params{excludes} && !exists $params{'-excludes'} ) {
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/,
+ 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?)/,
'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 writer for a String trait avoids default is warning';
}
- );
}
{