X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FUtil%2FTypeConstraints.pm;h=38961822f2d169ba2443dfeb5c0ab850c72fbe8f;hb=939c3d875f956f33b2c351c951fdd1dc125f196c;hp=a3645e1eaaf3d8edcbfef711f3c4a24ac74ac22c;hpb=87f1f3d2110a14bb0bb9366c476505982afe95bd;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Util/TypeConstraints.pm b/lib/Mouse/Util/TypeConstraints.pm index a3645e1..3896182 100644 --- a/lib/Mouse/Util/TypeConstraints.pm +++ b/lib/Mouse/Util/TypeConstraints.pm @@ -99,9 +99,7 @@ sub _create_type{ } if(!defined $name){ - if(!defined($name = $args{name})){ - $name = '__ANON__'; - } + $name = $args{name}; } $args{name} = $name; @@ -110,16 +108,20 @@ sub _create_type{ $parent = delete $args{as}; if(!$parent){ $parent = delete $args{name}; - $name = '__ANON__'; + $name = undef; } } - my $package_defined_in = $args{package_defined_in} ||= caller(1); - - my $existing = $TYPE{$name}; - if($existing && $existing->{package_defined_in} ne $package_defined_in){ - confess("The type constraint '$name' has already been created in " - . "$existing->{package_defined_in} and cannot be created again in $package_defined_in"); + if(defined $name){ + my $package_defined_in = $args{package_defined_in} ||= caller(1); + my $existing = $TYPE{$name}; + if($existing && $existing->{package_defined_in} ne $package_defined_in){ + confess("The type constraint '$name' has already been created in " + . "$existing->{package_defined_in} and cannot be created again in $package_defined_in"); + } + } + else{ + $args{name} = '__ANON__'; } $args{constraint} = delete $args{where} if exists $args{where}; @@ -133,7 +135,12 @@ sub _create_type{ $constraint = Mouse::Meta::TypeConstraint->new(%args); } - return $TYPE{$name} = $constraint; + if(defined $name){ + return $TYPE{$name} = $constraint; + } + else{ + return $constraint; + } } sub type { @@ -192,15 +199,6 @@ sub duck_type { ); } -sub typecast_constraints { # DEPRECATED - my($class, $pkg, $type, $value) = @_; - Carp::croak("wrong arguments count") unless @_ == 4; - - Carp::cluck("typecast_constraints() has been deprecated, which was an internal utility anyway"); - - return $type->coerce($value); -} - sub enum { my($name, %valid); @@ -366,7 +364,7 @@ Mouse::Util::TypeConstraints - Type constraint system for Mouse =head1 VERSION -This document describes Mouse version 0.43 +This document describes Mouse version 0.4501 =head2 SYNOPSIS