UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

35 lines (33 loc) 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BuiltinInstanceMemberAccessor = void 0; 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=BuiltinInstanceMemberAccessor.js.map