NAME
    warnings::method - Produces warnings if methods are called as functions

VERSION
    This document describes warnings::method version 0.03

SYNOPSIS
        use warnings::method; # or use warnings::method 'FATAL';

        package Foo;
        sub bar :method{
            # ...
        }

        Foo->bar(); # OK

        # the following cases warnings "Method Foo::bar() called as a function"

        Foo::bar();                  # WARN

        my $method_ref = \&Foo::bar; # WARN

        sub f{
            goto &Foo::bar;          # WARN
        }

DESCRIPTION
    You shouldn't call a method as a function, e.g. "UNIVERSAL::isa($o,
    'ARRAY')". It's considered harmful, because such code doesn't call
    overridden methods in any classes. This pragmatic module produces
    warnings if methods are called as functions. Here, *methods* are
    subroutines declared with the :method attribute.

    This module scans the compiled syntax tree, checks function calls and
    produces warnings when dangerous function calls are detected. All the
    processes finish in compile time, so this module has no effect on
    run-time behavior.

    The "UNIVERSAL::isa" and "UNIVERSAL::can" distributions are modules
    based on the same concept, but they produce warnings at run time.

INTERFACE
  "use/no warnings::method;"
    Enables/Disables the "method" warnings. They are equivalent to "use/no
    warnings 'method'" if "warnings::method" is already loaded.

DEPENDENCIES
    Perl 5.8.1 or later, and a C compiler.

BUGS AND LIMITATIONS
    No bugs have been reported.

    Please report any bugs or feature requests to
    "bug-warnings-method@rt.cpan.org/", or through the web interface at
    <http://rt.cpan.org/>.

SEE ALSO
    UNIVERSAL.

    UNIVERSAL::isa.

    UNIVERSAL::can.

    perllexwarn.

AUTHOR
    Goro Fuji <gfuji(at)cpan.org>

LICENSE AND COPYRIGHT
    Copyright (c) 2008, Goro Fuji <gfuji(at)cpan.org>. Some rights reserved.

    This module is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

