From: Dave Rolsky Date: Sat, 19 May 2012 05:43:06 +0000 (-0500) Subject: Make ->isa and ->can work when called on the class itself X-Git-Tag: v0.35~3 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-Types.git;a=commitdiff_plain;h=b325a2174547efd3fc0806a88871fde027a35d48;hp=6db34a2fe061cc3d65fbeb9509e087ea1568986e Make ->isa and ->can work when called on the class itself --- diff --git a/lib/MooseX/Types/TypeDecorator.pm b/lib/MooseX/Types/TypeDecorator.pm index 7bbfa32..4278e79 100644 --- a/lib/MooseX/Types/TypeDecorator.pm +++ b/lib/MooseX/Types/TypeDecorator.pm @@ -120,8 +120,10 @@ and for a class type, the class. sub isa { my $self = shift; return - $self->__type_constraint->isa(@_) - || $self->_try_delegate('isa', @_); + blessed $self + ? $self->__type_constraint->isa(@_) + || $self->_try_delegate( 'isa', @_ ) + : $self->SUPER::isa(@_); } =head2 can @@ -130,7 +132,13 @@ handle $self->can since AUTOLOAD can't. =cut -sub can { shift->_try_delegate('can', @_) } +sub can { + my $self = shift; + + return blessed $self + ? $self->_try_delegate( 'can', @_ ) + : $self->SUPER::can(@_); +} =head2 _throw_error