Provided by: libperl-critic-freenode-perl_0.028-1_all bug


       Perl::Critic::Policy::Freenode::OverloadOptions - Don't use overload without specifying a
       bool overload and enabling fallback


       The overload module allows an object class to specify behavior for an object used in
       various operations. However, when activated it enables additional behavior by default: it
       autogenerates overload behavior for operators that are not specified, and if it cannot
       autogenerate an overload for an operator, using that operator on the object will throw an

       An autogenerated boolean overload can lead to surprising behavior where an object is
       considered "false" because of another overloaded value. For example, if a class overloads
       stringification to return the object's name, but the object's name is 0, then the object
       will be considered false due to an autogenerated overload using the boolean value of the
       string. This is rarely desired behavior, and if needed, it can be set as an explicit
       boolean overload.

       Without setting the "fallback" option, any operators that cannot be autogenerated from
       defined overloads will result in an exception when used.  By setting "fallback" to 1, the
       operator will instead fall back to standard behavior as if no overload was defined, which
       is generally the expected behavior when only overloading a few operations.

        use overload '""' => sub { $_[0]->name };                    # not ok
        use overload '""' => sub { $_[0]->name }, bool => sub { 1 }; # not ok
        use overload '""' => sub { $_[0]->name }, fallback => 1;     # not ok
        use overload '""' => sub { $_[0]->name }, bool => sub { 1 }, fallback => 1; # ok


       This policy is part of Perl::Critic::Freenode.


       This policy is not configurable except for the standard options.


       Dan Book, ""


       Copyright 2015, Dan Book.

       This library is free software; you may redistribute it and/or modify it under the terms of
       the Artistic License version 2.0.



perl v5.28.1                                2Perl::Critic::Policy::Freenode::OverloadOptions(3pm)