UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

31 lines (29 loc) 4.08 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 WhileStatementCompiler extends NodeCompiler_1.NodeCompiler { constructor() { super(...arguments); this.kind = typescript_1.default.SyntaxKind.WhileStatement; } visitNode(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.emitHelper(node, sb.noPushValueOptions(options), sb.helpers.forLoop({ condition: () => { const expr = ts_utils_1.tsUtils.expression.getExpression(node); sb.visit(expr, options); sb.emitHelper(node, options, sb.helpers.toBoolean({ type: sb.context.analysis.getType(expr) })); }, each: (innerOptions) => { sb.visit(ts_utils_1.tsUtils.statement.getStatement(node), innerOptions); }, cleanup: () => { }, })); } } exports.WhileStatementCompiler = WhileStatementCompiler; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIldoaWxlU3RhdGVtZW50Q29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQTRDO0FBQzVDLG9FQUE0QjtBQUM1QixrREFBK0M7QUFJL0MsTUFBYSxzQkFBdUIsU0FBUSwyQkFBK0I7SUFBM0U7O1FBQ2tCLFNBQUksR0FBRyxvQkFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7SUFzQnRELENBQUM7SUFwQlEsU0FBUyxDQUFDLEVBQWlCLEVBQUUsSUFBdUIsRUFBRSxTQUF1QjtRQUNsRixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLEVBQ0osRUFBRSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUM5QixFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNqQixTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUNkLE1BQU0sSUFBSSxHQUFHLGtCQUFPLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEQsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3hCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEcsQ0FBQztZQUNELElBQUksRUFBRSxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUNyQixFQUFFLENBQUMsS0FBSyxDQUFDLGtCQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUMvRCxDQUFDO1lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUVkLENBQUM7U0FDRixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXZCRCx3REF1QkMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9zdGF0ZW1lbnQvV2hpbGVTdGF0ZW1lbnRDb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRzVXRpbHMgfSBmcm9tICdAbmVvLW9uZS90cy11dGlscyc7XG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBOb2RlQ29tcGlsZXIgfSBmcm9tICcuLi9Ob2RlQ29tcGlsZXInO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIFdoaWxlU3RhdGVtZW50Q29tcGlsZXIgZXh0ZW5kcyBOb2RlQ29tcGlsZXI8dHMuV2hpbGVTdGF0ZW1lbnQ+IHtcbiAgcHVibGljIHJlYWRvbmx5IGtpbmQgPSB0cy5TeW50YXhLaW5kLldoaWxlU3RhdGVtZW50O1xuXG4gIHB1YmxpYyB2aXNpdE5vZGUoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLldoaWxlU3RhdGVtZW50LCBvcHRpb25zSW46IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBzYi5ub1B1c2hWYWx1ZU9wdGlvbnMob3B0aW9ucyksXG4gICAgICBzYi5oZWxwZXJzLmZvckxvb3Aoe1xuICAgICAgICBjb25kaXRpb246ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBleHByID0gdHNVdGlscy5leHByZXNzaW9uLmdldEV4cHJlc3Npb24obm9kZSk7XG4gICAgICAgICAgc2IudmlzaXQoZXhwciwgb3B0aW9ucyk7XG4gICAgICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLnRvQm9vbGVhbih7IHR5cGU6IHNiLmNvbnRleHQuYW5hbHlzaXMuZ2V0VHlwZShleHByKSB9KSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVhY2g6IChpbm5lck9wdGlvbnMpID0+IHtcbiAgICAgICAgICBzYi52aXNpdCh0c1V0aWxzLnN0YXRlbWVudC5nZXRTdGF0ZW1lbnQobm9kZSksIGlubmVyT3B0aW9ucyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNsZWFudXA6ICgpID0+IHtcbiAgICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=