UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

36 lines (34 loc) 4.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ts_utils_1 = require("@neo-one/ts-utils"); const BuiltinInstanceMemberCall_1 = require("../BuiltinInstanceMemberCall"); class ArrayPush extends BuiltinInstanceMemberCall_1.BuiltinInstanceMemberCall { constructor() { super(...arguments); this.isReadonly = false; } canCall(_sb, _func, _node) { return true; } emitCall(sb, func, node, optionsIn, visited) { const options = sb.pushValueOptions(optionsIn); if (!visited) { sb.visit(ts_utils_1.tsUtils.expression.getExpression(func), options); } sb.emitHelper(node, options, sb.helpers.unwrapArray); ts_utils_1.tsUtils.argumented.getArguments(node).forEach((arg) => { sb.emitOp(node, 'DUP'); sb.visit(arg, options); sb.emitOp(node, 'APPEND'); }); sb.emitOp(node, 'ARRAYSIZE'); if (optionsIn.pushValue) { sb.emitHelper(node, options, sb.helpers.wrapNumber); } else { sb.emitOp(node, 'DROP'); } } } exports.ArrayPush = ArrayPush; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInB1c2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxnREFBNEM7QUFJNUMsNEVBQXlFO0FBSXpFLE1BQWEsU0FBVSxTQUFRLHFEQUF5QjtJQUF4RDs7UUFDcUIsZUFBVSxHQUFHLEtBQUssQ0FBQztJQXVDeEMsQ0FBQztJQXJDUSxPQUFPLENBQUMsR0FBa0IsRUFBRSxLQUErQixFQUFFLEtBQXdCO1FBQzFGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFFBQVEsQ0FDYixFQUFpQixFQUNqQixJQUE4QixFQUM5QixJQUF1QixFQUN2QixTQUF1QixFQUN2QixPQUFnQjtRQUVoQixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUVaLEVBQUUsQ0FBQyxLQUFLLENBQUMsa0JBQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzNEO1FBR0QsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckQsa0JBQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBRXBELEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZCLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDN0IsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFO1lBRXZCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3JEO2FBQU07WUFFTCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7Q0FDRjtBQXhDRCw4QkF3Q0MiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9idWlsdGlucy9hcnJheS9wdXNoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHNVdGlscyB9IGZyb20gJ0BuZW8tb25lL3RzLXV0aWxzJztcbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCdWlsdGluSW5zdGFuY2VNZW1iZXJDYWxsIH0gZnJvbSAnLi4vQnVpbHRpbkluc3RhbmNlTWVtYmVyQ2FsbCc7XG5pbXBvcnQgeyBDYWxsTWVtYmVyTGlrZUV4cHJlc3Npb24gfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBleHBvcnQtbmFtZVxuZXhwb3J0IGNsYXNzIEFycmF5UHVzaCBleHRlbmRzIEJ1aWx0aW5JbnN0YW5jZU1lbWJlckNhbGwge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNSZWFkb25seSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjYW5DYWxsKF9zYjogU2NyaXB0QnVpbGRlciwgX2Z1bmM6IENhbGxNZW1iZXJMaWtlRXhwcmVzc2lvbiwgX25vZGU6IHRzLkNhbGxFeHByZXNzaW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgZW1pdENhbGwoXG4gICAgc2I6IFNjcmlwdEJ1aWxkZXIsXG4gICAgZnVuYzogQ2FsbE1lbWJlckxpa2VFeHByZXNzaW9uLFxuICAgIG5vZGU6IHRzLkNhbGxFeHByZXNzaW9uLFxuICAgIG9wdGlvbnNJbjogVmlzaXRPcHRpb25zLFxuICAgIHZpc2l0ZWQ6IGJvb2xlYW4sXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG4gICAgaWYgKCF2aXNpdGVkKSB7XG4gICAgICAvLyBbYXJyYXlWYWxdXG4gICAgICBzYi52aXNpdCh0c1V0aWxzLmV4cHJlc3Npb24uZ2V0RXhwcmVzc2lvbihmdW5jKSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gW2Fycl1cbiAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMudW53cmFwQXJyYXkpO1xuICAgIHRzVXRpbHMuYXJndW1lbnRlZC5nZXRBcmd1bWVudHMobm9kZSkuZm9yRWFjaCgoYXJnKSA9PiB7XG4gICAgICAvLyBbYXJyLCBhcnJdXG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RVUCcpO1xuICAgICAgLy8gW3ZhbCwgYXJyLCBhcnJdXG4gICAgICBzYi52aXNpdChhcmcsIG9wdGlvbnMpO1xuICAgICAgLy8gW2Fycl1cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnQVBQRU5EJyk7XG4gICAgfSk7XG4gICAgLy8gW251bWJlcl1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ0FSUkFZU0laRScpO1xuICAgIGlmIChvcHRpb25zSW4ucHVzaFZhbHVlKSB7XG4gICAgICAvLyBbdmFsXVxuICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLndyYXBOdW1iZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBbXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgfVxuICB9XG59XG4iXX0=