X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FUtil%2FTypeConstraints.pm;h=8556c4f5d5044e7dbcf624e4c2a84bbbf359a9f8;hb=1f6046f098167a6bc7699ad8d844d1b72c49f634;hp=3915dc7a2787fa0121579d3fd3ffd4f57306e8ab;hpb=d18ffd1248ee7bd5f46fa42f67688e1c06ff1160;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Util/TypeConstraints.pm b/lib/Mouse/Util/TypeConstraints.pm index 3915dc7..8556c4f 100644 --- a/lib/Mouse/Util/TypeConstraints.pm +++ b/lib/Mouse/Util/TypeConstraints.pm @@ -82,13 +82,13 @@ $TYPE{HashRef} {constraint_generator} = \&_parameterize_HashRef_for; # sugars -sub as ($) { (as => $_[0]) } -sub where (&) { (where => $_[0]) } -sub message (&) { (message => $_[0]) } -sub optimize_as (&) { (optimize_as => $_[0]) } +sub as ($) { (as => $_[0]) } ## no critic +sub where (&) { (where => $_[0]) } ## no critic +sub message (&) { (message => $_[0]) } ## no critic +sub optimize_as (&) { (optimize_as => $_[0]) } ## no critic sub from { @_ } -sub via (&) { $_[0] } +sub via (&) { $_[0] } ## no critic # type utilities @@ -227,7 +227,8 @@ sub duck_type { @methods = (@_ == 1 && ref($_[0]) eq 'ARRAY') ? @{$_[0]} : @_; # DuckType - return _create_type 'type', $name => ( + return _create_type 'subtype', $name => ( + as => 'Object', optimized_as => Mouse::Util::generate_can_predicate_for(\@methods), ); } @@ -242,7 +243,8 @@ sub enum { %valid = map{ $_ => undef } (@_ == 1 && ref($_[0]) eq 'ARRAY' ? @{$_[0]} : @_); # EnumType - return _create_type 'type', $name => ( + return _create_type 'subtype', $name => ( + as => 'Str', optimized_as => sub{ defined($_[0]) && !ref($_[0]) && exists $valid{$_[0]} }, ); } @@ -404,7 +406,7 @@ Mouse::Util::TypeConstraints - Type constraint system for Mouse =head1 VERSION -This document describes Mouse version 0.50_07 +This document describes Mouse version 0.51 =head2 SYNOPSIS