X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FAttribute.pm;h=4387bcd4616961b923edfb1c26265171dc753e32;hb=abfdffe0146e788b3b808398fb075231163c3948;hp=f0766689602cf7895bbe952600d4121dc4821aba;hpb=20e25eb99981654f64a6b4a9139e55ddca399981;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Meta/Attribute.pm b/lib/Mouse/Meta/Attribute.pm index f076668..4387bcd 100644 --- a/lib/Mouse/Meta/Attribute.pm +++ b/lib/Mouse/Meta/Attribute.pm @@ -7,17 +7,16 @@ use Carp 'confess'; use Scalar::Util (); sub new { - my $class = shift; - my %args = @_; + my ($class, $name, %options) = @_; - my $name = $args{name}; + $options{name} = $name; - $args{init_arg} = $name - unless exists $args{init_arg}; + $options{init_arg} = $name + unless exists $options{init_arg}; - $args{is} ||= ''; + $options{is} ||= ''; - bless \%args, $class; + bless \%options, $class; } sub name { $_[0]->{name} } @@ -76,7 +75,7 @@ sub generate_accessor { my $accessor = "sub {\n"; if ($attribute->_is_metadata eq 'rw') { - $accessor .= 'if (scalar(@_) >= 2) {' . "\n"; + $accessor .= 'if (@_ >= 2) {' . "\n"; my $value = '$_[1]'; @@ -205,6 +204,9 @@ sub create { if exists $args{coerce}; if (exists $args{isa}) { + confess "Mouse does not yet support parameterized types (rt.cpan.org #39795)" + if $args{isa} =~ /\[.*\]/; + my $type_constraint = delete $args{isa}; $type_constraint =~ s/\s//g; my @type_constraints = split /\|/, $type_constraint; @@ -232,7 +234,7 @@ sub create { $args{find_type_constraint} = $code; } - my $attribute = $self->new(%args); + my $attribute = $self->new($name, %args); $attribute->_create_args(\%args);