UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

40 lines (38 loc) 4.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const ts_utils_1 = require("@neo-one/ts-utils"); const typescript_1 = tslib_1.__importDefault(require("typescript")); const NodeCompiler_1 = require("../NodeCompiler"); class IfStatementCompiler extends NodeCompiler_1.NodeCompiler { constructor() { super(...arguments); this.kind = typescript_1.default.SyntaxKind.IfStatement; } visitNode(sb, node, options) { const condition = () => { const cond = ts_utils_1.tsUtils.expression.getExpression(node); sb.visit(cond, sb.pushValueOptions(options)); sb.emitHelper(cond, sb.pushValueOptions(options), sb.helpers.toBoolean({ type: sb.context.analysis.getType(cond), })); }; const whenTrue = () => { sb.visit(ts_utils_1.tsUtils.statement.getThenStatement(node), options); }; let whenFalse; const nodeWhenFalse = ts_utils_1.tsUtils.statement.getElseStatement(node); if (nodeWhenFalse !== undefined) { whenFalse = () => { sb.visit(nodeWhenFalse, options); }; } sb.emitHelper(node, options, sb.helpers.if({ condition, whenTrue, whenFalse, })); } } exports.IfStatementCompiler = IfStatementCompiler; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIklmU3RhdGVtZW50Q29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQTRDO0FBQzVDLG9FQUE0QjtBQUM1QixrREFBK0M7QUFJL0MsTUFBYSxtQkFBb0IsU0FBUSwyQkFBNEI7SUFBckU7O1FBQ2tCLFNBQUksR0FBRyxvQkFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7SUFxQ25ELENBQUM7SUFuQ1EsU0FBUyxDQUFDLEVBQWlCLEVBQUUsSUFBb0IsRUFBRSxPQUFxQjtRQUM3RSxNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUU7WUFDckIsTUFBTSxJQUFJLEdBQUcsa0JBQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzdDLEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFDNUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7Z0JBQ25CLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2FBQ3hDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ3BCLEVBQUUsQ0FBQyxLQUFLLENBQUMsa0JBQU8sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDO1FBRUYsSUFBSSxTQUFTLENBQUM7UUFDZCxNQUFNLGFBQWEsR0FBRyxrQkFBTyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvRCxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUU7WUFDL0IsU0FBUyxHQUFHLEdBQUcsRUFBRTtnQkFDZixFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUM7U0FDSDtRQUVELEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLE9BQU8sRUFDUCxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNaLFNBQVM7WUFDVCxRQUFRO1lBQ1IsU0FBUztTQUNWLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdENELGtEQXNDQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL3N0YXRlbWVudC9JZlN0YXRlbWVudENvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHNVdGlscyB9IGZyb20gJ0BuZW8tb25lL3RzLXV0aWxzJztcbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IE5vZGVDb21waWxlciB9IGZyb20gJy4uL05vZGVDb21waWxlcic7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgSWZTdGF0ZW1lbnRDb21waWxlciBleHRlbmRzIE5vZGVDb21waWxlcjx0cy5JZlN0YXRlbWVudD4ge1xuICBwdWJsaWMgcmVhZG9ubHkga2luZCA9IHRzLlN5bnRheEtpbmQuSWZTdGF0ZW1lbnQ7XG5cbiAgcHVibGljIHZpc2l0Tm9kZShzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuSWZTdGF0ZW1lbnQsIG9wdGlvbnM6IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGNvbmRpdGlvbiA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmQgPSB0c1V0aWxzLmV4cHJlc3Npb24uZ2V0RXhwcmVzc2lvbihub2RlKTtcbiAgICAgIHNiLnZpc2l0KGNvbmQsIHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9ucykpO1xuICAgICAgc2IuZW1pdEhlbHBlcihcbiAgICAgICAgY29uZCxcbiAgICAgICAgc2IucHVzaFZhbHVlT3B0aW9ucyhvcHRpb25zKSxcbiAgICAgICAgc2IuaGVscGVycy50b0Jvb2xlYW4oe1xuICAgICAgICAgIHR5cGU6IHNiLmNvbnRleHQuYW5hbHlzaXMuZ2V0VHlwZShjb25kKSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH07XG5cbiAgICBjb25zdCB3aGVuVHJ1ZSA9ICgpID0+IHtcbiAgICAgIHNiLnZpc2l0KHRzVXRpbHMuc3RhdGVtZW50LmdldFRoZW5TdGF0ZW1lbnQobm9kZSksIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICBsZXQgd2hlbkZhbHNlO1xuICAgIGNvbnN0IG5vZGVXaGVuRmFsc2UgPSB0c1V0aWxzLnN0YXRlbWVudC5nZXRFbHNlU3RhdGVtZW50KG5vZGUpO1xuICAgIGlmIChub2RlV2hlbkZhbHNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdoZW5GYWxzZSA9ICgpID0+IHtcbiAgICAgICAgc2IudmlzaXQobm9kZVdoZW5GYWxzZSwgb3B0aW9ucyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICBub2RlLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHNiLmhlbHBlcnMuaWYoe1xuICAgICAgICBjb25kaXRpb24sXG4gICAgICAgIHdoZW5UcnVlLFxuICAgICAgICB3aGVuRmFsc2UsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=