@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
33 lines (31 loc) • 1.17 kB
JavaScript
import { BuiltinType, } from './types';
export class BuiltinInstanceMemberCallableProperty {
constructor(property) {
this.property = property;
this.types = new Set([BuiltinType.InstanceMemberValue, BuiltinType.InstanceMemberCall]);
}
canCall() {
return true;
}
emitCall(sb, _func, node, optionsIn, visited) {
const options = sb.pushValueOptions(optionsIn);
if (visited) {
sb.emitOp(node, 'DROP');
}
sb.emitHelper(node, options, sb.helpers.args);
sb.emitHelper(node, options, sb.helpers.getSmartContractProperty({ property: this.property }));
sb.emitHelper(node, optionsIn, sb.helpers.invokeCall({ bindThis: false }));
}
emitValue(sb, node, options, visited = false) {
if (visited) {
sb.emitOp(node, 'DROP');
}
if (options.setValue) {
sb.context.reportUnsupported(node);
}
if (options.pushValue) {
sb.emitHelper(node, options, sb.helpers.getSmartContractProperty({ property: this.property }));
}
}
}
//# sourceMappingURL=BuiltinInstanceMemberCallableProperty.js.map