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