UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

30 lines (28 loc) 4.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ts_utils_1 = require("@neo-one/ts-utils"); const BuiltinInstanceMemberCall_1 = require("./BuiltinInstanceMemberCall"); class BuiltinInstanceMemberMethod extends BuiltinInstanceMemberCall_1.BuiltinInstanceMemberCall { constructor(method) { super(); this.method = method; } 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.withScope(this.method, optionsIn, (innerOptions) => { sb.emitHelper(this.method, sb.pushValueOptions(innerOptions), sb.helpers.parameters({ params: ts_utils_1.tsUtils.parametered.getParameters(this.method), })); sb.emitHelper(node, innerOptions, sb.helpers.invokeSmartContractMethod({ method: this.method })); }); } } exports.BuiltinInstanceMemberMethod = BuiltinInstanceMemberMethod; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJ1aWx0aW5JbnN0YW5jZU1lbWJlck1ldGhvZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGdEQUE0QztBQUk1QywyRUFBd0U7QUFJeEUsTUFBYSwyQkFBNEIsU0FBUSxxREFBeUI7SUFDeEUsWUFBb0MsTUFBNEI7UUFDOUQsS0FBSyxFQUFFLENBQUM7UUFEMEIsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7SUFFaEUsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxRQUFRLENBQ2IsRUFBaUIsRUFDakIsS0FBK0IsRUFDL0IsSUFBdUIsRUFDdkIsU0FBdUIsRUFDdkIsT0FBZ0I7UUFFaEIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRS9DLElBQUksT0FBTyxFQUFFO1lBRVgsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekI7UUFHRCxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDcEQsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLENBQUMsTUFBTSxFQUNYLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsRUFDakMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQ3BCLE1BQU0sRUFBRSxrQkFBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUN2RCxDQUFDLENBQ0gsQ0FBQztZQUVGLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFyQ0Qsa0VBcUNDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvYnVpbHRpbnMvQnVpbHRpbkluc3RhbmNlTWVtYmVyTWV0aG9kLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHNVdGlscyB9IGZyb20gJ0BuZW8tb25lL3RzLXV0aWxzJztcbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBCdWlsdGluSW5zdGFuY2VNZW1iZXJDYWxsIH0gZnJvbSAnLi9CdWlsdGluSW5zdGFuY2VNZW1iZXJDYWxsJztcbmltcG9ydCB7IENhbGxNZW1iZXJMaWtlRXhwcmVzc2lvbiB9IGZyb20gJy4vdHlwZXMnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgZXhwb3J0LW5hbWVcbmV4cG9ydCBjbGFzcyBCdWlsdGluSW5zdGFuY2VNZW1iZXJNZXRob2QgZXh0ZW5kcyBCdWlsdGluSW5zdGFuY2VNZW1iZXJDYWxsIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWV0aG9kOiB0cy5NZXRob2REZWNsYXJhdGlvbikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgY2FuQ2FsbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0Q2FsbChcbiAgICBzYjogU2NyaXB0QnVpbGRlcixcbiAgICBfZnVuYzogQ2FsbE1lbWJlckxpa2VFeHByZXNzaW9uLFxuICAgIG5vZGU6IHRzLkNhbGxFeHByZXNzaW9uLFxuICAgIG9wdGlvbnNJbjogVmlzaXRPcHRpb25zLFxuICAgIHZpc2l0ZWQ6IGJvb2xlYW4sXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG5cbiAgICBpZiAodmlzaXRlZCkge1xuICAgICAgLy8gW11cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgIH1cblxuICAgIC8vIFthcmdzYXJyXVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy5hcmdzKTtcbiAgICBzYi53aXRoU2NvcGUodGhpcy5tZXRob2QsIG9wdGlvbnNJbiwgKGlubmVyT3B0aW9ucykgPT4ge1xuICAgICAgc2IuZW1pdEhlbHBlcihcbiAgICAgICAgdGhpcy5tZXRob2QsXG4gICAgICAgIHNiLnB1c2hWYWx1ZU9wdGlvbnMoaW5uZXJPcHRpb25zKSxcbiAgICAgICAgc2IuaGVscGVycy5wYXJhbWV0ZXJzKHtcbiAgICAgICAgICBwYXJhbXM6IHRzVXRpbHMucGFyYW1ldGVyZWQuZ2V0UGFyYW1ldGVycyh0aGlzLm1ldGhvZCksXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIC8vIFt2YWxdXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIGlubmVyT3B0aW9ucywgc2IuaGVscGVycy5pbnZva2VTbWFydENvbnRyYWN0TWV0aG9kKHsgbWV0aG9kOiB0aGlzLm1ldGhvZCB9KSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==