bs-platform
Version:
bucklescript compiler, ocaml standard libary by bucklescript and its required runtime support
1,648 lines (1,578 loc) • 209 kB
JavaScript
'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);
}
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 /* Ignored_char */0 :
return /* Param_format_EBB */[/* Char */Block.__(0, [fmt])];
case /* Ignored_caml_char */1 :
return /* Param_format_EBB */[/* Caml_char */Block.__(1, [fmt])];
case /* Ignored_reader */2 :
return /* Param_format_EBB */[/* Reader */Block.__(19, [fmt])];
case /* Ignored_scan_next_char */3 :
return /* Param_format_EBB */[/* Scan_next_char */Block.__(22, [fmt])];
}
} else {
switch (ign.tag | 0) {
case /* Ignored_string */0 :
return /* Param_format_EBB */[/* String */Block.__(2, [
pad_of_pad_opt(ign[0]),
fmt
])];
case /* Ignored_caml_string */1 :
return /* Param_format_EBB */[/* Caml_string */Block.__(3, [
pad_of_pad_opt(ign[0]),
fmt
])];
case /* Ignored_int */2 :
return /* Param_format_EBB */[/* Int */Block.__(4, [
ign[0],
pad_of_pad_opt(ign[1]),
/* No_precision */0,
fmt
])];
case /* Ignored_int32 */3 :
return /* Param_format_EBB */[/* Int32 */Block.__(5, [
ign[0],
pad_of_pad_opt(ign[1]),
/* No_precision */0,
fmt
])];
case /* Ignored_nativeint */4 :
return /* Param_format_EBB */[/* Nativeint */Block.__(6, [
ign[0],
pad_of_pad_opt(ign[1]),
/* No_precision */0,
fmt
])];
case /* Ignored_int64 */5 :
return /* Param_format_EBB */[/* Int64 */Block.__(7, [
ign[0],
pad_of_pad_opt(ign[1]),
/* No_precision */0,
fmt
])];
case /* Ignored_float */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 /* Ignored_bool */7 :
return /* Param_format_EBB */[/* Bool */Block.__(9, [
pad_of_pad_opt(ign[0]),
fmt
])];
case /* Ignored_format_arg */8 :
return /* Param_format_EBB */[/* Format_arg */Block.__(13, [
ign[0],
ign[1],
fmt
])];
case /* Ignored_format_subst */9 :
return /* Param_format_EBB */[/* Format_subst */Block.__(14, [
ign[0],
ign[1],
fmt
])];
case /* Ignored_scan_char_set */10 :
return /* Param_format_EBB */[/* Scan_char_set */Block.__(20, [
ign[0],
ign[1],
fmt
])];
case /* Ignored_scan_get_counter */11 :
return /* Param_format_EBB */[/* Scan_get_counter */Block.__(21, [
ign[0],
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_primitive.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);
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);
var switcher = match - 45 | 0;
if (switcher > 48 || switcher < 0) {
if (switcher >= 210) {
return print_char(buf, 255);
} else {
return print_second(set, i + 1 | 0);
}
} else if (switcher > 47 || switcher < 1) {
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);
var switcher = match - 45 | 0;
if (switcher > 48 || switcher < 0) {
if (switcher >= 210) {
print_char(buf, 254);
return print_char(buf, 255);
}
} 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);
}
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) {
bprint_padty(buf, pad[0]);
return buffer_add_char(buf, /* "*" */42);
}
bprint_padty(buf, pad[0]);
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 ;
}
} 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_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; 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$prime = param_format_of_ignored_format(fmt$1[0], fmt$1[1]);
_ign_flag = true;
_fmt = fmt$prime[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 /* Char_ty */Block.__(0, [symm(rest[0])]);
case /* String_ty */1 :
return /* String_ty */Block.__(1, [symm(rest[0])]);
case /* Int_ty */2 :
return /* Int_ty */Block.__(2, [symm(rest[0])]);
case /* Int32_ty */3 :
return /* Int32_ty */Block.__(3, [symm(rest[0])]);
case /* Nativeint_ty */4 :
return /* Nativeint_ty */Block.__(4, [symm(rest[0])]);
case /* Int64_ty */5 :
return /* Int64_ty */Block.__(5, [symm(rest[0])]);
case /* Float_ty */6 :
return /* Float_ty */Block.__(6, [symm(rest[0])]);
case /* Bool_ty */7 :
return /* Bool_ty */Block.__(7, [symm(rest[0])]);
case /* Format_arg_ty */8 :
return /* Format_arg_ty */Block.__(8, [
rest[0],
symm(rest[1])
]);
case /* Format_subst_ty */9 :
return /* Format_subst_ty */Block.__(9, [
rest[1],
rest[0],
symm(rest[2])
]);
case /* Alpha_ty */10 :
return /* Alpha_ty */Block.__(10, [symm(rest[0])]);
case /* Theta_ty */11 :
return /* Theta_ty */Block.__(11, [symm(rest[0])]);
case /* Any_ty */12 :
return /* Any_ty */Block.__(12, [symm(rest[0])]);
case /* Reader_ty */13 :
return /* Reader_ty */Block.__(13, [symm(rest[0])]);
case /* Ignored_reader_ty */14 :
return /* Ignored_reader_ty */Block.__(14, [symm(rest[0])]);
}
}
function fmtty_rel_det(rest) {
if (typeof rest === "number") {
return /* tuple */[
(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 /* 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 /* String_ty */1 :
var match$1 = fmtty_rel_det(rest[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 /* Int_ty */2 :
var match$2 = fmtty_rel_det(rest[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 /* Int32_ty */3 :
var match$3 = fmtty_rel_det(rest[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 /* Nativeint_ty */4 :
var match$4 = fmtty_rel_det(rest[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 /* Int64_ty */5 :
var match$5 = fmtty_rel_det(rest[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 /* Float_ty */6 :
var match$6 = fmtty_rel_det(rest[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 /* Bool_ty */7 :
var match$7 = fmtty_rel_det(rest[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 /* 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 /* 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 /* 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 /* 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 /* Alpha_ty */10 :
var match$11 = fmtty_rel_det(rest[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 /* Theta_ty */11 :
var match$12 = fmtty_rel_det(rest[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 /* Any_ty */12 :
var match$13 = fmtty_rel_det(rest[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 /* 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 /* 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 /* 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 /* 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;
}
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 [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"camlinternalFormat.ml",
846,
23
]
];
}
} 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 /* Char_ty */Block.__(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 /* String_ty */Block.__(1, [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 /* Int_ty */Block.__(2, [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 /* Int32_ty */Block.__(3, [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 /* Nativeint_ty */Block.__(4, [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 /* Int64_ty */Block.__(5, [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 /* Float_ty */Block.__(6, [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 /* Bool_ty */Block.__(7, [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 [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"camlinternalFormat.ml",
832,
26
]
];
}
switch (ty2.tag | 0) {
case /* Format_arg_ty */8 :
return /* Format_arg_ty */Block.__(8, [
trans(ty1[0], ty2[0]),
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 [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"camlinternalFormat.ml",
832,
26
]
];
}
break;
case /* Format_subst_ty */9 :
if (typeof ty2 === "number") {
throw [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"camlinternalFormat.ml",
842,
28
]
];
}
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 /* Format_subst_ty */Block.__(9, [
ty1[0],
ty2[1],
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 [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"camlinternalFormat.ml",
842,
28
]
];
}
break;
case /* Alpha_ty */10 :
if (typeof ty2 === "number") {
throw [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"camlinternalFormat.ml",
810,
21
]
];
}
if (ty2.tag === /* Alpha_ty */10) {
return /* Alpha_ty */Block.__(10, [trans(ty1[0], ty2[0])]);
}
throw [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"camlinternalFormat.ml",
810,
21
]
];
case /* Theta_ty */11 :
if (typeof ty2 === "number") {
throw [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"camlinternalFormat.ml",
814,
21
]
];
}
switch (ty2.tag | 0) {
case /* Alpha_ty */10 :
exit = 1;
break;
case /* Theta_ty */11 :
return /* Theta_ty */Block.__(11, [trans(ty1[0], ty2[0])]);
default:
throw [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"camlinternalFormat.ml",
814,
21
]
];
}
break;
case /* Any_ty */12 :
if (typeof ty2 === "number") {
throw [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"camlinternalFormat.ml",
818,
19
]
];
}
switch (ty2.tag | 0) {
case /* Alpha_ty */10 :
exit = 1;
break;
case /* Theta_ty */11 :
exit = 2;
break;
case /* Any_ty */12 :
return /* Any_ty */Block.__(12, [trans(ty1[0], ty2[0])]);
default:
throw [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"camlinternalFormat.ml",
818,
19
]
];
}
break;
case /* Reader_ty */13 :
if (typeof ty2 === "number") {
throw [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"camlinternalFormat.ml",
822,
22
]
];