X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-Types.git;a=blobdiff_plain;f=lib%2FMooseX%2FTypes%2FTypeDecorator.pm;h=6f028138af5491db08ebeae1ab69c6a93898800b;hp=fa97bb79765b25f5d1663bad9fdf0f24186667fb;hb=d7d0bd99611df609fb566d2aa772e002ce0747c3;hpb=cabfc8ede99ead991887b0e6c4285521245e19f2 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 = (