X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FStrictConstructor%2FTrait%2FClass.pm;h=579b6c25d81156b7fc9f68afdc7ec7545590d34d;hb=0dc0aea2e2ce6e27b488b6e6d304c5ab19649745;hp=f3d2850fd57b2a3fa3306a9ffc17d33a6e961c18;hpb=93a34553840cea4a0dd767248613f775db2d834f;p=gitmo%2FMooseX-StrictConstructor.git diff --git a/lib/MooseX/StrictConstructor/Trait/Class.pm b/lib/MooseX/StrictConstructor/Trait/Class.pm index f3d2850..579b6c2 100644 --- a/lib/MooseX/StrictConstructor/Trait/Class.pm +++ b/lib/MooseX/StrictConstructor/Trait/Class.pm @@ -1,12 +1,10 @@ package MooseX::StrictConstructor::Trait::Class; -use strict; -use warnings; +use Moose::Role; -use B (); -use Carp (); +use namespace::autoclean; -use Moose::Role; +use B (); around '_inline_BUILDALL' => sub { my $orig = shift; @@ -26,12 +24,23 @@ around '_inline_BUILDALL' => sub { 'my %attrs = (' . ( join ' ', @attrs ) . ');', 'my @bad = sort grep { !$attrs{$_} } keys %{ $params };', 'if (@bad) {', - 'Carp::confess "Found unknown attribute(s) passed to the constructor: @bad";', + 'Moose->throw_error("Found unknown attribute(s) passed to the constructor: @bad");', '}', ); -}; +} if $Moose::VERSION >= 1.9900; -no Moose::Role; +# If the base class role is applied first, and then a superclass is added, we +# lose the role. +after superclasses => sub { + my $self = shift; + + return unless @_; + + Moose::Util::MetaRole::apply_base_class_roles( + for => $self->name(), + roles => ['MooseX::StrictConstructor::Role::Object'], + ); +}; 1;