@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
34 lines (32 loc) • 5.49 kB
JavaScript
;
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==