sig
  type warn_source =
      Warn_source_exp of Typed_ast.exp
    | Warn_source_def of Typed_ast.def
    | Warn_source_unkown
  val warn_source_to_locn : Reporting.warn_source -> Ast.l
  type warning =
      Warn_general of bool * Ast.l * string
    | Warn_rename of Ast.l * string * (string * Ast.l) option * string *
        Target.target
    | Warn_pattern_compilation_failed of Ast.l * Typed_ast.pat list *
        Reporting.warn_source
    | Warn_pattern_not_exhaustive of Ast.l * Typed_ast.pat list list
    | Warn_def_not_exhaustive of Ast.l * string * Typed_ast.pat list list
    | Warn_pattern_redundant of Ast.l * (int * Typed_ast.pat) list *
        Typed_ast.exp
    | Warn_def_redundant of Ast.l * string * (int * Typed_ast.pat) list *
        Typed_ast.def
    | Warn_pattern_needs_compilation of Ast.l * Target.target *
        Typed_ast.exp * Typed_ast.exp
    | Warn_unused_vars of Ast.l * string list * Reporting.warn_source
    | Warn_fun_clauses_resorted of Ast.l * Target.target * string list *
        Typed_ast.def
    | Warn_record_resorted of Ast.l * Typed_ast.exp
    | Warn_no_decidable_equality of Ast.l * string
    | Warn_compile_message of Ast.l * Target.target * Path.t * string
    | Warn_import of Ast.l * string * string
    | Warn_overriden_instance of Ast.l * Types.src_t * Types.instance
    | Warn_ambiguous_code of Ast.l * string
  val warnings_active : bool Pervasives.ref
  val report_warning : Typed_ast.env -> Reporting.warning -> unit
  val report_warning_no_env : Reporting.warning -> unit
  val warn_opts : (string * Arg.spec * string) list
  val ignore_pat_compile_warnings : unit -> unit
  val print_debug_exp : Typed_ast.env -> string -> Typed_ast.exp list -> unit
  val print_debug_def : Typed_ast.env -> string -> Typed_ast.def list -> unit
  val print_debug_pat : Typed_ast.env -> string -> Typed_ast.pat list -> unit
  val print_debug_typ : Typed_ast.env -> string -> Types.t list -> unit
  val print_debug_src_t : Typed_ast.env -> string -> Types.src_t list -> unit
end