diff options
author | doy <doy@tozt.net> | 2009-04-08 00:09:55 -0500 |
---|---|---|
committer | doy <doy@tozt.net> | 2009-04-08 00:09:55 -0500 |
commit | 42b51eaa66c76046918efa04a46e36b73251414a (patch) | |
tree | c641465c97f7619de993f25247f3f01bad8af50b /lib | |
parent | 77ca40a1e55f9e082a08480d40e8099d34cdc80c (diff) | |
download | moosex-nonmoose-42b51eaa66c76046918efa04a46e36b73251414a.tar.gz moosex-nonmoose-42b51eaa66c76046918efa04a46e36b73251414a.zip |
error if we try to extend moose classes
Diffstat (limited to 'lib')
-rw-r--r-- | lib/MooseX/NonMoose.pm | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/MooseX/NonMoose.pm b/lib/MooseX/NonMoose.pm index d3004e0..7a41b2d 100644 --- a/lib/MooseX/NonMoose.pm +++ b/lib/MooseX/NonMoose.pm @@ -8,8 +8,15 @@ Moose::Exporter->setup_import_methods( sub extends_nonmoose { my $caller = shift; - my @superclasses = (@_, 'Moose::Object'); - Moose::extends($caller, @superclasses); + + my @moose_classes = grep { $_->isa('Moose::Object') } @_; + Moose->throw_error( + 'extends_nonmoose can only be used on non-Moose classes; ' + . join(', ', @moose_classes) + . (@moose_classes == 1 ? ' is a Moose class' : ' are Moose classes') + ) if @moose_classes; + + Moose::extends($caller, @_, 'Moose::Object'); Class::MOP::Class->initialize($caller)->add_method(new => sub { my $class = shift; my $meta = Class::MOP::Class->initialize($class); |