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=156dcc64c6fb647d0b01dc7f690533200eadb0f9;hb=1fbefea51e3234a987284705fc9c6cf34758a2a0;hp=70453828de2992b34c87f45d73807978e9e7bdb4;hpb=323adb6f1da08d840e1e37fd54da7c8001eb37f1;p=gitmo%2FMouse.git diff --git a/lib/Mouse/TypeRegistry.pm b/lib/Mouse/TypeRegistry.pm index 7045382..156dcc6 100644 --- a/lib/Mouse/TypeRegistry.pm +++ b/lib/Mouse/TypeRegistry.pm @@ -92,10 +92,13 @@ sub _subtype { if (my $type = $SUBTYPE{$name}) { Carp::croak "The type constraint '$name' has already been created, cannot be created again in $pkg"; }; - my $as = $conf{as}; - my $stuff = $conf{where} || $SUBTYPE{$as}; - - $SUBTYPE{$name} = $stuff; + my $stuff = $conf{where}; + my $as = $conf{as} || ''; + if ($as = $SUBTYPE{$as}) { + $SUBTYPE{$name} = sub { $as->($_) && $stuff->($_) }; + } else { + $SUBTYPE{$name} = $stuff; + } } sub _coerce {