From: Matt S Trout Date: Fri, 18 May 2012 13:35:55 +0000 (+0000) Subject: clean up type type searching X-Git-Tag: v0.32~4 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-Types.git;a=commitdiff_plain;h=d7d0bd99611df609fb566d2aa772e002ce0747c3 clean up type type searching --- diff --git a/lib/MooseX/Types/TypeDecorator.pm b/lib/MooseX/Types/TypeDecorator.pm index fa97bb7..6f02813 100644 --- a/lib/MooseX/Types/TypeDecorator.pm +++ b/lib/MooseX/Types/TypeDecorator.pm @@ -173,13 +173,16 @@ sub _try_delegate { my ($self, $method, @args) = @_; my $tc = $self->__type_constraint; my $class; - my $search_tc = $tc; - while ($search_tc->is_subtype_of('Object')) { - if ($search_tc->isa('Moose::Meta::TypeConstraint::Class')) { - $class = $search_tc->class; - last; + if ($tc->can('is_subtype_of')) { # Union can't + my $search_tc = $tc; + while (1) { + if ($search_tc->isa('Moose::Meta::TypeConstraint::Class')) { + $class = $search_tc->class; + last; + } + $search_tc = $search_tc->parent; + last unless $search_tc->is_subtype_of('Object'); } - $search_tc = $search_tc->parent; } my $inv = (