use metaclass;
use Scalar::Util 'blessed';
-use Carp 'confess';
use Moose::Util::TypeConstraints;
+use Moose::Meta::TypeConstraint::Parameterizable;
-our $VERSION = '0.54';
+our $VERSION = '0.65';
+$VERSION = eval $VERSION;
our $AUTHORITY = 'cpan:STEVAN';
use base 'Moose::Meta::TypeConstraint';
my $self = shift;
($self->has_type_parameter)
- || confess "You cannot create a Higher Order type without a type parameter";
+ || Moose->throw_error("You cannot create a Higher Order type without a type parameter");
my $type_parameter = $self->type_parameter;
(blessed $type_parameter && $type_parameter->isa('Moose::Meta::TypeConstraint'))
- || confess "The type parameter must be a Moose meta type";
+ || Moose->throw_error("The type parameter must be a Moose meta type");
foreach my $type (Moose::Util::TypeConstraints::get_all_parameterizable_types()) {
if (my $constraint = $type->generate_constraint_for($self)) {
# if we get here, then we couldn't
# find a way to parameterize this type
- confess "The " . $self->name . " constraint cannot be used, because "
- . $self->parent->name . " doesn't subtype or coerce from a parameterizable type.";
+ Moose->throw_error("The " . $self->name . " constraint cannot be used, because "
+ . $self->parent->name . " doesn't subtype or coerce from a parameterizable type.");
+}
+
+sub create_child_type {
+ my ($self, %opts) = @_;
+ return Moose::Meta::TypeConstraint::Parameterizable->new(%opts, parent=>$self);
}
1;
=item B<equals>
+=item B<create_child_type>
+
=back
=head1 BUGS