UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

34 lines (32 loc) 5.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ts_utils_1 = require("@neo-one/ts-utils"); const types_1 = require("./types"); class BuiltinInstanceMemberAccessor { constructor(getter, setter) { this.getter = getter; this.setter = setter; this.types = new Set([types_1.BuiltinType.InstanceMemberValue]); } emitValue(sb, node, options, visited = false) { if (visited) { sb.emitOp(node, 'DROP'); } const { getter, setter } = this; if (options.setValue && setter !== undefined) { sb.emitPushInt(setter, 1); sb.emitOp(setter, 'PACK'); sb.withScope(setter, options, (innerOptions) => { sb.emitHelper(setter, sb.pushValueOptions(innerOptions), sb.helpers.parameters({ params: ts_utils_1.tsUtils.parametered.getParameters(setter), })); sb.emitHelper(setter, innerOptions, sb.helpers.invokeSmartContractMethod({ method: setter })); }); } if (options.pushValue && getter !== undefined) { sb.emitHelper(getter, options, sb.helpers.invokeSmartContractMethod({ method: getter })); } } } exports.BuiltinInstanceMemberAccessor = BuiltinInstanceMemberAccessor; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJ1aWx0aW5JbnN0YW5jZU1lbWJlckFjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsZ0RBQTRDO0FBSTVDLG1DQUF3RjtBQUd4RixNQUFhLDZCQUE2QjtJQUd4QyxZQUNtQixNQUFrQyxFQUNsQyxNQUFrQztRQURsQyxXQUFNLEdBQU4sTUFBTSxDQUE0QjtRQUNsQyxXQUFNLEdBQU4sTUFBTSxDQUE0QjtRQUpyQyxVQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxtQkFBVyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztJQUtoRSxDQUFDO0lBRUcsU0FBUyxDQUFDLEVBQWlCLEVBQUUsSUFBMEIsRUFBRSxPQUFxQixFQUFFLE9BQU8sR0FBRyxLQUFLO1FBQ3BHLElBQUksT0FBTyxFQUFFO1lBRVgsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekI7UUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztRQUNoQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUU1QyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUUxQixFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUUxQixFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRTtnQkFDN0MsRUFBRSxDQUFDLFVBQVUsQ0FDWCxNQUFNLEVBQ04sRUFBRSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxFQUNqQyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztvQkFDcEIsTUFBTSxFQUFFLGtCQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7aUJBQ2xELENBQUMsQ0FDSCxDQUFDO2dCQUVGLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRyxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFFN0MsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzFGO0lBQ0gsQ0FBQztDQUNGO0FBdkNELHNFQXVDQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2J1aWx0aW5zL0J1aWx0aW5JbnN0YW5jZU1lbWJlckFjY2Vzc29yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHNVdGlscyB9IGZyb20gJ0BuZW8tb25lL3RzLXV0aWxzJztcbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBCdWlsdGluSW5zdGFuY2VNZW1iZXJWYWx1ZSwgQnVpbHRpblR5cGUsIE1lbWJlckxpa2VFeHByZXNzaW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBleHBvcnQtbmFtZVxuZXhwb3J0IGNsYXNzIEJ1aWx0aW5JbnN0YW5jZU1lbWJlckFjY2Vzc29yIGltcGxlbWVudHMgQnVpbHRpbkluc3RhbmNlTWVtYmVyVmFsdWUge1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZXMgPSBuZXcgU2V0KFtCdWlsdGluVHlwZS5JbnN0YW5jZU1lbWJlclZhbHVlXSk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZ2V0dGVyPzogdHMuR2V0QWNjZXNzb3JEZWNsYXJhdGlvbixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNldHRlcj86IHRzLlNldEFjY2Vzc29yRGVjbGFyYXRpb24sXG4gICkge31cblxuICBwdWJsaWMgZW1pdFZhbHVlKHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiBNZW1iZXJMaWtlRXhwcmVzc2lvbiwgb3B0aW9uczogVmlzaXRPcHRpb25zLCB2aXNpdGVkID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAodmlzaXRlZCkge1xuICAgICAgLy8gW11cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZ2V0dGVyLCBzZXR0ZXIgfSA9IHRoaXM7XG4gICAgaWYgKG9wdGlvbnMuc2V0VmFsdWUgJiYgc2V0dGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFsxLCB2YWxdXG4gICAgICBzYi5lbWl0UHVzaEludChzZXR0ZXIsIDEpO1xuICAgICAgLy8gW2FyZ3NhcnJdXG4gICAgICBzYi5lbWl0T3Aoc2V0dGVyLCAnUEFDSycpO1xuICAgICAgLy8gW11cbiAgICAgIHNiLndpdGhTY29wZShzZXR0ZXIsIG9wdGlvbnMsIChpbm5lck9wdGlvbnMpID0+IHtcbiAgICAgICAgc2IuZW1pdEhlbHBlcihcbiAgICAgICAgICBzZXR0ZXIsXG4gICAgICAgICAgc2IucHVzaFZhbHVlT3B0aW9ucyhpbm5lck9wdGlvbnMpLFxuICAgICAgICAgIHNiLmhlbHBlcnMucGFyYW1ldGVycyh7XG4gICAgICAgICAgICBwYXJhbXM6IHRzVXRpbHMucGFyYW1ldGVyZWQuZ2V0UGFyYW1ldGVycyhzZXR0ZXIpLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICAvLyBbXVxuICAgICAgICBzYi5lbWl0SGVscGVyKHNldHRlciwgaW5uZXJPcHRpb25zLCBzYi5oZWxwZXJzLmludm9rZVNtYXJ0Q29udHJhY3RNZXRob2QoeyBtZXRob2Q6IHNldHRlciB9KSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wdXNoVmFsdWUgJiYgZ2V0dGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFt2YWxdXG4gICAgICBzYi5lbWl0SGVscGVyKGdldHRlciwgb3B0aW9ucywgc2IuaGVscGVycy5pbnZva2VTbWFydENvbnRyYWN0TWV0aG9kKHsgbWV0aG9kOiBnZXR0ZXIgfSkpO1xuICAgIH1cbiAgfVxufVxuIl19