UNPKG

bs-platform

Version:

bucklescript compiler, ocaml standard libary by bucklescript and its required runtime support

1,729 lines (1,666 loc) 204 kB
'use strict'; var Char = require("./char.js"); var Block = require("./block.js"); var Bytes = require("./bytes.js"); var Curry = require("./curry.js"); var $$Buffer = require("./buffer.js"); var $$String = require("./string.js"); var Caml_io = require("./caml_io.js"); var Caml_obj = require("./caml_obj.js"); var Caml_bytes = require("./caml_bytes.js"); var Caml_int32 = require("./caml_int32.js"); var Pervasives = require("./pervasives.js"); var Caml_format = require("./caml_format.js"); var Caml_string = require("./caml_string.js"); var Caml_primitive = require("./caml_primitive.js"); var Caml_exceptions = require("./caml_exceptions.js"); var Caml_js_exceptions = require("./caml_js_exceptions.js"); var Caml_builtin_exceptions = require("./caml_builtin_exceptions.js"); var CamlinternalFormatBasics = require("./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)); char_set[str_ind] = Pervasives.char_of_int(Caml_bytes.get(char_set, str_ind) | mask); return /* () */0; } var freeze_char_set = Bytes.to_string; function rev_char_set(char_set) { var char_set$prime = Bytes.make(32, /* "\000" */0); for(var i = 0; i <= 31; ++i){ char_set$prime[i] = Pervasives.char_of_int(Caml_string.get(char_set, i) ^ 255); } return Caml_bytes.bytes_to_string(char_set$prime); } 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 /* Lit_padding */Block.__(0, [ /* Right */1, pad_opt ]); } else { return /* No_padding */0; } } function prec_of_prec_opt(prec_opt) { if (prec_opt !== undefined) { return /* Lit_precision */[prec_opt]; } else { return /* No_precision */0; } } function param_format_of_ignored_format(ign, fmt) { if (typeof ign === "number") { switch (ign) { case 0 : return /* Param_format_EBB */[/* Char */Block.__(0, [fmt])]; case 1 : return /* Param_format_EBB */[/* Caml_char */Block.__(1, [fmt])]; case 2 : return /* Param_format_EBB */[/* Bool */Block.__(9, [fmt])]; case 3 : return /* Param_format_EBB */[/* Reader */Block.__(19, [fmt])]; case 4 : return /* Param_format_EBB */[/* Scan_next_char */Block.__(22, [fmt])]; } } else { switch (ign.tag | 0) { case 0 : return /* Param_format_EBB */[/* String */Block.__(2, [ pad_of_pad_opt(ign[0]), fmt ])]; case 1 : return /* Param_format_EBB */[/* Caml_string */Block.__(3, [ pad_of_pad_opt(ign[0]), fmt ])]; case 2 : return /* Param_format_EBB */[/* Int */Block.__(4, [ ign[0], pad_of_pad_opt(ign[1]), /* No_precision */0, fmt ])]; case 3 : return /* Param_format_EBB */[/* Int32 */Block.__(5, [ ign[0], pad_of_pad_opt(ign[1]), /* No_precision */0, fmt ])]; case 4 : return /* Param_format_EBB */[/* Nativeint */Block.__(6, [ ign[0], pad_of_pad_opt(ign[1]), /* No_precision */0, fmt ])]; case 5 : return /* Param_format_EBB */[/* Int64 */Block.__(7, [ ign[0], pad_of_pad_opt(ign[1]), /* No_precision */0, fmt ])]; case 6 : return /* Param_format_EBB */[/* Float */Block.__(8, [ /* Float_f */0, pad_of_pad_opt(ign[0]), prec_of_prec_opt(ign[1]), fmt ])]; case 7 : return /* Param_format_EBB */[/* Format_arg */Block.__(13, [ ign[0], ign[1], fmt ])]; case 8 : return /* Param_format_EBB */[/* Format_subst */Block.__(14, [ ign[0], ign[1], fmt ])]; case 9 : return /* Param_format_EBB */[/* Scan_char_set */Block.__(20, [ ign[0], ign[1], fmt ])]; case 10 : return /* Param_format_EBB */[/* Scan_get_counter */Block.__(21, [ ign[0], fmt ])]; } } } function buffer_check_size(buf, overhead) { var len = buf[/* bytes */1].length; var min_len = buf[/* ind */0] + overhead | 0; if (min_len > len) { var new_len = Caml_primitive.caml_int_max((len << 1), min_len); var new_str = Caml_bytes.caml_create_bytes(new_len); Bytes.blit(buf[/* bytes */1], 0, new_str, 0, len); buf[/* bytes */1] = new_str; return /* () */0; } else { return 0; } } function buffer_add_char(buf, c) { buffer_check_size(buf, 1); buf[/* bytes */1][buf[/* ind */0]] = c; buf[/* ind */0] = buf[/* ind */0] + 1 | 0; return /* () */0; } function buffer_add_string(buf, s) { var str_len = s.length; buffer_check_size(buf, str_len); $$String.blit(s, 0, buf[/* bytes */1], buf[/* ind */0], str_len); buf[/* ind */0] = buf[/* ind */0] + str_len | 0; return /* () */0; } function buffer_contents(buf) { return Bytes.sub_string(buf[/* bytes */1], 0, buf[/* ind */0]); } function char_of_iconv(iconv) { switch (iconv) { case 0 : case 1 : case 2 : return /* "d" */100; case 3 : case 4 : case 5 : return /* "i" */105; case 6 : case 7 : return /* "x" */120; case 8 : case 9 : return /* "X" */88; case 10 : case 11 : return /* "o" */111; case 12 : return /* "u" */117; } } function char_of_fconv(fconv) { switch (fconv) { case 0 : case 1 : case 2 : return /* "f" */102; case 3 : case 4 : case 5 : return /* "e" */101; case 6 : case 7 : case 8 : return /* "E" */69; case 9 : case 10 : case 11 : return /* "g" */103; case 12 : case 13 : case 14 : return /* "G" */71; case 15 : return /* "F" */70; } } function char_of_counter(counter) { switch (counter) { case 0 : return /* "l" */108; case 1 : return /* "n" */110; case 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) { if (is_in_char_set(set, Pervasives.char_of_int(i))) { var set$1 = set; var i$1 = i; var match = Pervasives.char_of_int(i$1); var switcher = match - 45 | 0; if (switcher > 48 || switcher < 0) { if (switcher >= 210) { return print_char(buf, 255); } else { return print_second(set$1, i$1 + 1 | 0); } } else if (switcher > 47 || switcher < 1) { return print_out(set$1, i$1 + 1 | 0); } else { return print_second(set$1, i$1 + 1 | 0); } } else { _i = i + 1 | 0; continue ; } } else { return 0; } }; }; var print_second = function (set, i) { if (is_in_char_set(set, Pervasives.char_of_int(i))) { var match = Pervasives.char_of_int(i); var exit = 0; var switcher = match - 45 | 0; if (switcher > 48 || switcher < 0) { if (switcher >= 210) { print_char(buf, 254); return print_char(buf, 255); } else { exit = 1; } } else if ((switcher > 47 || switcher < 1) && !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); } else { exit = 1; } if (exit === 1) { if (is_in_char_set(set, Pervasives.char_of_int(i + 1 | 0))) { var set$1 = set; var i$1 = i - 1 | 0; var _j = i + 2 | 0; while(true) { var j = _j; if (j === 256 || !is_in_char_set(set$1, 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$1, j + 1 | 0); } else { return 0; } } else { _j = j + 1 | 0; continue ; } }; } else { print_char(buf, i - 1 | 0); print_char(buf, i); return print_out(set, i + 2 | 0); } } } else { 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); } else { return 0; } }; 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 0 : return buffer_add_char(buf, /* "-" */45); case 1 : return /* () */0; case 2 : return buffer_add_char(buf, /* "0" */48); } } function bprint_ignored_flag(buf, ign_flag) { if (ign_flag) { return buffer_add_char(buf, /* "_" */95); } else { return 0; } } function bprint_pad_opt(buf, pad_opt) { if (pad_opt !== undefined) { return buffer_add_string(buf, String(pad_opt)); } else { return /* () */0; } } function bprint_padding(buf, pad) { if (typeof pad === "number") { return /* () */0; } else { bprint_padty(buf, pad[0]); if (pad.tag) { return buffer_add_char(buf, /* "*" */42); } else { return buffer_add_string(buf, String(pad[1])); } } } function bprint_precision(buf, prec) { if (typeof prec === "number") { if (prec !== 0) { return buffer_add_string(buf, ".*"); } else { return /* () */0; } } else { buffer_add_char(buf, /* "." */46); return buffer_add_string(buf, String(prec[0])); } } function bprint_iconv_flag(buf, iconv) { switch (iconv) { case 1 : case 4 : return buffer_add_char(buf, /* "+" */43); case 2 : case 5 : return buffer_add_char(buf, /* " " */32); case 7 : case 9 : case 11 : return buffer_add_char(buf, /* "#" */35); case 0 : case 3 : case 6 : case 8 : case 10 : case 12 : return /* () */0; } } 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 1 : case 4 : case 7 : case 10 : case 13 : return buffer_add_char(buf, /* "+" */43); case 2 : case 5 : case 8 : case 11 : case 14 : return buffer_add_char(buf, /* " " */32); case 0 : case 3 : case 6 : case 9 : case 12 : case 15 : return /* () */0; } } 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 0 : return "@]"; case 1 : return "@}"; case 2 : return "@?"; case 3 : return "@\n"; case 4 : return "@."; case 5 : return "@@"; case 6 : return "@%"; } } else { switch (formatting_lit.tag | 0) { case 0 : case 1 : return formatting_lit[0]; case 2 : return "@" + Caml_bytes.bytes_to_string(Bytes.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 - 1 | 0; i <= i_finish; ++i){ bprint_char_literal(buf, Caml_string.get(str, i)); } return /* () */0; } function bprint_fmtty(buf, _fmtty) { while(true) { var fmtty = _fmtty; if (typeof fmtty === "number") { return /* () */0; } else { switch (fmtty.tag | 0) { case 0 : buffer_add_string(buf, "%c"); _fmtty = fmtty[0]; continue ; case 1 : buffer_add_string(buf, "%s"); _fmtty = fmtty[0]; continue ; case 2 : buffer_add_string(buf, "%i"); _fmtty = fmtty[0]; continue ; case 3 : buffer_add_string(buf, "%li"); _fmtty = fmtty[0]; continue ; case 4 : buffer_add_string(buf, "%ni"); _fmtty = fmtty[0]; continue ; case 5 : buffer_add_string(buf, "%Li"); _fmtty = fmtty[0]; continue ; case 6 : buffer_add_string(buf, "%f"); _fmtty = fmtty[0]; continue ; case 7 : buffer_add_string(buf, "%B"); _fmtty = fmtty[0]; continue ; case 8 : buffer_add_string(buf, "%{"); bprint_fmtty(buf, fmtty[0]); buffer_add_string(buf, "%}"); _fmtty = fmtty[1]; continue ; case 9 : buffer_add_string(buf, "%("); bprint_fmtty(buf, fmtty[0]); buffer_add_string(buf, "%)"); _fmtty = fmtty[2]; continue ; case 10 : buffer_add_string(buf, "%a"); _fmtty = fmtty[0]; continue ; case 11 : buffer_add_string(buf, "%t"); _fmtty = fmtty[0]; continue ; case 12 : buffer_add_string(buf, "%?"); _fmtty = fmtty[0]; continue ; case 13 : buffer_add_string(buf, "%r"); _fmtty = fmtty[0]; continue ; case 14 : buffer_add_string(buf, "%_r"); _fmtty = fmtty[0]; continue ; } } }; } function int_of_custom_arity(param) { if (param) { return 1 + int_of_custom_arity(param[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 /* () */0; } else { switch (fmt$1.tag | 0) { case 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 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 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 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 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 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 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 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 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 9 : buffer_add_char(buf, /* "%" */37); bprint_ignored_flag(buf, ign_flag); buffer_add_char(buf, /* "B" */66); _ign_flag = false; _fmt = fmt$1[0]; continue ; case 10 : buffer_add_string(buf, "%!"); _fmt = fmt$1[0]; continue ; case 11 : bprint_string_literal(buf, fmt$1[0]); _fmt = fmt$1[1]; continue ; case 12 : bprint_char_literal(buf, fmt$1[0]); _fmt = fmt$1[1]; continue ; case 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 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 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 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 17 : bprint_string_literal(buf, string_of_formatting_lit(fmt$1[0])); _fmt = fmt$1[1]; continue ; case 18 : bprint_string_literal(buf, "@{"); bprint_string_literal(buf, string_of_formatting_gen(fmt$1[0])); _fmt = fmt$1[1]; continue ; case 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 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 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 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 23 : var match = param_format_of_ignored_format(fmt$1[0], fmt$1[1]); _ign_flag = true; _fmt = match[0]; continue ; case 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 = /* record */[ /* ind */0, /* bytes */Caml_bytes.caml_create_bytes(16) ]; bprint_fmt(buf, fmt); return buffer_contents(buf); } function symm(param) { if (typeof param === "number") { return /* End_of_fmtty */0; } else { switch (param.tag | 0) { case 0 : return /* Char_ty */Block.__(0, [symm(param[0])]); case 1 : return /* String_ty */Block.__(1, [symm(param[0])]); case 2 : return /* Int_ty */Block.__(2, [symm(param[0])]); case 3 : return /* Int32_ty */Block.__(3, [symm(param[0])]); case 4 : return /* Nativeint_ty */Block.__(4, [symm(param[0])]); case 5 : return /* Int64_ty */Block.__(5, [symm(param[0])]); case 6 : return /* Float_ty */Block.__(6, [symm(param[0])]); case 7 : return /* Bool_ty */Block.__(7, [symm(param[0])]); case 8 : return /* Format_arg_ty */Block.__(8, [ param[0], symm(param[1]) ]); case 9 : return /* Format_subst_ty */Block.__(9, [ param[1], param[0], symm(param[2]) ]); case 10 : return /* Alpha_ty */Block.__(10, [symm(param[0])]); case 11 : return /* Theta_ty */Block.__(11, [symm(param[0])]); case 12 : return /* Any_ty */Block.__(12, [symm(param[0])]); case 13 : return /* Reader_ty */Block.__(13, [symm(param[0])]); case 14 : return /* Ignored_reader_ty */Block.__(14, [symm(param[0])]); } } } function fmtty_rel_det(param) { if (typeof param === "number") { return /* tuple */[ (function (param) { return /* Refl */0; }), (function (param) { return /* Refl */0; }), (function (param) { return /* Refl */0; }), (function (param) { return /* Refl */0; }) ]; } else { switch (param.tag | 0) { case 0 : var match = fmtty_rel_det(param[0]); var af = match[1]; var fa = match[0]; return /* tuple */[ (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 1 : var match$1 = fmtty_rel_det(param[0]); var af$1 = match$1[1]; var fa$1 = match$1[0]; return /* tuple */[ (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 2 : var match$2 = fmtty_rel_det(param[0]); var af$2 = match$2[1]; var fa$2 = match$2[0]; return /* tuple */[ (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 3 : var match$3 = fmtty_rel_det(param[0]); var af$3 = match$3[1]; var fa$3 = match$3[0]; return /* tuple */[ (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 4 : var match$4 = fmtty_rel_det(param[0]); var af$4 = match$4[1]; var fa$4 = match$4[0]; return /* tuple */[ (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 5 : var match$5 = fmtty_rel_det(param[0]); var af$5 = match$5[1]; var fa$5 = match$5[0]; return /* tuple */[ (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 6 : var match$6 = fmtty_rel_det(param[0]); var af$6 = match$6[1]; var fa$6 = match$6[0]; return /* tuple */[ (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 7 : var match$7 = fmtty_rel_det(param[0]); var af$7 = match$7[1]; var fa$7 = match$7[0]; return /* tuple */[ (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 8 : var match$8 = fmtty_rel_det(param[1]); var af$8 = match$8[1]; var fa$8 = match$8[0]; return /* tuple */[ (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 9 : var match$9 = fmtty_rel_det(param[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(param[0]), param[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 /* tuple */[ (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 10 : var match$11 = fmtty_rel_det(param[0]); var af$10 = match$11[1]; var fa$10 = match$11[0]; return /* tuple */[ (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 11 : var match$12 = fmtty_rel_det(param[0]); var af$11 = match$12[1]; var fa$11 = match$12[0]; return /* tuple */[ (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 12 : var match$13 = fmtty_rel_det(param[0]); var af$12 = match$13[1]; var fa$12 = match$13[0]; return /* tuple */[ (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 13 : var match$14 = fmtty_rel_det(param[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 /* tuple */[ (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 14 : var match$15 = fmtty_rel_det(param[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 /* tuple */[ (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; } else { switch (ty2.tag | 0) { case 8 : exit = 6; break; case 9 : exit = 7; break; case 10 : exit = 1; break; case 11 : exit = 2; break; case 12 : exit = 3; break; case 13 : exit = 4; break; case 14 : exit = 5; break; default: throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 816, 23 ] ]; } } } else { switch (ty1.tag | 0) { case 0 : if (typeof ty2 === "number") { exit = 8; } else { switch (ty2.tag | 0) { case 0 : return /* Char_ty */Block.__(0, [trans(ty1[0], ty2[0])]); case 8 : exit = 6; break; case 9 : exit = 7; break; case 10 : exit = 1; break; case 11 : exit = 2; break; case 12 : exit = 3; break; case 13 : exit = 4; break; case 14 : exit = 5; break; } } break; case 1 : if (typeof ty2 === "number") { exit = 8; } else { switch (ty2.tag | 0) { case 1 : return /* String_ty */Block.__(1, [trans(ty1[0], ty2[0])]); case 8 : exit = 6; break; case 9 : exit = 7; break; case 10 : exit = 1; break; case 11 : exit = 2; break; case 12 : exit = 3; break; case 13 : exit = 4; break; case 14 : exit = 5; break; } } break; case 2 : if (typeof ty2 === "number") { exit = 8; } else { switch (ty2.tag | 0) { case 2 : return /* Int_ty */Block.__(2, [trans(ty1[0], ty2[0])]); case 8 : exit = 6; break; case 9 : exit = 7; break; case 10 : exit = 1; break; case 11 : exit = 2; break; case 12 : exit = 3; break; case 13 : exit = 4; break; case 14 : exit = 5; break; } } break; case 3 : if (typeof ty2 === "number") { exit = 8; } else { switch (ty2.tag | 0) { case 3 : return /* Int32_ty */Block.__(3, [trans(ty1[0], ty2[0])]); case 8 : exit = 6; break; case 9 : exit = 7; break; case 10 : exit = 1; break; case 11 : exit = 2; break; case 12 : exit = 3; break; case 13 : exit = 4; break; case 14 : exit = 5; break; } } break; case 4 : if (typeof ty2 === "number") { exit = 8; } else { switch (ty2.tag | 0) { case 4 : return /* Nativeint_ty */Block.__(4, [trans(ty1[0], ty2[0])]); case 8 : exit = 6; break; case 9 : exit = 7; break; case 10 : exit = 1; break; case 11 : exit = 2; break; case 12 : exit = 3; break; case 13 : exit = 4; break; case 14 : exit = 5; break; } } break; case 5 : if (typeof ty2 === "number") { exit = 8; } else { switch (ty2.tag | 0) { case 5 : return /* Int64_ty */Block.__(5, [trans(ty1[0], ty2[0])]); case 8 : exit = 6; break; case 9 : exit = 7; break; case 10 : exit = 1; break; case 11 : exit = 2; break; case 12 : exit = 3; break; case 13 : exit = 4; break; case 14 : exit = 5; break; } } break; case 6 : if (typeof ty2 === "number") { exit = 8; } else { switch (ty2.tag | 0) { case 6 : return /* Float_ty */Block.__(6, [trans(ty1[0], ty2[0])]); case 8 : exit = 6; break; case 9 : exit = 7; break; case 10 : exit = 1; break; case 11 : exit = 2; break; case 12 : exit = 3; break; case 13 : exit = 4; break; case 14 : exit = 5; break; } } break; case 7 : if (typeof ty2 === "number") { exit = 8; } else { switch (ty2.tag | 0) { case 7 : return /* Bool_ty */Block.__(7, [trans(ty1[0], ty2[0])]); case 8 : exit = 6; break; case 9 : exit = 7; break; case 10 : exit = 1; break; case 11 : exit = 2; break; case 12 : exit = 3; break; case 13 : exit = 4; break; case 14 : exit = 5; break; } } break; case 8 : if (typeof ty2 === "number") { throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 802, 26 ] ]; } else { switch (ty2.tag | 0) { case 8 : return /* Format_arg_ty */Block.__(8, [ trans(ty1[0], ty2[0]), trans(ty1[1], ty2[1]) ]); case 10 : exit = 1; break; case 11 : exit = 2; break; case 12 : exit = 3; break; case 13 : exit = 4; break; case 14 : exit = 5; break; default: throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 802, 26 ] ]; } } break; case 9 : if (typeof ty2 === "number") { throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 812, 28 ] ]; } else { switch (ty2.tag | 0) { case 8 : exit = 6; break; case 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 /* Format_subst_ty */Block.__(9, [ ty1[0], ty2[1], trans(ty1[2], ty2[2]) ]); case 10 : exit = 1; break; case 11 : exit = 2; break; case 12 : exit = 3; break; case 13 : exit = 4; break; case 14 : exit = 5; break; default: throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 812, 28 ] ]; } } break; case 10 : if (typeof ty2 === "number") { throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 780, 21 ] ]; } else if (ty2.tag === 10) { return /* Alpha_ty */Block.__(10, [trans(ty1[0], ty2[0])]); } else { throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 780, 21 ] ]; } case 11 : if (typeof ty2 === "number") { throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 784, 21 ] ]; } else { switch (ty2.tag | 0) { case 10 : exit = 1; break; case 11 : return /* Theta_ty */Block.__(11, [trans(ty1[0], ty2[0])]); default: throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 784, 21 ] ]; } } break; case 12 : if (typeof ty2 === "number") { throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 788, 19 ] ]; } else { switch (ty2.tag | 0) { case 10 : exit = 1; break; case 11 : exit = 2; break; case 12 : return /* Any_ty */Block.__(12, [trans(ty1[0], ty2[0])]); default: throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 788, 19 ] ]; } } break; case 13 : if (typeof ty2 === "number") { throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 792, 22 ] ]; } else { switch (ty2.tag | 0) { case 10 : exit = 1; break; case 11 : exit = 2; break; case 12 : exit = 3; break; case 13 : return /* Reader_ty */Block.__(13, [trans(ty1[0], ty2[0])]); default: throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 792, 22 ] ]; } } break; case 14 : if (typeof ty2 === "number") { throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 797, 30 ] ]; } else { switch (ty2.tag | 0) { case 10 : exit = 1; break; case 11 : exit = 2; break; case 12 : exit = 3; break; case 13 : exit = 4; break; case 14 : return /* Ignored_reader_ty */Block.__(14, [trans(ty1[0], ty2[0])]); default: throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "camlinternalFormat.ml", 797, 30 ] ]; } } break; } } switch (exit) { case 1 : throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[