@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
35 lines (33 loc) • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CreateCallArrayHelper = void 0;
const ts_utils_1 = require("@neo-one/ts-utils");
const Helper_1 = require("../Helper");
const types_1 = require("../types");
class CreateCallArrayHelper extends Helper_1.Helper {
emit(sb, node, outerOptions) {
if (!outerOptions.pushValue) {
return;
}
sb.emitHelper(node, outerOptions, sb.helpers.createFunctionArray({
body: (innerOptions) => {
sb.withScope(node, innerOptions, (options) => {
sb.emitHelper(node, options, sb.helpers.parameters({ params: ts_utils_1.tsUtils.parametered.getParameters(node) }));
const body = ts_utils_1.tsUtils.body.getBodyOrThrow(node);
if (ts_utils_1.tsUtils.guards.isExpression(body)) {
sb.visit(body, sb.pushValueOptions(options));
types_1.handleReturnTypeAssignment(sb.context, body);
sb.emitHelper(node, options, sb.helpers.return);
}
else {
sb.visit(body, options);
sb.emitHelper(node, sb.pushValueOptions(options), sb.helpers.wrapUndefined);
sb.emitHelper(node, options, sb.helpers.return);
}
});
},
}));
}
}
exports.CreateCallArrayHelper = CreateCallArrayHelper;
//# sourceMappingURL=CreateCallArrayHelper.js.map