UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

36 lines (34 loc) 5.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const types_1 = require("./types"); class BuiltinInstanceMemberCallableProperty { constructor(property) { this.property = property; this.types = new Set([types_1.BuiltinType.InstanceMemberValue, types_1.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 })); } } } exports.BuiltinInstanceMemberCallableProperty = BuiltinInstanceMemberCallableProperty; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJ1aWx0aW5JbnN0YW5jZU1lbWJlckNhbGxhYmxlUHJvcGVydHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxtQ0FNaUI7QUFHakIsTUFBYSxxQ0FBcUM7SUFHaEQsWUFBb0MsUUFBZ0M7UUFBaEMsYUFBUSxHQUFSLFFBQVEsQ0FBd0I7UUFGcEQsVUFBSyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsbUJBQVcsQ0FBQyxtQkFBbUIsRUFBRSxtQkFBVyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUU1QixDQUFDO0lBRWpFLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxRQUFRLENBQ2IsRUFBaUIsRUFDakIsS0FBK0IsRUFDL0IsSUFBdUIsRUFDdkIsU0FBdUIsRUFDdkIsT0FBZ0I7UUFFaEIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRS9DLElBQUksT0FBTyxFQUFFO1lBRVgsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekI7UUFHRCxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5QyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9GLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVNLFNBQVMsQ0FBQyxFQUFpQixFQUFFLElBQTBCLEVBQUUsT0FBcUIsRUFBRSxPQUFPLEdBQUcsS0FBSztRQUNwRyxJQUFJLE9BQU8sRUFBRTtZQUVYLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3BCLEVBQUUsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFFckIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNoRztJQUNILENBQUM7Q0FDRjtBQTlDRCxzRkE4Q0MiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9idWlsdGlucy9CdWlsdGluSW5zdGFuY2VNZW1iZXJDYWxsYWJsZVByb3BlcnR5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7XG4gIEJ1aWx0aW5JbnN0YW5jZU1lbWJlckNhbGwsXG4gIEJ1aWx0aW5JbnN0YW5jZU1lbWJlclZhbHVlLFxuICBCdWlsdGluVHlwZSxcbiAgQ2FsbE1lbWJlckxpa2VFeHByZXNzaW9uLFxuICBNZW1iZXJMaWtlRXhwcmVzc2lvbixcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBleHBvcnQtbmFtZVxuZXhwb3J0IGNsYXNzIEJ1aWx0aW5JbnN0YW5jZU1lbWJlckNhbGxhYmxlUHJvcGVydHkgaW1wbGVtZW50cyBCdWlsdGluSW5zdGFuY2VNZW1iZXJWYWx1ZSwgQnVpbHRpbkluc3RhbmNlTWVtYmVyQ2FsbCB7XG4gIHB1YmxpYyByZWFkb25seSB0eXBlcyA9IG5ldyBTZXQoW0J1aWx0aW5UeXBlLkluc3RhbmNlTWVtYmVyVmFsdWUsIEJ1aWx0aW5UeXBlLkluc3RhbmNlTWVtYmVyQ2FsbF0pO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5OiB0cy5Qcm9wZXJ0eURlY2xhcmF0aW9uKSB7fVxuXG4gIHB1YmxpYyBjYW5DYWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIGVtaXRDYWxsKFxuICAgIHNiOiBTY3JpcHRCdWlsZGVyLFxuICAgIF9mdW5jOiBDYWxsTWVtYmVyTGlrZUV4cHJlc3Npb24sXG4gICAgbm9kZTogdHMuQ2FsbEV4cHJlc3Npb24sXG4gICAgb3B0aW9uc0luOiBWaXNpdE9wdGlvbnMsXG4gICAgdmlzaXRlZDogYm9vbGVhbixcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9uc0luKTtcblxuICAgIGlmICh2aXNpdGVkKSB7XG4gICAgICAvLyBbXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgfVxuXG4gICAgLy8gW2FyZ3NhcnJdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmFyZ3MpO1xuICAgIC8vIFt2YWwsIGFyZ3NhcnJdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmdldFNtYXJ0Q29udHJhY3RQcm9wZXJ0eSh7IHByb3BlcnR5OiB0aGlzLnByb3BlcnR5IH0pKTtcbiAgICAvLyBbdmFsXVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9uc0luLCBzYi5oZWxwZXJzLmludm9rZUNhbGwoeyBiaW5kVGhpczogZmFsc2UgfSkpO1xuICB9XG5cbiAgcHVibGljIGVtaXRWYWx1ZShzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogTWVtYmVyTGlrZUV4cHJlc3Npb24sIG9wdGlvbnM6IFZpc2l0T3B0aW9ucywgdmlzaXRlZCA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKHZpc2l0ZWQpIHtcbiAgICAgIC8vIFtdXG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zZXRWYWx1ZSkge1xuICAgICAgc2IuY29udGV4dC5yZXBvcnRVbnN1cHBvcnRlZChub2RlKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wdXNoVmFsdWUpIHtcbiAgICAgIC8vIFt2YWxdXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuZ2V0U21hcnRDb250cmFjdFByb3BlcnR5KHsgcHJvcGVydHk6IHRoaXMucHJvcGVydHkgfSkpO1xuICAgIH1cbiAgfVxufVxuIl19