sig
  val loc_to_string : bool -> Ast.l -> string
  val print_err : bool -> bool -> bool -> Ast.l -> string -> string -> unit
  val debug_flag : bool Pervasives.ref
  val print_debug : string -> unit
  type error =
      Err_general of bool * Ast.l * string
    | Err_unreachable of Ast.l * string
    | Err_todo of bool * Ast.l * string
    | Err_trans of Ast.l * string
    | Err_trans_header of Ast.l * string
    | Err_syntax of Lexing.position * string
    | Err_syntax_locn of Ast.l * string
    | Err_lex of Lexing.position * char
    | Err_type of Ast.l * string
    | Err_internal of Ast.l * string
    | Err_rename of Ast.l * string
    | Err_cyclic_build of string
    | Err_cyclic_inline of Ast.l * string * string
    | Err_resolve_dependency of Ast.l * string list * string
    | Err_reorder_dependency of Ast.l * string
    | Err_fancy_pattern_constant of Ast.l * string
  exception Fatal_error of Reporting_basic.error
  val err_todo : bool -> Ast.l -> string -> exn
  val err_general : bool -> Ast.l -> string -> exn
  val err_unreachable : Ast.l -> string -> exn
  val err_type : Ast.l -> string -> exn
  val err_type_pp :
    Ast.l -> string -> (Format.formatter -> '-> unit) -> '-> exn
  val report_error : Reporting_basic.error -> 'a
end