OCaml compiler library : Warnings

# Module Warnings

    module Warnings: sig .. end

Warning definitions

Warning: this module is unstable and part of compiler-libs.

    type loc = {

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

`}`

    val ghost_loc_in_file : string -> loc

Return an empty ghost range located in a given file

    type field_usage_warning =

`|` | `Unused`
`|` | `Not_read`
`|` | `Not_mutated`

    type constructor_usage_warning =

`|` | `Unused`
`|` | `Not_constructed`
`|` | `Only_exported_private`

    type type_declaration_usage_warning =

`|` | `Declaration`
`|` | `Alias`

    type t =

`|` | `Comment_start`
`|` | `Comment_not_end`
`|` | `Fragile_match of `string``
`|` | `Ignored_partial_application`
`|` | `Labels_omitted of `string list``
`|` | `Method_override of `string list``
`|` | `Partial_match of `Format_doc.t``
`|` | `Missing_record_field_pattern of `string``
`|` | `Non_unit_statement`
`|` | `Redundant_case`
`|` | `Redundant_subpat`
`|` | `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 `Format_doc.t``
`|` | `Non_principal_labels of `string``
`|` | `Ignored_extra_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``
`|` | `Unused_value_declaration of `string``
`|` | `Unused_open of `string``
`|` | `Unused_type_declaration of `string * type_declaration_usage_warning``
`|` | `Unused_for_index of `string``
`|` | `Unused_ancestor of `string``
`|` | `Unused_constructor of `string * constructor_usage_warning``
`|` | `Unused_extension of `string * bool * constructor_usage_warning``
`|` | `Unused_rec_flag`
`|` | `Name_out_of_scope of `string * string list * bool``
`|` | `Ambiguous_name of `string list * string list * bool * string``
`|` | `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``
`|` | `Unexpected_docstring of `bool``
`|` | `Wrong_tailcall_expectation of `bool``
`|` | `Fragile_literal_pattern`
`|` | `Misplaced_attribute of `string``
`|` | `Duplicated_attribute of `string``
`|` | `Inlining_impossible of `string``
`|` | `Unreachable_case`
`|` | `Ambiguous_var_in_pattern_guard of `string list``
`|` | `No_cmx_file of `string``
`|` | `Flambda_assignment_to_non_mutable_value`
`|` | `Unused_module of `string``
`|` | `Unboxable_type_in_prim_decl of `string``
`|` | `Constraint_on_gadt`
`|` | `Erroneous_printed_signature of `string``
`|` | `Unsafe_array_syntax_without_parsing`
`|` | `Redefining_unit of `string``
`|` | `Unused_open_bang of `string``
`|` | `Unused_functor_parameter of `string``
`|` | `Match_on_mutable_state_prevent_uncurry`
`|` | `Unused_field of `string * field_usage_warning``
`|` | `Missing_mli`
`|` | `Unused_tmc_attribute`
`|` | `Tmc_breaks_tailcall`
`|` | `Generative_application_expects_unit`
`|` | `Degraded_to_partial_match`
`|` | `Unnecessarily_partial_tuple_pattern`

    type alert = {

`` | `kind : `string`;`
`` | `message : `string`;`
`` | `def : `loc`;`
`` | `use : `loc`;`

`}`

    val parse_options : bool -> string -> alert option

    val parse_alert_option : string -> unit

Disable/enable alerts based on the parameter to the -alert command-line option. Raises `Arg.Bad` if the string is not a valid specification.

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

Run the thunk with all warnings and alerts disabled.

    val is_active : t -> bool

    val is_error : t -> bool

    val defaults_w : string

    val defaults_warn_error : string

    type reporting_information = {

`` | `id : `string`;`
`` | `message : `Format_doc.t`;`
`` | `is_error : `bool`;`
`` | `sub_locs : `(loc * Format_doc.t) list`;`

`}`

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

    val report_alert : alert -> [ `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 with_state : state -> (unit -> 'a) -> 'a

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

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

    type description = {

`` | `number : `int`;`
`` | `names : `string list`;`
`` | `description : `string`;`
`` | `since : `Sys.ocaml_release_info option`;`

`}`

    val descriptions : description list