X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FTypeRegistry.pm;fp=lib%2FMouse%2FTypeRegistry.pm;h=c722ec1ba43f5eb0812c4ea9aeeaf6c89816f0fb;hb=d3982c7e7f662fb205f4fca0a264c3479bba4438;hp=b5d069c913f4a78ad7c6733583538b059690da76;hpb=085a5c2d90e1c478ceefa2cce7b8d62b37ceaac0;p=gitmo%2FMouse.git diff --git a/lib/Mouse/TypeRegistry.pm b/lib/Mouse/TypeRegistry.pm index b5d069c..c722ec1 100644 --- a/lib/Mouse/TypeRegistry.pm +++ b/lib/Mouse/TypeRegistry.pm @@ -47,7 +47,7 @@ my $optimized_constraints; my $optimized_constraints_base; { no warnings 'uninitialized'; - $optimized_constraints = $optimized_constraints_base = { + $SUBTYPE = { Any => sub { 1 }, Item => sub { 1 }, Bool => sub { @@ -79,7 +79,12 @@ my $optimized_constraints_base; Object => sub { blessed($_) && blessed($_) ne 'Regexp' }, }; + + sub optimized_constraints { $SUBTYPE } + my @SUBTYPE_KEYS = keys %{ $SUBTYPE }; + sub list_all_builtin_type_constraints { @SUBTYPE_KEYS } } + sub _subtype { my $pkg = caller(0); my($name, %conf) = @_; @@ -90,7 +95,6 @@ sub _subtype { my $stuff = $conf{where} || optimized_constraints()->{$as}; $SUBTYPE->{$name} = $stuff; - $optimized_constraints = +{ %{ $SUBTYPE }, %{ $optimized_constraints_base } }; } sub _coerce { @@ -150,12 +154,6 @@ sub typecast_constraints { return $value; } -sub optimized_constraints { $optimized_constraints } -{ - my @optimized_constraints_keys = keys %{ $optimized_constraints }; - sub list_all_builtin_type_constraints { @optimized_constraints_keys } -} - 1; __END__