Module Melange_compiler_libs.Predef

let type_int: Types.type_expr;
let type_char: Types.type_expr;
let type_string: Types.type_expr;
let type_bytes: Types.type_expr;
let type_float: Types.type_expr;
let type_bool: Types.type_expr;
let type_unit: Types.type_expr;
let type_exn: Types.type_expr;
let type_array: Types.type_expr => Types.type_expr;
let type_list: Types.type_expr => Types.type_expr;
let type_option: Types.type_expr => Types.type_expr;
let type_nativeint: Types.type_expr;
let type_int32: Types.type_expr;
let type_int64: Types.type_expr;
let type_lazy_t: Types.type_expr => Types.type_expr;
let type_extension_constructor: Types.type_expr;
let type_floatarray: Types.type_expr;
let path_int: Path.t;
let path_char: Path.t;
let path_string: Path.t;
let path_bytes: Path.t;
let path_float: Path.t;
let path_bool: Path.t;
let path_unit: Path.t;
let path_exn: Path.t;
let path_array: Path.t;
let path_list: Path.t;
let path_option: Path.t;
let path_nativeint: Path.t;
let path_int32: Path.t;
let path_int64: Path.t;
let path_lazy_t: Path.t;
let path_extension_constructor: Path.t;
let path_floatarray: Path.t;
let path_match_failure: Path.t;
let path_assert_failure: Path.t;
let path_undefined_recursive_module: Path.t;
let ident_false: Ident.t;
let ident_true: Ident.t;
let ident_void: Ident.t;
let ident_nil: Ident.t;
let ident_cons: Ident.t;
let ident_none: Ident.t;
let ident_some: Ident.t;
let build_initial_env: (Ident.t => Types.type_declaration => 'a => 'a) => (Ident.t => Types.extension_constructor => 'a => 'a) => 'a => 'a;
let builtin_values: list((string, Ident.t));
let builtin_idents: list((string, Ident.t));
let ident_division_by_zero: Ident.t;

All predefined exceptions, exposed as Ident.t for flambda (for building value approximations). The Ident.t for division by zero is also exported explicitly so flambda can generate code to raise it.

let all_predef_exns: list(Ident.t);
type test =
  1. | For_sure_yes
  2. | For_sure_no
  3. | NA
;
let type_is_builtin_path_but_option: Path.t => test;