aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorKaren Etheridge <karen@etheridge.ca>2010-07-29 15:18:15 -0700
committerKaren Etheridge <karen@etheridge.ca>2010-07-29 15:40:34 -0700
commita193e05da9516baf524330e059841ba63a6a997c (patch)
tree959dfe41e54ecc94f4ec23eb19ecaf20b14f19b2 /lib
parent0d42c8e8c15eb1addd4fb1b1669e89cffc36d7e6 (diff)
downloadmx-alwayscoerce-a193e05da9516baf524330e059841ba63a6a997c.tar.gz
mx-alwayscoerce-a193e05da9516baf524330e059841ba63a6a997c.zip
potential fixes for role problems.. doesnt solve everything though; will have to see if MX::ClassAttribute is partially to blame here
(See https://rt.cpan.org/Public/Bug/Display.html?id=59844)
Diffstat (limited to 'lib')
-rw-r--r--lib/MooseX/AlwaysCoerce.pm12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/MooseX/AlwaysCoerce.pm b/lib/MooseX/AlwaysCoerce.pm
index 0f2c398..96b6213 100644
--- a/lib/MooseX/AlwaysCoerce.pm
+++ b/lib/MooseX/AlwaysCoerce.pm
@@ -68,6 +68,7 @@ Use C<< coerce => 0 >> to disable a coercion explicitly.
use namespace::autoclean;
use Moose::Role;
use Moose::Util::TypeConstraints;
+ use MooseX::ClassAttribute;
around add_class_attribute => sub {
my $next = shift;
@@ -82,18 +83,27 @@ Use C<< coerce => 0 >> to disable a coercion explicitly.
}
my (undef, undef, $init_meta) = Moose::Exporter->build_import_methods(
+
install => [ qw(import unimport) ],
+
class_metaroles => {
attribute => ['MooseX::AlwaysCoerce::Role::Meta::Attribute'],
class => ['MooseX::AlwaysCoerce::Role::Meta::Class'],
},
+
+ also => ['MooseX::ClassAttribute'],
);
sub init_meta {
my ($class, %options) = @_;
my $for_class = $options{for_class};
- MooseX::ClassAttribute->import({ into => $for_class });
+ # Bring this in only if we are being applied to a
+ # metaclass, but not a metarole.
+ if (Class::MOP::class_of($for_class)->isa('Class::MOP::Class'))
+ {
+ MooseX::ClassAttribute->import({ into => $for_class });
+ }
# call generated method to do the rest of the work.
goto $init_meta;