+++ /dev/null
-package MooseX::StrictConstructor::Role::Meta::Class;
-
-use strict;
-use warnings;
-
-use B ();
-use Carp ();
-
-use Moose::Role;
-
-around '_inline_BUILDALL' => sub {
- my $orig = shift;
- my $self = shift;
-
- my @source = $self->$orig();
-
- my @attrs = (
- '__INSTANCE__ => 1,',
- map { B::perlstring($_) . ' => 1,' }
- grep {defined}
- map { $_->init_arg() } $self->get_all_attributes()
- );
-
- return (
- @source,
- 'my %attrs = (' . join(' ', @attrs) . ');',
- 'my @bad = sort grep { !$attrs{$_} } keys %{ $params };',
- 'if (@bad) {',
- 'Carp::confess "Found unknown attribute(s) passed to the constructor: @bad";',
- '}',
- );
-};
-
-no Moose::Role;
-
-1;
-
-# ABSTRACT: A role to make immutable constructors strict
-
-__END__
-
-=pod
-
-=head1 SYNOPSIS
-
- Moose::Util::MetaRole::apply_metaroles(
- for_class => $caller,
- class => {
- constructor =>
- ['MooseX::StrictConstructor::Role::Meta::Method::Constructor'],
- },
- );
-
-=head1 DESCRIPTION
-
-This role simply wraps C<_inline_BUILDALL()> (from
-C<Moose::Meta::Class>) so that immutable classes have a
-strict constructor.
-
-=cut