# Module Warnings

    module Warnings: sig .. end

    type loc = {

`` | `loc_start : `Lexing.position`;`
`` | `loc_end : `Lexing.position`;`
`` | `loc_ghost : `bool`;`

}

    type t =

`|` | `Comment_start`
`|` | `Comment_not_end`
`|` | `Deprecated of `string * loc * loc``
`|` | `Fragile_match of `string``
`|` | `Partial_application`
`|` | `Labels_omitted of `string list``
`|` | `Method_override of `string list``
`|` | `Partial_match of `string``
`|` | `Non_closed_record_pattern of `string``
`|` | `Statement_type`
`|` | `Unused_match`
`|` | `Unused_pat`
`|` | `Instance_variable_override of `string list``
`|` | `Illegal_backslash`
`|` | `Implicit_public_methods of `string list``
`|` | `Unerasable_optional_argument`
`|` | `Undeclared_virtual_method of `string``
`|` | `Not_principal of `string``
`|` | `Without_principality of `string``
`|` | `Unused_argument`
`|` | `Nonreturning_statement`
`|` | `Preprocessor of `string``
`|` | `Useless_record_with`
`|` | `Bad_module_name of `string``
`|` | `All_clauses_guarded`
`|` | `Unused_var of `string``
`|` | `Unused_var_strict of `string``
`|` | `Wildcard_arg_to_constant_constr`
`|` | `Eol_in_string`
`|` | `Duplicate_definitions of `string * string * string * string``
`|` | `Multiple_definition of `string * string * string``
`|` | `Unused_value_declaration of `string``
`|` | `Unused_open of `string``
`|` | `Unused_type_declaration of `string``
`|` | `Unused_for_index of `string``
`|` | `Unused_ancestor of `string``
`|` | `Unused_constructor of `string * bool * bool``
`|` | `Unused_extension of `string * bool * bool * bool``
`|` | `Unused_rec_flag`
`|` | `Name_out_of_scope of `string * string list * bool``
`|` | `Ambiguous_name of `string list * string list * bool``
`|` | `Disambiguated_name of `string``
`|` | `Nonoptional_label of `string``
`|` | `Open_shadow_identifier of `string * string``
`|` | `Open_shadow_label_constructor of `string * string``
`|` | `Bad_env_variable of `string * string``
`|` | `Attribute_payload of `string * string``
`|` | `Eliminated_optional_arguments of `string list``
`|` | `No_cmi_file of `string * string option``
`|` | `Bad_docstring of `bool``
`|` | `Expect_tailcall`
`|` | `Fragile_literal_pattern`
`|` | `Misplaced_attribute of `string``
`|` | `Duplicated_attribute of `string``
`|` | `Inlining_impossible of `string``
`|` | `Unreachable_case`
`|` | `Ambiguous_pattern of `string list``
`|` | `No_cmx_file of `string``
`|` | `Assignment_to_non_mutable_value`
`|` | `Unused_module of `string``
`|` | `Unboxable_type_in_prim_decl of `string``
`|` | `Constraint_on_gadt`

    val parse_options : bool -> string -> unit

    val without_warnings : (unit -> 'a) -> 'a

    val is_active : t -> bool

    val is_error : t -> bool

    val defaults_w : string

    val defaults_warn_error : string

    type reporting_information = {

`` | `number : `int`;`
`` | `message : `string`;`
`` | `is_error : `bool`;`
`` | `sub_locs : `(loc * string) list`;`

}

    val report : t -> [ `Active of reporting_information | `Inactive ]

    exception Errors

    val check_fatal : unit -> unit

    val reset_fatal : unit -> unit

    val help_warnings : unit -> unit

    type state

    val backup : unit -> state

    val restore : state -> unit

    val mk_lazy : (unit -> 'a) -> 'a Lazy.t

Like `Lazy.of_fun`, but the function is applied with the warning settings at the time `mk_lazy` is called.