From 065f3d3d9498c82e25bc2e4c4d175d1ef1a9233f Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 4 Mar 2011 20:59:13 -0600 Subject: add warning for people who aren't using Reaction::Role(::Parameterized)? --- lib/Reaction/InterfaceModel/Search/Spec.pm | 2 +- lib/Reaction/InterfaceModel/Search/UpdateSpec.pm | 2 +- lib/Reaction/Role/Meta/Class.pm | 31 ++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/Reaction/InterfaceModel/Search/Spec.pm b/lib/Reaction/InterfaceModel/Search/Spec.pm index 1100840..92bc926 100644 --- a/lib/Reaction/InterfaceModel/Search/Spec.pm +++ b/lib/Reaction/InterfaceModel/Search/Spec.pm @@ -1,6 +1,6 @@ package Reaction::InterfaceModel::Search::Spec; -use Moose::Role; +use Reaction::Role; use Method::Signatures::Simple; use JSON::Any; use Scalar::Util qw(weaken); diff --git a/lib/Reaction/InterfaceModel/Search/UpdateSpec.pm b/lib/Reaction/InterfaceModel/Search/UpdateSpec.pm index 5c32b8f..6b04849 100644 --- a/lib/Reaction/InterfaceModel/Search/UpdateSpec.pm +++ b/lib/Reaction/InterfaceModel/Search/UpdateSpec.pm @@ -1,6 +1,6 @@ package Reaction::InterfaceModel::Search::UpdateSpec; -use Moose::Role; +use Reaction::Role; use Method::Signatures::Simple; use aliased 'Reaction::InterfaceModel::Search::Spec', 'SearchSpec'; use namespace::clean -except => 'meta'; diff --git a/lib/Reaction/Role/Meta/Class.pm b/lib/Reaction/Role/Meta/Class.pm index 6d91e3f..3e3841c 100644 --- a/lib/Reaction/Role/Meta/Class.pm +++ b/lib/Reaction/Role/Meta/Class.pm @@ -9,4 +9,35 @@ around initialize => sub { $super->($class, $pkg, 'attribute_metaclass' => 'Reaction::Meta::Attribute', @_ ); }; +around add_role => sub { + my $orig = shift; + my $self = shift; + my ($role) = @_; + + my @roles = grep { !$_->isa('Moose::Meta::Role::Composite') } + $role->calculate_all_roles; + my @bad_roles = map { Moose::Util::does_role($_, 'MooseX::Role::Parameterized::Meta::Trait::Parameterized') ? $_->genitor->name : $_->name } + grep { $_->get_attribute_list > 0 } + grep { !Moose::Util::does_role($_->applied_attribute_metaclass, 'Reaction::Role::Meta::Attribute') } + @roles; + + if (@bad_roles) { + my $plural = @bad_roles > 1; + warn "You are applying the role" . ($plural ? "s " : " ") + . join(", ", @bad_roles) + . " to the Reaction::Class " . $self->name + . ", but " . ($plural ? "these roles do" : "that role does") + . " not use Reaction::Role or" + . " Reaction::Role::Parameterized. In Moose versions greater than" + . " 2.0, this will cause the special behavior of Reaction" + . " attributes to no longer be applied to attributes defined" + . " in " . ($plural ? "these roles" : "this role") + . ". You should replace 'use Moose::Role' with" + . " 'use Reaction::Role' or 'use MooseX::Role::Parameterized' with" + . " 'use Reaction::Role::Parameterized'."; + } + + $self->$orig(@_); +} if Moose->VERSION >= 1.9900; + 1; -- cgit v1.2.3-54-g00ecf