UNPKG

bs-platform

Version:

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

68 lines (59 loc) 1.47 kB
'use strict'; var Obj = require("./obj.js"); var Curry = require("./curry.js"); var Caml_obj = require("./caml_obj.js"); var Caml_exceptions = require("./caml_exceptions.js"); var Undefined = Caml_exceptions.create("CamlinternalLazy.Undefined"); function raise_undefined(param) { throw Undefined; } function force_lazy_block(blk) { var closure = blk[0]; blk[0] = raise_undefined; try { var result = Curry._1(closure, /* () */0); blk[0] = result; Caml_obj.caml_obj_set_tag(blk, Obj.forward_tag); return result; } catch (e){ blk[0] = (function (param) { throw e; }); throw e; } } function force_val_lazy_block(blk) { var closure = blk[0]; blk[0] = raise_undefined; var result = Curry._1(closure, /* () */0); blk[0] = result; Caml_obj.caml_obj_set_tag(blk, Obj.forward_tag); return result; } function force(lzv) { var t = lzv.tag | 0; if (t === Obj.forward_tag) { return lzv[0]; } else if (t !== Obj.lazy_tag) { return lzv; } else { return force_lazy_block(lzv); } } function force_val(lzv) { var t = lzv.tag | 0; if (t === Obj.forward_tag) { return lzv[0]; } else if (t !== Obj.lazy_tag) { return lzv; } else { return force_val_lazy_block(lzv); } } exports.Undefined = Undefined; exports.force_lazy_block = force_lazy_block; exports.force_val_lazy_block = force_val_lazy_block; exports.force = force; exports.force_val = force_val; /* No side effect */