@harmoniclabs/plu-ts-onchain
Version:
An embedded DSL for Cardano smart contracts creation coupled with a library for Cardano transactions, all in Typescript
28 lines (27 loc) • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports._plet = void 0;
var IRHoisted_1 = require("../../../IR/IRNodes/IRHoisted.js");
var IRLetted_1 = require("../../../IR/IRNodes/IRLetted.js");
var IRSelfCall_1 = require("../../../IR/IRNodes/IRSelfCall.js");
var IRVar_1 = require("../../../IR/IRNodes/IRVar.js");
var isClosedIRTerm_1 = require("../../../IR/utils/isClosedIRTerm.js");
var Term_1 = require("../../Term/index.js");
function _plet(varValue) {
return new Term_1.Term(varValue.type, function (cfg, dbn) {
var ir = varValue.toIR(cfg, dbn);
// `compileIRToUPLC` can handle it even if this check is not present
// but why spend useful tree iterations if we can avoid them here?
if (ir instanceof IRLetted_1.IRLetted ||
ir instanceof IRHoisted_1.IRHoisted ||
ir instanceof IRVar_1.IRVar ||
ir instanceof IRSelfCall_1.IRSelfCall) {
return ir;
}
if ((0, isClosedIRTerm_1.isClosedIRTerm)(ir)) {
return new IRHoisted_1.IRHoisted(ir);
}
return new IRLetted_1.IRLetted(Number(dbn), ir);
});
}
exports._plet = _plet;