sig
  type loc = {
    loc_start : Lexing.position;
    loc_end : Lexing.position;
    loc_ghost : bool;
  }
  type t =
      Comment_start
    | Comment_not_end
    | Deprecated of string * Warnings.loc * Warnings.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 : Warnings.t -> bool
  val is_error : Warnings.t -> bool
  val defaults_w : string
  val defaults_warn_error : string
  type reporting_information = {
    number : int;
    message : string;
    is_error : bool;
    sub_locs : (Warnings.loc * string) list;
  }
  val report :
    Warnings.t -> [ `Active of Warnings.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 -> Warnings.state
  val restore : Warnings.state -> unit
  val mk_lazy : (unit -> 'a) -> 'Lazy.t
end