aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2011-03-04 20:59:13 -0600
committerJesse Luehrs <doy@tozt.net>2011-03-04 20:59:13 -0600
commit065f3d3d9498c82e25bc2e4c4d175d1ef1a9233f (patch)
treee645867b257d8733513e806e49f26f2a214ddc47
parentb906915263f2a47af1a711575718aea0133564b2 (diff)
downloadreaction-065f3d3d9498c82e25bc2e4c4d175d1ef1a9233f.tar.gz
reaction-065f3d3d9498c82e25bc2e4c4d175d1ef1a9233f.zip
add warning for people who aren't using Reaction::Role(::Parameterized)?HEADmaster
-rw-r--r--lib/Reaction/InterfaceModel/Search/Spec.pm2
-rw-r--r--lib/Reaction/InterfaceModel/Search/UpdateSpec.pm2
-rw-r--r--lib/Reaction/Role/Meta/Class.pm31
3 files changed, 33 insertions, 2 deletions
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;