}
if(!defined $name){
- if(!defined($name = $args{name})){
- $name = '__ANON__';
- }
+ $name = $args{name};
}
$args{name} = $name;
$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};
$constraint = Mouse::Meta::TypeConstraint->new(%args);
}
- return $TYPE{$name} = $constraint;
+ if(defined $name){
+ return $TYPE{$name} = $constraint;
+ }
+ else{
+ return $constraint;
+ }
}
sub 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);
=head1 VERSION
-This document describes Mouse version 0.43
+This document describes Mouse version 0.50
=head2 SYNOPSIS
=over 4
-=item C<< subtype 'Name' => as 'Parent' => where { } ... -> Mouse::Meta::TypeConstraint >>
+=item C<< type $name => where { } ... -> Mouse::Meta::TypeConstraint >>
+
+=item C<< subtype $name => as $parent => where { } ... -> Mouse::Meta::TypeConstraint >>
-=item C<< subtype as 'Parent' => where { } ... -> Mouse::Meta::TypeConstraint >>
+=item C<< subtype as $parent => where { } ... -> Mouse::Meta::TypeConstraint >>
=item C<< class_type ($class, ?$options) -> Mouse::Meta::TypeConstraint >>
=item C<< role_type ($role, ?$options) -> Mouse::Meta::TypeConstraint >>
+=item C<< duck_type($name, @methods | \@methods) -> Mouse::Meta::TypeConstraint >>
+
+=item C<< duck_type(\@methods) -> Mouse::Meta::TypeConstraint >>
+
+=item C<< enum($name, @values | \@values) -> Mouse::Meta::TypeConstraint >>
+
=item C<< enum (\@values) -> Mouse::Meta::TypeConstraint >>
+=item C<< coerce $type => from $another_type, via { }, ... >>
+
=back
=over 4