time-to-botec/squiggle/node_modules/@rescript/std/lib/js/printexc.js

101 lines
2.3 KiB
JavaScript
Raw Normal View History

'use strict';
var Curry = require("./curry.js");
var Pervasives = require("./pervasives.js");
var Caml_exceptions = require("./caml_exceptions.js");
var Caml_js_exceptions = require("./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
};
}
exports.to_string = to_string;
exports.print = print;
exports.$$catch = $$catch;
exports.register_printer = register_printer;
/* No side effect */