rescript
Version:
1,704 lines (1,634 loc) • 228 kB
JavaScript
import * as Caml from "./caml.js";
import * as Char from "./char.js";
import * as Bytes from "./bytes.js";
import * as Curry from "./curry.js";
import * as $$Buffer from "./buffer.js";
import * as $$String from "./string.js";
import * as Caml_io from "./caml_io.js";
import * as Caml_obj from "./caml_obj.js";
import * as Caml_bytes from "./caml_bytes.js";
import * as Pervasives from "./pervasives.js";
import * as Caml_format from "./caml_format.js";
import * as Caml_string from "./caml_string.js";
import * as Caml_exceptions from "./caml_exceptions.js";
import * as Caml_js_exceptions from "./caml_js_exceptions.js";
import * as CamlinternalFormatBasics from "./camlinternalFormatBasics.js";
function create_char_set(param) {
return Bytes.make(32, /* '\000' */0);
}
function add_in_char_set(char_set, c) {
var str_ind = (c >>> 3);
var mask = (1 << (c & 7));
return Caml_bytes.set(char_set, str_ind, Pervasives.char_of_int(Caml_bytes.get(char_set, str_ind) | mask));
}
var freeze_char_set = Bytes.to_string;
function rev_char_set(char_set) {
var char_set$p = Bytes.make(32, /* '\000' */0);
for(var i = 0; i <= 31; ++i){
Caml_bytes.set(char_set$p, i, Pervasives.char_of_int(Caml_string.get(char_set, i) ^ 255));
}
return Caml_bytes.bytes_to_string(char_set$p);
}
function is_in_char_set(char_set, c) {
var str_ind = (c >>> 3);
var mask = (1 << (c & 7));
return (Caml_string.get(char_set, str_ind) & mask) !== 0;
}
function pad_of_pad_opt(pad_opt) {
if (pad_opt !== undefined) {
return {
TAG: /* Lit_padding */0,
_0: /* Right */1,
_1: pad_opt
};
} else {
return /* No_padding */0;
}
}
function prec_of_prec_opt(prec_opt) {
if (prec_opt !== undefined) {
return /* Lit_precision */{
_0: prec_opt
};
} else {
return /* No_precision */0;
}
}
function param_format_of_ignored_format(ign, fmt) {
if (typeof ign === "number") {
switch (ign) {
case /* Ignored_char */0 :
return /* Param_format_EBB */{
_0: {
TAG: /* Char */0,
_0: fmt
}
};
case /* Ignored_caml_char */1 :
return /* Param_format_EBB */{
_0: {
TAG: /* Caml_char */1,
_0: fmt
}
};
case /* Ignored_reader */2 :
return /* Param_format_EBB */{
_0: {
TAG: /* Reader */19,
_0: fmt
}
};
case /* Ignored_scan_next_char */3 :
return /* Param_format_EBB */{
_0: {
TAG: /* Scan_next_char */22,
_0: fmt
}
};
}
} else {
switch (ign.TAG | 0) {
case /* Ignored_string */0 :
return /* Param_format_EBB */{
_0: {
TAG: /* String */2,
_0: pad_of_pad_opt(ign._0),
_1: fmt
}
};
case /* Ignored_caml_string */1 :
return /* Param_format_EBB */{
_0: {
TAG: /* Caml_string */3,
_0: pad_of_pad_opt(ign._0),
_1: fmt
}
};
case /* Ignored_int */2 :
return /* Param_format_EBB */{
_0: {
TAG: /* Int */4,
_0: ign._0,
_1: pad_of_pad_opt(ign._1),
_2: /* No_precision */0,
_3: fmt
}
};
case /* Ignored_int32 */3 :
return /* Param_format_EBB */{
_0: {
TAG: /* Int32 */5,
_0: ign._0,
_1: pad_of_pad_opt(ign._1),
_2: /* No_precision */0,
_3: fmt
}
};
case /* Ignored_nativeint */4 :
return /* Param_format_EBB */{
_0: {
TAG: /* Nativeint */6,
_0: ign._0,
_1: pad_of_pad_opt(ign._1),
_2: /* No_precision */0,
_3: fmt
}
};
case /* Ignored_int64 */5 :
return /* Param_format_EBB */{
_0: {
TAG: /* Int64 */7,
_0: ign._0,
_1: pad_of_pad_opt(ign._1),
_2: /* No_precision */0,
_3: fmt
}
};
case /* Ignored_float */6 :
return /* Param_format_EBB */{
_0: {
TAG: /* Float */8,
_0: /* Float_f */0,
_1: pad_of_pad_opt(ign._0),
_2: prec_of_prec_opt(ign._1),
_3: fmt
}
};
case /* Ignored_bool */7 :
return /* Param_format_EBB */{
_0: {
TAG: /* Bool */9,
_0: pad_of_pad_opt(ign._0),
_1: fmt
}
};
case /* Ignored_format_arg */8 :
return /* Param_format_EBB */{
_0: {
TAG: /* Format_arg */13,
_0: ign._0,
_1: ign._1,
_2: fmt
}
};
case /* Ignored_format_subst */9 :
return /* Param_format_EBB */{
_0: {
TAG: /* Format_subst */14,
_0: ign._0,
_1: ign._1,
_2: fmt
}
};
case /* Ignored_scan_char_set */10 :
return /* Param_format_EBB */{
_0: {
TAG: /* Scan_char_set */20,
_0: ign._0,
_1: ign._1,
_2: fmt
}
};
case /* Ignored_scan_get_counter */11 :
return /* Param_format_EBB */{
_0: {
TAG: /* Scan_get_counter */21,
_0: ign._0,
_1: fmt
}
};
}
}
}
function buffer_check_size(buf, overhead) {
var len = buf.bytes.length;
var min_len = buf.ind + overhead | 0;
if (min_len <= len) {
return ;
}
var new_len = Caml.caml_int_max((len << 1), min_len);
var new_str = Caml_bytes.caml_create_bytes(new_len);
Bytes.blit(buf.bytes, 0, new_str, 0, len);
buf.bytes = new_str;
}
function buffer_add_char(buf, c) {
buffer_check_size(buf, 1);
Caml_bytes.set(buf.bytes, buf.ind, c);
buf.ind = buf.ind + 1 | 0;
}
function buffer_add_string(buf, s) {
var str_len = s.length;
buffer_check_size(buf, str_len);
$$String.blit(s, 0, buf.bytes, buf.ind, str_len);
buf.ind = buf.ind + str_len | 0;
}
function buffer_contents(buf) {
return Bytes.sub_string(buf.bytes, 0, buf.ind);
}
function char_of_iconv(iconv) {
switch (iconv) {
case /* Int_d */0 :
case /* Int_pd */1 :
case /* Int_sd */2 :
return /* 'd' */100;
case /* Int_i */3 :
case /* Int_pi */4 :
case /* Int_si */5 :
return /* 'i' */105;
case /* Int_x */6 :
case /* Int_Cx */7 :
return /* 'x' */120;
case /* Int_X */8 :
case /* Int_CX */9 :
return /* 'X' */88;
case /* Int_o */10 :
case /* Int_Co */11 :
return /* 'o' */111;
case /* Int_u */12 :
return /* 'u' */117;
}
}
function char_of_fconv(fconv) {
switch (fconv) {
case /* Float_f */0 :
case /* Float_pf */1 :
case /* Float_sf */2 :
return /* 'f' */102;
case /* Float_e */3 :
case /* Float_pe */4 :
case /* Float_se */5 :
return /* 'e' */101;
case /* Float_E */6 :
case /* Float_pE */7 :
case /* Float_sE */8 :
return /* 'E' */69;
case /* Float_g */9 :
case /* Float_pg */10 :
case /* Float_sg */11 :
return /* 'g' */103;
case /* Float_G */12 :
case /* Float_pG */13 :
case /* Float_sG */14 :
return /* 'G' */71;
case /* Float_F */15 :
return /* 'F' */70;
case /* Float_h */16 :
case /* Float_ph */17 :
case /* Float_sh */18 :
return /* 'h' */104;
case /* Float_H */19 :
case /* Float_pH */20 :
case /* Float_sH */21 :
return /* 'H' */72;
}
}
function char_of_counter(counter) {
switch (counter) {
case /* Line_counter */0 :
return /* 'l' */108;
case /* Char_counter */1 :
return /* 'n' */110;
case /* Token_counter */2 :
return /* 'N' */78;
}
}
function bprint_char_set(buf, char_set) {
var print_char = function (buf, i) {
var c = Pervasives.char_of_int(i);
if (c !== 37) {
if (c !== 64) {
return buffer_add_char(buf, c);
} else {
buffer_add_char(buf, /* '%' */37);
return buffer_add_char(buf, /* '@' */64);
}
} else {
buffer_add_char(buf, /* '%' */37);
return buffer_add_char(buf, /* '%' */37);
}
};
var print_out = function (set, _i) {
while(true) {
var i = _i;
if (i >= 256) {
return ;
}
if (is_in_char_set(set, Pervasives.char_of_int(i))) {
var match = Pervasives.char_of_int(i);
if (match > 93 || match < 45) {
if (match >= 255) {
return print_char(buf, 255);
} else {
return print_second(set, i + 1 | 0);
}
} else if (match > 92 || match < 46) {
return print_out(set, i + 1 | 0);
} else {
return print_second(set, i + 1 | 0);
}
}
_i = i + 1 | 0;
continue ;
};
};
var print_second = function (set, i) {
if (is_in_char_set(set, Pervasives.char_of_int(i))) {
var match = Pervasives.char_of_int(i);
if (match > 93 || match < 45) {
if (match >= 255) {
print_char(buf, 254);
return print_char(buf, 255);
}
} else if ((match > 92 || match < 46) && !is_in_char_set(set, Pervasives.char_of_int(i + 1 | 0))) {
print_char(buf, i - 1 | 0);
return print_out(set, i + 1 | 0);
}
if (is_in_char_set(set, Pervasives.char_of_int(i + 1 | 0))) {
var i$1 = i - 1 | 0;
var _j = i + 2 | 0;
while(true) {
var j = _j;
if (j === 256 || !is_in_char_set(set, Pervasives.char_of_int(j))) {
print_char(buf, i$1);
print_char(buf, /* '-' */45);
print_char(buf, j - 1 | 0);
if (j < 256) {
return print_out(set, j + 1 | 0);
} else {
return ;
}
}
_j = j + 1 | 0;
continue ;
};
} else {
print_char(buf, i - 1 | 0);
print_char(buf, i);
return print_out(set, i + 2 | 0);
}
}
print_char(buf, i - 1 | 0);
return print_out(set, i + 1 | 0);
};
var print_start = function (set) {
var is_alone = function (c) {
var before = Char.chr(c - 1 | 0);
var after = Char.chr(c + 1 | 0);
if (is_in_char_set(set, c)) {
return !(is_in_char_set(set, before) && is_in_char_set(set, after));
} else {
return false;
}
};
if (is_alone(/* ']' */93)) {
buffer_add_char(buf, /* ']' */93);
}
print_out(set, 1);
if (is_alone(/* '-' */45)) {
return buffer_add_char(buf, /* '-' */45);
}
};
buffer_add_char(buf, /* '[' */91);
print_start(is_in_char_set(char_set, /* '\000' */0) ? (buffer_add_char(buf, /* '^' */94), rev_char_set(char_set)) : char_set);
return buffer_add_char(buf, /* ']' */93);
}
function bprint_padty(buf, padty) {
switch (padty) {
case /* Left */0 :
return buffer_add_char(buf, /* '-' */45);
case /* Right */1 :
return ;
case /* Zeros */2 :
return buffer_add_char(buf, /* '0' */48);
}
}
function bprint_ignored_flag(buf, ign_flag) {
if (ign_flag) {
return buffer_add_char(buf, /* '_' */95);
}
}
function bprint_pad_opt(buf, pad_opt) {
if (pad_opt !== undefined) {
return buffer_add_string(buf, String(pad_opt));
}
}
function bprint_padding(buf, pad) {
if (typeof pad === "number") {
return ;
}
if (pad.TAG === /* Lit_padding */0) {
bprint_padty(buf, pad._0);
return buffer_add_string(buf, String(pad._1));
}
bprint_padty(buf, pad._0);
return buffer_add_char(buf, /* '*' */42);
}
function bprint_precision(buf, prec) {
if (typeof prec === "number") {
if (prec !== 0) {
return buffer_add_string(buf, ".*");
} else {
return ;
}
} else {
buffer_add_char(buf, /* '.' */46);
return buffer_add_string(buf, String(prec._0));
}
}
function bprint_iconv_flag(buf, iconv) {
switch (iconv) {
case /* Int_pd */1 :
case /* Int_pi */4 :
return buffer_add_char(buf, /* '+' */43);
case /* Int_sd */2 :
case /* Int_si */5 :
return buffer_add_char(buf, /* ' ' */32);
case /* Int_Cx */7 :
case /* Int_CX */9 :
case /* Int_Co */11 :
return buffer_add_char(buf, /* '#' */35);
case /* Int_d */0 :
case /* Int_i */3 :
case /* Int_x */6 :
case /* Int_X */8 :
case /* Int_o */10 :
case /* Int_u */12 :
return ;
}
}
function bprint_int_fmt(buf, ign_flag, iconv, pad, prec) {
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
bprint_iconv_flag(buf, iconv);
bprint_padding(buf, pad);
bprint_precision(buf, prec);
return buffer_add_char(buf, char_of_iconv(iconv));
}
function bprint_altint_fmt(buf, ign_flag, iconv, pad, prec, c) {
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
bprint_iconv_flag(buf, iconv);
bprint_padding(buf, pad);
bprint_precision(buf, prec);
buffer_add_char(buf, c);
return buffer_add_char(buf, char_of_iconv(iconv));
}
function bprint_fconv_flag(buf, fconv) {
switch (fconv) {
case /* Float_f */0 :
case /* Float_e */3 :
case /* Float_E */6 :
case /* Float_g */9 :
case /* Float_G */12 :
case /* Float_F */15 :
case /* Float_h */16 :
case /* Float_H */19 :
return ;
case /* Float_pf */1 :
case /* Float_pe */4 :
case /* Float_pE */7 :
case /* Float_pg */10 :
case /* Float_pG */13 :
case /* Float_ph */17 :
case /* Float_pH */20 :
return buffer_add_char(buf, /* '+' */43);
case /* Float_sf */2 :
case /* Float_se */5 :
case /* Float_sE */8 :
case /* Float_sg */11 :
case /* Float_sG */14 :
case /* Float_sh */18 :
case /* Float_sH */21 :
return buffer_add_char(buf, /* ' ' */32);
}
}
function bprint_float_fmt(buf, ign_flag, fconv, pad, prec) {
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
bprint_fconv_flag(buf, fconv);
bprint_padding(buf, pad);
bprint_precision(buf, prec);
return buffer_add_char(buf, char_of_fconv(fconv));
}
function string_of_formatting_lit(formatting_lit) {
if (typeof formatting_lit === "number") {
switch (formatting_lit) {
case /* Close_box */0 :
return "@]";
case /* Close_tag */1 :
return "@}";
case /* FFlush */2 :
return "@?";
case /* Force_newline */3 :
return "@\n";
case /* Flush_newline */4 :
return "@.";
case /* Escaped_at */5 :
return "@@";
case /* Escaped_percent */6 :
return "@%";
}
} else {
switch (formatting_lit.TAG | 0) {
case /* Break */0 :
case /* Magic_size */1 :
return formatting_lit._0;
case /* Scan_indic */2 :
return "@" + Caml_string.make(1, formatting_lit._0);
}
}
}
function string_of_formatting_gen(formatting_gen) {
return formatting_gen._0._1;
}
function bprint_char_literal(buf, chr) {
if (chr !== 37) {
return buffer_add_char(buf, chr);
} else {
return buffer_add_string(buf, "%%");
}
}
function bprint_string_literal(buf, str) {
for(var i = 0 ,i_finish = str.length; i < i_finish; ++i){
bprint_char_literal(buf, Caml_string.get(str, i));
}
}
function bprint_fmtty(buf, _fmtty) {
while(true) {
var fmtty = _fmtty;
if (typeof fmtty === "number") {
return ;
}
switch (fmtty.TAG | 0) {
case /* Char_ty */0 :
buffer_add_string(buf, "%c");
_fmtty = fmtty._0;
continue ;
case /* String_ty */1 :
buffer_add_string(buf, "%s");
_fmtty = fmtty._0;
continue ;
case /* Int_ty */2 :
buffer_add_string(buf, "%i");
_fmtty = fmtty._0;
continue ;
case /* Int32_ty */3 :
buffer_add_string(buf, "%li");
_fmtty = fmtty._0;
continue ;
case /* Nativeint_ty */4 :
buffer_add_string(buf, "%ni");
_fmtty = fmtty._0;
continue ;
case /* Int64_ty */5 :
buffer_add_string(buf, "%Li");
_fmtty = fmtty._0;
continue ;
case /* Float_ty */6 :
buffer_add_string(buf, "%f");
_fmtty = fmtty._0;
continue ;
case /* Bool_ty */7 :
buffer_add_string(buf, "%B");
_fmtty = fmtty._0;
continue ;
case /* Format_arg_ty */8 :
buffer_add_string(buf, "%{");
bprint_fmtty(buf, fmtty._0);
buffer_add_string(buf, "%}");
_fmtty = fmtty._1;
continue ;
case /* Format_subst_ty */9 :
buffer_add_string(buf, "%(");
bprint_fmtty(buf, fmtty._0);
buffer_add_string(buf, "%)");
_fmtty = fmtty._2;
continue ;
case /* Alpha_ty */10 :
buffer_add_string(buf, "%a");
_fmtty = fmtty._0;
continue ;
case /* Theta_ty */11 :
buffer_add_string(buf, "%t");
_fmtty = fmtty._0;
continue ;
case /* Any_ty */12 :
buffer_add_string(buf, "%?");
_fmtty = fmtty._0;
continue ;
case /* Reader_ty */13 :
buffer_add_string(buf, "%r");
_fmtty = fmtty._0;
continue ;
case /* Ignored_reader_ty */14 :
buffer_add_string(buf, "%_r");
_fmtty = fmtty._0;
continue ;
}
};
}
function int_of_custom_arity(x) {
if (x) {
return 1 + int_of_custom_arity(x._0) | 0;
} else {
return 0;
}
}
function bprint_fmt(buf, fmt) {
var _fmt = fmt;
var _ign_flag = false;
while(true) {
var ign_flag = _ign_flag;
var fmt$1 = _fmt;
if (typeof fmt$1 === "number") {
return ;
}
switch (fmt$1.TAG | 0) {
case /* Char */0 :
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, /* 'c' */99);
_ign_flag = false;
_fmt = fmt$1._0;
continue ;
case /* Caml_char */1 :
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, /* 'C' */67);
_ign_flag = false;
_fmt = fmt$1._0;
continue ;
case /* String */2 :
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
bprint_padding(buf, fmt$1._0);
buffer_add_char(buf, /* 's' */115);
_ign_flag = false;
_fmt = fmt$1._1;
continue ;
case /* Caml_string */3 :
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
bprint_padding(buf, fmt$1._0);
buffer_add_char(buf, /* 'S' */83);
_ign_flag = false;
_fmt = fmt$1._1;
continue ;
case /* Int */4 :
bprint_int_fmt(buf, ign_flag, fmt$1._0, fmt$1._1, fmt$1._2);
_ign_flag = false;
_fmt = fmt$1._3;
continue ;
case /* Int32 */5 :
bprint_altint_fmt(buf, ign_flag, fmt$1._0, fmt$1._1, fmt$1._2, /* 'l' */108);
_ign_flag = false;
_fmt = fmt$1._3;
continue ;
case /* Nativeint */6 :
bprint_altint_fmt(buf, ign_flag, fmt$1._0, fmt$1._1, fmt$1._2, /* 'n' */110);
_ign_flag = false;
_fmt = fmt$1._3;
continue ;
case /* Int64 */7 :
bprint_altint_fmt(buf, ign_flag, fmt$1._0, fmt$1._1, fmt$1._2, /* 'L' */76);
_ign_flag = false;
_fmt = fmt$1._3;
continue ;
case /* Float */8 :
bprint_float_fmt(buf, ign_flag, fmt$1._0, fmt$1._1, fmt$1._2);
_ign_flag = false;
_fmt = fmt$1._3;
continue ;
case /* Bool */9 :
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
bprint_padding(buf, fmt$1._0);
buffer_add_char(buf, /* 'B' */66);
_ign_flag = false;
_fmt = fmt$1._1;
continue ;
case /* Flush */10 :
buffer_add_string(buf, "%!");
_fmt = fmt$1._0;
continue ;
case /* String_literal */11 :
bprint_string_literal(buf, fmt$1._0);
_fmt = fmt$1._1;
continue ;
case /* Char_literal */12 :
bprint_char_literal(buf, fmt$1._0);
_fmt = fmt$1._1;
continue ;
case /* Format_arg */13 :
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
bprint_pad_opt(buf, fmt$1._0);
buffer_add_char(buf, /* '{' */123);
bprint_fmtty(buf, fmt$1._1);
buffer_add_char(buf, /* '%' */37);
buffer_add_char(buf, /* '}' */125);
_ign_flag = false;
_fmt = fmt$1._2;
continue ;
case /* Format_subst */14 :
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
bprint_pad_opt(buf, fmt$1._0);
buffer_add_char(buf, /* '(' */40);
bprint_fmtty(buf, fmt$1._1);
buffer_add_char(buf, /* '%' */37);
buffer_add_char(buf, /* ')' */41);
_ign_flag = false;
_fmt = fmt$1._2;
continue ;
case /* Alpha */15 :
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, /* 'a' */97);
_ign_flag = false;
_fmt = fmt$1._0;
continue ;
case /* Theta */16 :
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, /* 't' */116);
_ign_flag = false;
_fmt = fmt$1._0;
continue ;
case /* Formatting_lit */17 :
bprint_string_literal(buf, string_of_formatting_lit(fmt$1._0));
_fmt = fmt$1._1;
continue ;
case /* Formatting_gen */18 :
bprint_string_literal(buf, "@{");
bprint_string_literal(buf, string_of_formatting_gen(fmt$1._0));
_fmt = fmt$1._1;
continue ;
case /* Reader */19 :
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, /* 'r' */114);
_ign_flag = false;
_fmt = fmt$1._0;
continue ;
case /* Scan_char_set */20 :
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
bprint_pad_opt(buf, fmt$1._0);
bprint_char_set(buf, fmt$1._1);
_ign_flag = false;
_fmt = fmt$1._2;
continue ;
case /* Scan_get_counter */21 :
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, char_of_counter(fmt$1._0));
_ign_flag = false;
_fmt = fmt$1._1;
continue ;
case /* Scan_next_char */22 :
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
bprint_string_literal(buf, "0c");
_ign_flag = false;
_fmt = fmt$1._0;
continue ;
case /* Ignored_param */23 :
var fmt$p = param_format_of_ignored_format(fmt$1._0, fmt$1._1);
_ign_flag = true;
_fmt = fmt$p._0;
continue ;
case /* Custom */24 :
for(var _i = 1 ,_i_finish = int_of_custom_arity(fmt$1._0); _i <= _i_finish; ++_i){
buffer_add_char(buf, /* '%' */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, /* '?' */63);
}
_ign_flag = false;
_fmt = fmt$1._2;
continue ;
}
};
}
function string_of_fmt(fmt) {
var buf = {
ind: 0,
bytes: Caml_bytes.caml_create_bytes(16)
};
bprint_fmt(buf, fmt);
return buffer_contents(buf);
}
function symm(rest) {
if (typeof rest === "number") {
return /* End_of_fmtty */0;
}
switch (rest.TAG | 0) {
case /* Char_ty */0 :
return {
TAG: /* Char_ty */0,
_0: symm(rest._0)
};
case /* String_ty */1 :
return {
TAG: /* String_ty */1,
_0: symm(rest._0)
};
case /* Int_ty */2 :
return {
TAG: /* Int_ty */2,
_0: symm(rest._0)
};
case /* Int32_ty */3 :
return {
TAG: /* Int32_ty */3,
_0: symm(rest._0)
};
case /* Nativeint_ty */4 :
return {
TAG: /* Nativeint_ty */4,
_0: symm(rest._0)
};
case /* Int64_ty */5 :
return {
TAG: /* Int64_ty */5,
_0: symm(rest._0)
};
case /* Float_ty */6 :
return {
TAG: /* Float_ty */6,
_0: symm(rest._0)
};
case /* Bool_ty */7 :
return {
TAG: /* Bool_ty */7,
_0: symm(rest._0)
};
case /* Format_arg_ty */8 :
return {
TAG: /* Format_arg_ty */8,
_0: rest._0,
_1: symm(rest._1)
};
case /* Format_subst_ty */9 :
return {
TAG: /* Format_subst_ty */9,
_0: rest._1,
_1: rest._0,
_2: symm(rest._2)
};
case /* Alpha_ty */10 :
return {
TAG: /* Alpha_ty */10,
_0: symm(rest._0)
};
case /* Theta_ty */11 :
return {
TAG: /* Theta_ty */11,
_0: symm(rest._0)
};
case /* Any_ty */12 :
return {
TAG: /* Any_ty */12,
_0: symm(rest._0)
};
case /* Reader_ty */13 :
return {
TAG: /* Reader_ty */13,
_0: symm(rest._0)
};
case /* Ignored_reader_ty */14 :
return {
TAG: /* Ignored_reader_ty */14,
_0: symm(rest._0)
};
}
}
function fmtty_rel_det(rest) {
if (typeof rest === "number") {
return [
(function (param) {
return /* Refl */0;
}),
(function (param) {
return /* Refl */0;
}),
(function (param) {
return /* Refl */0;
}),
(function (param) {
return /* Refl */0;
})
];
}
switch (rest.TAG | 0) {
case /* Char_ty */0 :
var match = fmtty_rel_det(rest._0);
var af = match[1];
var fa = match[0];
return [
(function (param) {
Curry._1(fa, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(af, /* Refl */0);
return /* Refl */0;
}),
match[2],
match[3]
];
case /* String_ty */1 :
var match$1 = fmtty_rel_det(rest._0);
var af$1 = match$1[1];
var fa$1 = match$1[0];
return [
(function (param) {
Curry._1(fa$1, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(af$1, /* Refl */0);
return /* Refl */0;
}),
match$1[2],
match$1[3]
];
case /* Int_ty */2 :
var match$2 = fmtty_rel_det(rest._0);
var af$2 = match$2[1];
var fa$2 = match$2[0];
return [
(function (param) {
Curry._1(fa$2, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(af$2, /* Refl */0);
return /* Refl */0;
}),
match$2[2],
match$2[3]
];
case /* Int32_ty */3 :
var match$3 = fmtty_rel_det(rest._0);
var af$3 = match$3[1];
var fa$3 = match$3[0];
return [
(function (param) {
Curry._1(fa$3, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(af$3, /* Refl */0);
return /* Refl */0;
}),
match$3[2],
match$3[3]
];
case /* Nativeint_ty */4 :
var match$4 = fmtty_rel_det(rest._0);
var af$4 = match$4[1];
var fa$4 = match$4[0];
return [
(function (param) {
Curry._1(fa$4, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(af$4, /* Refl */0);
return /* Refl */0;
}),
match$4[2],
match$4[3]
];
case /* Int64_ty */5 :
var match$5 = fmtty_rel_det(rest._0);
var af$5 = match$5[1];
var fa$5 = match$5[0];
return [
(function (param) {
Curry._1(fa$5, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(af$5, /* Refl */0);
return /* Refl */0;
}),
match$5[2],
match$5[3]
];
case /* Float_ty */6 :
var match$6 = fmtty_rel_det(rest._0);
var af$6 = match$6[1];
var fa$6 = match$6[0];
return [
(function (param) {
Curry._1(fa$6, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(af$6, /* Refl */0);
return /* Refl */0;
}),
match$6[2],
match$6[3]
];
case /* Bool_ty */7 :
var match$7 = fmtty_rel_det(rest._0);
var af$7 = match$7[1];
var fa$7 = match$7[0];
return [
(function (param) {
Curry._1(fa$7, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(af$7, /* Refl */0);
return /* Refl */0;
}),
match$7[2],
match$7[3]
];
case /* Format_arg_ty */8 :
var match$8 = fmtty_rel_det(rest._1);
var af$8 = match$8[1];
var fa$8 = match$8[0];
return [
(function (param) {
Curry._1(fa$8, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(af$8, /* Refl */0);
return /* Refl */0;
}),
match$8[2],
match$8[3]
];
case /* Format_subst_ty */9 :
var match$9 = fmtty_rel_det(rest._2);
var de = match$9[3];
var ed = match$9[2];
var af$9 = match$9[1];
var fa$9 = match$9[0];
var ty = trans(symm(rest._0), rest._1);
var match$10 = fmtty_rel_det(ty);
var jd = match$10[3];
var dj = match$10[2];
var ga = match$10[1];
var ag = match$10[0];
return [
(function (param) {
Curry._1(fa$9, /* Refl */0);
Curry._1(ag, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(ga, /* Refl */0);
Curry._1(af$9, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(ed, /* Refl */0);
Curry._1(dj, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(jd, /* Refl */0);
Curry._1(de, /* Refl */0);
return /* Refl */0;
})
];
case /* Alpha_ty */10 :
var match$11 = fmtty_rel_det(rest._0);
var af$10 = match$11[1];
var fa$10 = match$11[0];
return [
(function (param) {
Curry._1(fa$10, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(af$10, /* Refl */0);
return /* Refl */0;
}),
match$11[2],
match$11[3]
];
case /* Theta_ty */11 :
var match$12 = fmtty_rel_det(rest._0);
var af$11 = match$12[1];
var fa$11 = match$12[0];
return [
(function (param) {
Curry._1(fa$11, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(af$11, /* Refl */0);
return /* Refl */0;
}),
match$12[2],
match$12[3]
];
case /* Any_ty */12 :
var match$13 = fmtty_rel_det(rest._0);
var af$12 = match$13[1];
var fa$12 = match$13[0];
return [
(function (param) {
Curry._1(fa$12, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(af$12, /* Refl */0);
return /* Refl */0;
}),
match$13[2],
match$13[3]
];
case /* Reader_ty */13 :
var match$14 = fmtty_rel_det(rest._0);
var de$1 = match$14[3];
var ed$1 = match$14[2];
var af$13 = match$14[1];
var fa$13 = match$14[0];
return [
(function (param) {
Curry._1(fa$13, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(af$13, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(ed$1, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(de$1, /* Refl */0);
return /* Refl */0;
})
];
case /* Ignored_reader_ty */14 :
var match$15 = fmtty_rel_det(rest._0);
var de$2 = match$15[3];
var ed$2 = match$15[2];
var af$14 = match$15[1];
var fa$14 = match$15[0];
return [
(function (param) {
Curry._1(fa$14, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(af$14, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(ed$2, /* Refl */0);
return /* Refl */0;
}),
(function (param) {
Curry._1(de$2, /* Refl */0);
return /* Refl */0;
})
];
}
}
function trans(ty1, ty2) {
var exit = 0;
if (typeof ty1 === "number") {
if (typeof ty2 === "number") {
return /* End_of_fmtty */0;
}
switch (ty2.TAG | 0) {
case /* Format_arg_ty */8 :
exit = 6;
break;
case /* Format_subst_ty */9 :
exit = 7;
break;
case /* Alpha_ty */10 :
exit = 1;
break;
case /* Theta_ty */11 :
exit = 2;
break;
case /* Any_ty */12 :
exit = 3;
break;
case /* Reader_ty */13 :
exit = 4;
break;
case /* Ignored_reader_ty */14 :
exit = 5;
break;
default:
throw {
RE_EXN_ID: "Assert_failure",
_1: [
"camlinternalFormat.ml",
846,
23
],
Error: new Error()
};
}
} else {
switch (ty1.TAG | 0) {
case /* Char_ty */0 :
if (typeof ty2 === "number") {
exit = 8;
} else {
switch (ty2.TAG | 0) {
case /* Char_ty */0 :
return {
TAG: /* Char_ty */0,
_0: trans(ty1._0, ty2._0)
};
case /* Format_arg_ty */8 :
exit = 6;
break;
case /* Format_subst_ty */9 :
exit = 7;
break;
case /* Alpha_ty */10 :
exit = 1;
break;
case /* Theta_ty */11 :
exit = 2;
break;
case /* Any_ty */12 :
exit = 3;
break;
case /* Reader_ty */13 :
exit = 4;
break;
case /* Ignored_reader_ty */14 :
exit = 5;
break;
}
}
break;
case /* String_ty */1 :
if (typeof ty2 === "number") {
exit = 8;
} else {
switch (ty2.TAG | 0) {
case /* String_ty */1 :
return {
TAG: /* String_ty */1,
_0: trans(ty1._0, ty2._0)
};
case /* Format_arg_ty */8 :
exit = 6;
break;
case /* Format_subst_ty */9 :
exit = 7;
break;
case /* Alpha_ty */10 :
exit = 1;
break;
case /* Theta_ty */11 :
exit = 2;
break;
case /* Any_ty */12 :
exit = 3;
break;
case /* Reader_ty */13 :
exit = 4;
break;
case /* Ignored_reader_ty */14 :
exit = 5;
break;
}
}
break;
case /* Int_ty */2 :
if (typeof ty2 === "number") {
exit = 8;
} else {
switch (ty2.TAG | 0) {
case /* Int_ty */2 :
return {
TAG: /* Int_ty */2,
_0: trans(ty1._0, ty2._0)
};
case /* Format_arg_ty */8 :
exit = 6;
break;
case /* Format_subst_ty */9 :
exit = 7;
break;
case /* Alpha_ty */10 :
exit = 1;
break;
case /* Theta_ty */11 :
exit = 2;
break;
case /* Any_ty */12 :
exit = 3;
break;
case /* Reader_ty */13 :
exit = 4;
break;
case /* Ignored_reader_ty */14 :
exit = 5;
break;
}
}
break;
case /* Int32_ty */3 :
if (typeof ty2 === "number") {
exit = 8;
} else {
switch (ty2.TAG | 0) {
case /* Int32_ty */3 :
return {
TAG: /* Int32_ty */3,
_0: trans(ty1._0, ty2._0)
};
case /* Format_arg_ty */8 :
exit = 6;
break;
case /* Format_subst_ty */9 :
exit = 7;
break;
case /* Alpha_ty */10 :
exit = 1;
break;
case /* Theta_ty */11 :
exit = 2;
break;
case /* Any_ty */12 :
exit = 3;
break;
case /* Reader_ty */13 :
exit = 4;
break;
case /* Ignored_reader_ty */14 :
exit = 5;
break;
}
}
break;
case /* Nativeint_ty */4 :
if (typeof ty2 === "number") {
exit = 8;
} else {
switch (ty2.TAG | 0) {
case /* Nativeint_ty */4 :
return {
TAG: /* Nativeint_ty */4,
_0: trans(ty1._0, ty2._0)
};
case /* Format_arg_ty */8 :
exit = 6;
break;
case /* Format_subst_ty */9 :
exit = 7;
break;
case /* Alpha_ty */10 :
exit = 1;
break;
case /* Theta_ty */11 :
exit = 2;
break;
case /* Any_ty */12 :
exit = 3;
break;
case /* Reader_ty */13 :
exit = 4;
break;
case /* Ignored_reader_ty */14 :
exit = 5;
break;
}
}
break;
case /* Int64_ty */5 :
if (typeof ty2 === "number") {
exit = 8;
} else {
switch (ty2.TAG | 0) {
case /* Int64_ty */5 :
return {
TAG: /* Int64_ty */5,
_0: trans(ty1._0, ty2._0)
};
case /* Format_arg_ty */8 :
exit = 6;
break;
case /* Format_subst_ty */9 :
exit = 7;
break;
case /* Alpha_ty */10 :
exit = 1;
break;
case /* Theta_ty */11 :
exit = 2;
break;
case /* Any_ty */12 :
exit = 3;
break;
case /* Reader_ty */13 :
exit = 4;
break;
case /* Ignored_reader_ty */14 :
exit = 5;
break;
}
}
break;
case /* Float_ty */6 :
if (typeof ty2 === "number") {
exit = 8;
} else {
switch (ty2.TAG | 0) {
case /* Float_ty */6 :
return {
TAG: /* Float_ty */6,
_0: trans(ty1._0, ty2._0)
};
case /* Format_arg_ty */8 :
exit = 6;
break;
case /* Format_subst_ty */9 :
exit = 7;
break;
case /* Alpha_ty */10 :
exit = 1;
break;
case /* Theta_ty */11 :
exit = 2;
break;
case /* Any_ty */12 :
exit = 3;
break;
case /* Reader_ty */13 :
exit = 4;
break;
case /* Ignored_reader_ty */14 :
exit = 5;
break;
}
}
break;
case /* Bool_ty */7 :
if (typeof ty2 === "number") {
exit = 8;
} else {
switch (ty2.TAG | 0) {
case /* Bool_ty */7 :
return {
TAG: /* Bool_ty */7,
_0: trans(ty1._0, ty2._0)
};
case /* Format_arg_ty */8 :
exit = 6;
break;
case /* Format_subst_ty */9 :
exit = 7;
break;
case /* Alpha_ty */10 :
exit = 1;
break;
case /* Theta_ty */11 :
exit = 2;
break;
case /* Any_ty */12 :
exit = 3;
break;
case /* Reader_ty */13 :
exit = 4;
break;
case /* Ignored_reader_ty */14 :
exit = 5;
break;
}
}
break;
case /* Format_arg_ty */8 :
if (typeof ty2 === "number") {
throw {
RE_EXN_ID: "Assert_failure",
_1: [
"camlinternalFormat.ml",
832,
26
],
Error: new Error()
};
}
switch (ty2.TAG | 0) {
case /* Format_arg_ty */8 :
return {
TAG: /* Format_arg_ty */8,
_0: trans(ty1._0, ty2._0),
_1: trans(ty1._1, ty2._1)
};
case /* Alpha_ty */10 :
exit = 1;
break;
case /* Theta_ty */11 :
exit = 2;
break;
case /* Any_ty */12 :
exit = 3;
break;
case /* Reader_ty */13 :
exit = 4;
break;
case /* Ignored_reader_ty */14 :
exit = 5;
break;
default:
throw {
RE_EXN_ID: "Assert_failure",
_1: [
"camlinternalFormat.ml",
832,
26
],
Error: new Error()
};
}
break;
case /* Format_subst_ty */9 :
if (typeof ty2 === "number") {
throw {
RE_EXN_ID: "Assert_failure",
_1: [
"camlinternalFormat.ml",
842,
28
],
Error: new Error()
};
}
switch (ty2.TAG | 0) {
case /* Format_arg_ty */8 :
exit = 6;
break;
case /* Format_subst_ty */9 :
var ty = trans(symm(ty1._1), ty2._0);
var match = fmtty_rel_det(ty);
Curry._1(match[1], /* Refl */0);
Curry._1(match[3], /* Refl */0);
return {
TAG: /* Format_subst_ty */9,
_0: ty1._0,
_1: ty2._1,
_2: trans(ty1._2, ty2._2)
};
case /* Alpha_ty */10 :
exit = 1;
break;
case /* Theta_ty */11 :
exit = 2;
break;
case /* Any_ty */12 :
exit = 3;
break;
case /* Reader_ty */13 :
exit = 4;
break;
case /* Ignored_reader_ty */14 :
exit = 5;
break;
default:
throw {
RE_EXN_ID: "Assert_failure",
_1: [
"camlinternalFormat.ml",
842,
28
],
Error: new Error()
};
}
break;
case /* Alpha_ty */10 :
if (typeof ty2 === "number") {
throw {
RE_EXN_ID: "Assert_failure",
_1: [
"camlinternalFormat.ml",
810,
21
],
Error: new Error()
};
}
if (ty2.TAG === /* Alpha_ty */10) {
return {
TAG: /* Alpha_ty */10,
_0: trans(ty1._0, ty2._0)
};
}
throw {
RE_EXN_ID: "Assert_failure",
_1: [
"camlinternalFormat.ml",