/** @page warnings Warnings

    @tableofcontents

    Warnings give the programmer information about possible errors in %Qore code.

    Warnings can be enabled using the \c -W command-line option (see @ref command_line_processing for more information) or by using the @ref enable-all-warnings "%enable-all-warnings" or @ref enable-warning "%enable-warning" parse directives.

    @par Command Line Example
    @verbatim prompt$ qore -wdeprecated -wduplicate-hash-key script.q@endverbatim

    @par %Qore Code Example
    @code{.py}
%enable-warning deprecated
%enable-warning duplicate-hash-key
%disable-warning excess-args
    @endcode

    @par List of All Warnings
    - @ref warning-broken-logic-precedence broken-logic-precedence
    - @ref call-with-type-errors
    - @ref deprecated-warning
    - @ref duplicate-block-vars
    - @ref duplicate-global-vars
    - @ref duplicate-hash-key
    - @ref duplicate-local-vars
    - @ref excess-args
    - @ref invalid-catch
    - @ref invalid-operation
    - @ref module-only
    - @ref non-existent-method-call
    - @ref return-value-ignored
    - @ref undeclared-var
    - @ref unknown-warning
    - @ref unreachable-code
    - @ref unreferenced-variable
    - @ref warning-mask-unchanged

    <hr>
    @section warning-broken-logic-precedence broken-logic-precedence
    Only available with @ref broken-logic-precedence "%broken-logic-precedence" parse define.
    Raised when the parser determins that meaning of an expression is affected by the @ref broken-logic-precedence "%broken-logic-precedence" parse define.

    @since %Qore 0.8.12.11

    <hr>
    @section call-with-type-errors
    Raised when the parser determines that the argument types of a function or method call are such that the operation is guaranteed to produce a constant value
    @since %Qore 0.8.0

    <hr>
    @section deprecated-warning deprecated
    Raised when deprecated functionality is accessed.
    @see @ref deprecated
    @since %Qore 0.8.0

    <hr>
    @section duplicate-block-vars duplicate-block-vars
    Raised when a program declares a local variable more than once in the same block; note that this is not a warning but rather an error when @ref assume-local "%assume-local" or @ref new-style "%new-style" parse options are set
    @since %Qore 0.8.2

    <hr>
    @section duplicate-global-vars duplicate-global-vars
    Raised when a program declares a global variable more than once
    @since %Qore 0.5.2

    <hr>
    @section duplicate-hash-key duplicate-hash-key
    Raised when an immediate hash is declared and at least one of the keys is repeated
    @since %Qore 0.8.0

    <hr>
    @section duplicate-local-vars duplicate-local-vars
    This warning is raised when a local variable with the same name is declared in a subblock (ie another local variable with the same name is reachable in the same lexical scope); note that this warning can raise false positives if the programmer is used to redeclaring the same variable names in subblocks
    @see @ref duplicate-block-vars
    @since %Qore 0.5.2

    <hr>
    @section excess-args excess-args
    Raised when a function or method call is made with more arguments than are used by the function or method
    @since %Qore 0.8.0

    <hr>
    @section invalid-catch invalid-catch
    Raised when a @ref try "catch block" exception variable has no type declaration, but types are required
    @since %Qore 1.0

    <hr>
    @section invalid-operation invalid-operation
    Raised when the parser determins that the types of an operation are such that the operation is guaranteed to produce no value; this warning can only be raised when type information is available at parse time
    @since %Qore 0.8.0

    <hr>
    @section module-only module-only
    This warning is raised when a feature that is only valid in a user module is used in code that is not in a user module, for example, declaring a class or namespace @ref mod_public
    @since %Qore 0.8.4

    <hr>
    @section non-existent-method-call non-existent-method-call
    Warning is raised when the given method cannot be found in the class at parse time; this is a warning because the object could be a subclass that has the given method implemented, in which case the call will succeed at run time. Use the @ref cast "cast<>() operator" to avoid this warning
    @since %Qore 0.8.0

    <hr>
    @section return-value-ignored return-value-ignored
    Raised when a function or method call is made with no side effects and the return value is ignored
    @since %Qore 0.8.0

    <hr>
    @section undeclared-var undeclared-var
    This warning is raised when a program uses a variable that has not been declared with @ref my "my" or @ref our "our"
    @since %Qore 0.5.2

    <hr>
    @section unknown-warning unknown-warning
    This warning is raised when a program tries to enable or disable an unknown warning
    @since %Qore 0.5.2

    <hr>
    @section unreachable-code unreachable-code
    Raised when code is defined that can never be executed (for example, code following a @ref return "return" or @ref thread_exit "thread_exit statement")
    @since %Qore 0.5.2

    <hr>
    @section unreferenced-variable unreferenced-variable
    Raised when a variable is declared but never referenced as long as the variable cannot hold an object.  Variables
    holding objects can be used to release resources in the class destructor when they go out of scope.
    @since %Qore 0.8.2

    <hr>
    @section warning-mask-unchanged warning-mask-unchanged
    This warning is raised when a program tries to change the warning mask with parse options, but the warnings are locked
    @since %Qore 0.5.2
*/
