UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

31 lines (29 loc) 1.22 kB
import { tsUtils } from '@neo-one/ts-utils'; import { BuiltinType } from './types'; export class BuiltinInstanceMemberAccessor { constructor(getter, setter) { this.getter = getter; this.setter = setter; this.types = new Set([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: 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 })); } } } //# sourceMappingURL=BuiltinInstanceMemberAccessor.js.map