import * as Curry from "./curry.js"; import * as Pervasives from "./pervasives.js"; import * as Caml_exceptions from "./caml_exceptions.js"; import * as Caml_js_exceptions from "./caml_js_exceptions.js"; var printers = { contents: /* [] */0 }; function locfmt(s, linum, start, finish, msg) { return "File \"" + s + "\", line " + linum + ", characters " + start + "-" + finish + ": " + msg; } var fields = (function(x){ var s = "" var index = 1 while ("_"+index in x){ s += x ["_" + index]; ++ index } if(index === 1){ return s } return "(" + s + ")" }); function to_string(x) { var _param = printers.contents; while(true) { var param = _param; if (param) { var s; try { s = Curry._1(param.hd, x); } catch (exn){ s = undefined; } if (s !== undefined) { return s; } _param = param.tl; continue ; } if (x.RE_EXN_ID === "Match_failure") { var match = x._1; var $$char = match[2]; return locfmt(match[0], match[1], $$char, $$char + 5 | 0, "Pattern matching failed"); } if (x.RE_EXN_ID === "Assert_failure") { var match$1 = x._1; var $$char$1 = match$1[2]; return locfmt(match$1[0], match$1[1], $$char$1, $$char$1 + 6 | 0, "Assertion failed"); } if (x.RE_EXN_ID === "Undefined_recursive_module") { var match$2 = x._1; var $$char$2 = match$2[2]; return locfmt(match$2[0], match$2[1], $$char$2, $$char$2 + 6 | 0, "Undefined recursive module"); } var constructor = Caml_exceptions.exn_slot_name(x); return constructor + fields(x); }; } function print(fct, arg) { try { return Curry._1(fct, arg); } catch (raw_x){ var x = Caml_js_exceptions.internalToOCamlException(raw_x); console.log("Uncaught exception: " + to_string(x)); throw x; } } function $$catch(fct, arg) { try { return Curry._1(fct, arg); } catch (raw_x){ var x = Caml_js_exceptions.internalToOCamlException(raw_x); console.log("Uncaught exception: " + to_string(x)); return Pervasives.exit(2); } } function register_printer(fn) { printers.contents = { hd: fn, tl: printers.contents }; } export { to_string , print , $$catch , register_printer , } /* No side effect */