@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
35 lines (33 loc) • 1.42 kB
JavaScript
;
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