UNPKG

@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
"use strict"; 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;