logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Perl::Critic::Policy::BuiltinFunctions::ProhibitUniversalIsa - Write "eval { $foo->isa($pkg) }" instead

Affiliation

       This Policy is part of the core Perl::Critic distribution.

Author

       Chris Dolan <cdolan@cpan.org>

Configuration

       This Policy is not configurable except for the standard options.

Description

           print UNIVERSAL::isa($obj, 'Foo::Bar') ? 'yes' : 'no';  #not ok
           print eval { $obj->isa('Foo::Bar') } ? 'yes' : 'no';    #ok

       As of Perl 5.9.3, the use of "UNIVERSAL::isa" as a function has been deprecated and the method form is
       preferred instead.  Formerly, the functional form was recommended because it gave valid results even when
       the object was "undef" or an unblessed scalar.  However, the functional form makes it impossible for
       packages to override isa(), a technique which is crucial for implementing mock objects and some facades.

       Another alternative to UNIVERSAL::isa is the "_INSTANCE" method of Param::Util, which is faster.

       See the CPAN module UNIVERSAL::isa for an incendiary discussion of this topic.

Name

       Perl::Critic::Policy::BuiltinFunctions::ProhibitUniversalIsa - Write "eval { $foo->isa($pkg) }" instead
       of "UNIVERSAL::isa($foo, $pkg)".

See Also

       Perl::Critic::Policy::BuiltinFunctions::ProhibitUniversalCan

See Also