X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FMeta%2FTypeConstraint.pm;h=05a3f440fd247d88ed6a371a4a03d88435f45496;hb=b3853db9543d3f4da31a681df2300fc2de3c3077;hp=fa9bc8add92ddf0e5ddf03eb39452b2ccc161f49;hpb=c7d8fe950098e91780355ed7a91f066e682eb4a3;p=gitmo%2FMoose.git diff --git a/lib/Moose/Meta/TypeConstraint.pm b/lib/Moose/Meta/TypeConstraint.pm index fa9bc8a..05a3f44 100644 --- a/lib/Moose/Meta/TypeConstraint.pm +++ b/lib/Moose/Meta/TypeConstraint.pm @@ -8,12 +8,11 @@ use metaclass; use overload '""' => sub { shift->name }, # stringify to tc name fallback => 1; -use Carp 'confess'; use Scalar::Util qw(blessed refaddr); use base qw(Class::MOP::Object); -our $VERSION = '0.55_02'; +our $VERSION = '0.59'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; @@ -66,7 +65,7 @@ sub new { return $self; } -sub coerce { ((shift)->coercion || confess "Cannot coerce without a type coercion")->coerce(@_) } +sub coerce { ((shift)->coercion || Moose->throw_error("Cannot coerce without a type coercion"))->coerce(@_) } sub check { $_[0]->_compiled_type_constraint->($_[1]) ? 1 : undef } sub validate { my ($self, $value) = @_; @@ -155,9 +154,9 @@ sub _actually_compile_type_constraint { my $check = $self->constraint; (defined $check) - || confess "Could not compile type constraint '" + || Moose->throw_error("Could not compile type constraint '" . $self->name - . "' because no constraint check"; + . "' because no constraint check"); return $self->_compile_subtype($check) if $self->has_parent; @@ -170,7 +169,7 @@ sub _compile_hand_optimized_type_constraint { my $type_constraint = $self->hand_optimized_type_constraint; - confess unless ref $type_constraint; + Moose->throw_error("Hand optimized type constraint is not a code reference") unless ref $type_constraint; return $type_constraint; } @@ -247,6 +246,12 @@ sub _collect_all_parents { return @parents; } +sub create_childtype { + my ($self, %opts) = @_; + my $class = ref $self; + return $class->new(%opts, parent => $self); +} + ## this should get deprecated actually ... sub union { Carp::croak "DEPRECATED" } @@ -348,6 +353,8 @@ Returns true if this type has a parent type. =item B +=item B + =back =head2 DEPRECATED METHOD