UNPKG

rescript

Version:
1,704 lines (1,634 loc) 228 kB
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",