Add support for immutable classes, by adjusting the generated constructor.
[gitmo/MooseX-UndefTolerant.git] / lib / MooseX / UndefTolerant / Constructor.pm
CommitLineData
2d1c57bd 1package MooseX::UndefTolerant::Constructor;
2use Moose::Role;
3
4around('_generate_slot_initializer', sub {
5 my $orig = shift;
6 my $self = shift;
7 my $attr = $self->_attributes->[$_[0]]->init_arg;
8
9 my $tolerant_code =
10 qq# delete \$params->{'$attr'} unless # .
11 qq# exists \$params->{'$attr'} && defined \$params->{'$attr'};\n#;
12
13 return $tolerant_code . $self->$orig(@_);
14});
15
16no Moose::Role;
17
181;