UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

34 lines (32 loc) 5.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 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=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyZWF0ZUNhbGxBcnJheUhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGdEQUF1RjtBQUd2RixzQ0FBbUM7QUFDbkMsb0NBQXNEO0FBSXRELE1BQWEscUJBQXNCLFNBQVEsZUFBcUQ7SUFDdkYsSUFBSSxDQUNULEVBQWlCLEVBQ2pCLElBQW1ELEVBQ25ELFlBQTBCO1FBRTFCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFO1lBQzNCLE9BQU87U0FDUjtRQUVELEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLFlBQVksRUFDWixFQUFFLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO1lBQzdCLElBQUksRUFBRSxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUNyQixFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDM0MsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLGtCQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDekcsTUFBTSxJQUFJLEdBQUcsa0JBQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMvQyxJQUFJLGtCQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFFckMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7d0JBQzdDLGtDQUEwQixDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBRTdDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNqRDt5QkFBTTt3QkFDTCxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFFeEIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7d0JBRTVFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNqRDtnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7U0FDRixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXBDRCxzREFvQ0MiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9oZWxwZXIvZnVuY3Rpb24vQ3JlYXRlQ2FsbEFycmF5SGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9kaWVkTm9kZSwgQm9keWFibGVOb2RlLCBQYXJhbWV0ZXJlZE5vZGUsIHRzVXRpbHMgfSBmcm9tICdAbmVvLW9uZS90cy11dGlscyc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vSGVscGVyJztcbmltcG9ydCB7IGhhbmRsZVJldHVyblR5cGVBc3NpZ25tZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyBJbnB1dDogW11cbi8vIE91dHB1dDogW2ZhcnJdXG5leHBvcnQgY2xhc3MgQ3JlYXRlQ2FsbEFycmF5SGVscGVyIGV4dGVuZHMgSGVscGVyPChCb2RpZWROb2RlIHwgQm9keWFibGVOb2RlKSAmIFBhcmFtZXRlcmVkTm9kZT4ge1xuICBwdWJsaWMgZW1pdChcbiAgICBzYjogU2NyaXB0QnVpbGRlcixcbiAgICBub2RlOiAoQm9kaWVkTm9kZSB8IEJvZHlhYmxlTm9kZSkgJiBQYXJhbWV0ZXJlZE5vZGUsXG4gICAgb3V0ZXJPcHRpb25zOiBWaXNpdE9wdGlvbnMsXG4gICk6IHZvaWQge1xuICAgIGlmICghb3V0ZXJPcHRpb25zLnB1c2hWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICBub2RlLFxuICAgICAgb3V0ZXJPcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5jcmVhdGVGdW5jdGlvbkFycmF5KHtcbiAgICAgICAgYm9keTogKGlubmVyT3B0aW9ucykgPT4ge1xuICAgICAgICAgIHNiLndpdGhTY29wZShub2RlLCBpbm5lck9wdGlvbnMsIChvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMucGFyYW1ldGVycyh7IHBhcmFtczogdHNVdGlscy5wYXJhbWV0ZXJlZC5nZXRQYXJhbWV0ZXJzKG5vZGUpIH0pKTtcbiAgICAgICAgICAgIGNvbnN0IGJvZHkgPSB0c1V0aWxzLmJvZHkuZ2V0Qm9keU9yVGhyb3cobm9kZSk7XG4gICAgICAgICAgICBpZiAodHNVdGlscy5ndWFyZHMuaXNFeHByZXNzaW9uKGJvZHkpKSB7XG4gICAgICAgICAgICAgIC8vIFt2YWxdXG4gICAgICAgICAgICAgIHNiLnZpc2l0KGJvZHksIHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9ucykpO1xuICAgICAgICAgICAgICBoYW5kbGVSZXR1cm5UeXBlQXNzaWdubWVudChzYi5jb250ZXh0LCBib2R5KTtcbiAgICAgICAgICAgICAgLy8gW11cbiAgICAgICAgICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLnJldHVybik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzYi52aXNpdChib2R5LCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgLy8gW3VuZGVmaW5lZFZhbF1cbiAgICAgICAgICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnMpLCBzYi5oZWxwZXJzLndyYXBVbmRlZmluZWQpO1xuICAgICAgICAgICAgICAvLyBbXVxuICAgICAgICAgICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMucmV0dXJuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==