142 lines
6.0 KiB
OCaml
142 lines
6.0 KiB
OCaml
(**************************************************************************)
|
|
(* *)
|
|
(* OCaml *)
|
|
(* *)
|
|
(* Pierre Weis && Damien Doligez, INRIA Rocquencourt *)
|
|
(* *)
|
|
(* Copyright 1998 Institut National de Recherche en Informatique et *)
|
|
(* en Automatique. *)
|
|
(* *)
|
|
(* All rights reserved. This file is distributed under the terms of *)
|
|
(* the GNU Lesser General Public License version 2.1, with the *)
|
|
(* special exception on linking described in the file LICENSE. *)
|
|
(* *)
|
|
(**************************************************************************)
|
|
|
|
(** Warning definitions
|
|
|
|
{b Warning:} this module is unstable and part of
|
|
{{!Compiler_libs}compiler-libs}.
|
|
|
|
*)
|
|
|
|
type loc = {
|
|
loc_start: Lexing.position;
|
|
loc_end: Lexing.position;
|
|
loc_ghost: bool;
|
|
}
|
|
|
|
type t =
|
|
| Comment_start (* 1 *)
|
|
| Comment_not_end (* 2 *)
|
|
(*| Deprecated --> alert "deprecated" *) (* 3 *)
|
|
| Fragile_match of string (* 4 *)
|
|
| Ignored_partial_application (* 5 *)
|
|
| Labels_omitted of string list (* 6 *)
|
|
| Method_override of string list (* 7 *)
|
|
| Partial_match of string (* 8 *)
|
|
| Missing_record_field_pattern of string (* 9 *)
|
|
| Non_unit_statement (* 10 *)
|
|
| Redundant_case (* 11 *)
|
|
| Redundant_subpat (* 12 *)
|
|
| Instance_variable_override of string list (* 13 *)
|
|
| Illegal_backslash (* 14 *)
|
|
| Implicit_public_methods of string list (* 15 *)
|
|
| Unerasable_optional_argument (* 16 *)
|
|
| Undeclared_virtual_method of string (* 17 *)
|
|
| Not_principal of string (* 18 *)
|
|
| Non_principal_labels of string (* 19 *)
|
|
| Ignored_extra_argument (* 20 *)
|
|
| Nonreturning_statement (* 21 *)
|
|
| Preprocessor of string (* 22 *)
|
|
| Useless_record_with (* 23 *)
|
|
| Bad_module_name of string (* 24 *)
|
|
| All_clauses_guarded (* 8, used to be 25 *)
|
|
| Unused_var of string (* 26 *)
|
|
| Unused_var_strict of string (* 27 *)
|
|
| Wildcard_arg_to_constant_constr (* 28 *)
|
|
| Eol_in_string (* 29 *)
|
|
| Duplicate_definitions of string * string * string * string (* 30 *)
|
|
| Module_linked_twice of string * string * string (* 31 *)
|
|
| Unused_value_declaration of string (* 32 *)
|
|
| Unused_open of string (* 33 *)
|
|
| Unused_type_declaration of string (* 34 *)
|
|
| Unused_for_index of string (* 35 *)
|
|
| Unused_ancestor of string (* 36 *)
|
|
| Unused_constructor of string * bool * bool (* 37 *)
|
|
| Unused_extension of string * bool * bool * bool (* 38 *)
|
|
| Unused_rec_flag (* 39 *)
|
|
| Name_out_of_scope of string * string list * bool (* 40 *)
|
|
| Ambiguous_name of string list * string list * bool * string (* 41 *)
|
|
| Disambiguated_name of string (* 42 *)
|
|
| Nonoptional_label of string (* 43 *)
|
|
| Open_shadow_identifier of string * string (* 44 *)
|
|
| Open_shadow_label_constructor of string * string (* 45 *)
|
|
| Bad_env_variable of string * string (* 46 *)
|
|
| Attribute_payload of string * string (* 47 *)
|
|
| Eliminated_optional_arguments of string list (* 48 *)
|
|
| No_cmi_file of string * string option (* 49 *)
|
|
| Unexpected_docstring of bool (* 50 *)
|
|
| Wrong_tailcall_expectation of bool (* 51 *)
|
|
| Fragile_literal_pattern (* 52 *)
|
|
| Misplaced_attribute of string (* 53 *)
|
|
| Duplicated_attribute of string (* 54 *)
|
|
| Inlining_impossible of string (* 55 *)
|
|
| Unreachable_case (* 56 *)
|
|
| Ambiguous_var_in_pattern_guard of string list (* 57 *)
|
|
| No_cmx_file of string (* 58 *)
|
|
| Flambda_assignment_to_non_mutable_value (* 59 *)
|
|
| Unused_module of string (* 60 *)
|
|
| Unboxable_type_in_prim_decl of string (* 61 *)
|
|
| Constraint_on_gadt (* 62 *)
|
|
| Erroneous_printed_signature of string (* 63 *)
|
|
| Unsafe_array_syntax_without_parsing (* 64 *)
|
|
| Redefining_unit of string (* 65 *)
|
|
| Unused_open_bang of string (* 66 *)
|
|
| Unused_functor_parameter of string (* 67 *)
|
|
| Match_on_mutable_state_prevent_uncurry (* 68 *)
|
|
;;
|
|
|
|
type alert = {kind:string; message:string; def:loc; use:loc}
|
|
|
|
val parse_options : bool -> string -> unit;;
|
|
|
|
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 : string
|
|
; is_error : bool
|
|
; sub_locs : (loc * string) 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 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. *)
|