UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

33 lines (31 loc) 5.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ts_utils_1 = require("@neo-one/ts-utils"); const SmartContractForBase_1 = require("../SmartContractForBase"); class SmartContractFor extends SmartContractForBase_1.SmartContractForBase { emitInitial(sb, _func, node, addressName, options) { if (ts_utils_1.tsUtils.argumented.getArguments(node).length < 1) { return; } const arg = ts_utils_1.tsUtils.argumented.getArguments(node)[0]; sb.visit(arg, options); sb.scope.set(sb, arg, options, addressName); } emitInvoke(sb, _func, node, prop, addressName, callBuffer, options) { if (ts_utils_1.tsUtils.argumented.getArguments(node).length < 1) { return; } const arg = ts_utils_1.tsUtils.argumented.getArguments(node)[0]; const scriptHash = sb.context.analysis.extractLiteralAddress(arg); if (scriptHash === undefined) { sb.scope.get(sb, arg, options, addressName); sb.emitHelper(prop, options, sb.helpers.unwrapBuffer); sb.emitOp(prop, 'CALL_ED', callBuffer); } else { sb.emitOp(prop, 'CALL_E', Buffer.concat([callBuffer, scriptHash])); } } } exports.SmartContractFor = SmartContractFor; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGdEQUE0QztBQU01QyxrRUFBK0Q7QUFHL0QsTUFBYSxnQkFBaUIsU0FBUSwyQ0FBb0I7SUFDOUMsV0FBVyxDQUNuQixFQUFpQixFQUNqQixLQUEyQixFQUMzQixJQUF1QixFQUN2QixXQUFpQixFQUNqQixPQUFxQjtRQUVyQixJQUFJLGtCQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBRXBELE9BQU87U0FDUjtRQUVELE1BQU0sR0FBRyxHQUFHLGtCQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVyRCxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV2QixFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRVMsVUFBVSxDQUNsQixFQUFpQixFQUNqQixLQUEyQixFQUMzQixJQUF1QixFQUN2QixJQUFvQixFQUNwQixXQUFpQixFQUNqQixVQUFrQixFQUNsQixPQUFxQjtRQUVyQixJQUFJLGtCQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBRXBELE9BQU87U0FDUjtRQUVELE1BQU0sR0FBRyxHQUFHLGtCQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRSxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFFNUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFNUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFdEQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ3hDO2FBQU07WUFFTCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEU7SUFDSCxDQUFDO0NBQ0Y7QUFoREQsNENBZ0RDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvYnVpbHRpbnMvY29udHJhY3Qvc21hcnRDb250cmFjdC9mb3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0c1V0aWxzIH0gZnJvbSAnQG5lby1vbmUvdHMtdXRpbHMnO1xuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NiJztcbmltcG9ydCB7IE5hbWUgfSBmcm9tICcuLi8uLi8uLi9zY29wZSc7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBNZW1iZXJMaWtlRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFNtYXJ0Q29udHJhY3RGb3JCYXNlIH0gZnJvbSAnLi4vU21hcnRDb250cmFjdEZvckJhc2UnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgZXhwb3J0LW5hbWVcbmV4cG9ydCBjbGFzcyBTbWFydENvbnRyYWN0Rm9yIGV4dGVuZHMgU21hcnRDb250cmFjdEZvckJhc2Uge1xuICBwcm90ZWN0ZWQgZW1pdEluaXRpYWwoXG4gICAgc2I6IFNjcmlwdEJ1aWxkZXIsXG4gICAgX2Z1bmM6IE1lbWJlckxpa2VFeHByZXNzaW9uLFxuICAgIG5vZGU6IHRzLkNhbGxFeHByZXNzaW9uLFxuICAgIGFkZHJlc3NOYW1lOiBOYW1lLFxuICAgIG9wdGlvbnM6IFZpc2l0T3B0aW9ucyxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRzVXRpbHMuYXJndW1lbnRlZC5nZXRBcmd1bWVudHMobm9kZSkubGVuZ3RoIDwgMSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhcmcgPSB0c1V0aWxzLmFyZ3VtZW50ZWQuZ2V0QXJndW1lbnRzKG5vZGUpWzBdO1xuICAgIC8vIFtidWZmZXJWYWxdXG4gICAgc2IudmlzaXQoYXJnLCBvcHRpb25zKTtcbiAgICAvLyBbXVxuICAgIHNiLnNjb3BlLnNldChzYiwgYXJnLCBvcHRpb25zLCBhZGRyZXNzTmFtZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdEludm9rZShcbiAgICBzYjogU2NyaXB0QnVpbGRlcixcbiAgICBfZnVuYzogTWVtYmVyTGlrZUV4cHJlc3Npb24sXG4gICAgbm9kZTogdHMuQ2FsbEV4cHJlc3Npb24sXG4gICAgcHJvcDogdHMuRGVjbGFyYXRpb24sXG4gICAgYWRkcmVzc05hbWU6IE5hbWUsXG4gICAgY2FsbEJ1ZmZlcjogQnVmZmVyLFxuICAgIG9wdGlvbnM6IFZpc2l0T3B0aW9ucyxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRzVXRpbHMuYXJndW1lbnRlZC5nZXRBcmd1bWVudHMobm9kZSkubGVuZ3RoIDwgMSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhcmcgPSB0c1V0aWxzLmFyZ3VtZW50ZWQuZ2V0QXJndW1lbnRzKG5vZGUpWzBdO1xuICAgIGNvbnN0IHNjcmlwdEhhc2ggPSBzYi5jb250ZXh0LmFuYWx5c2lzLmV4dHJhY3RMaXRlcmFsQWRkcmVzcyhhcmcpO1xuICAgIGlmIChzY3JpcHRIYXNoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFtidWZmZXJWYWwsIHN0cmluZywgcGFyYW1zXVxuICAgICAgc2Iuc2NvcGUuZ2V0KHNiLCBhcmcsIG9wdGlvbnMsIGFkZHJlc3NOYW1lKTtcbiAgICAgIC8vIFtidWZmZXIsIHN0cmluZywgcGFyYW1zXVxuICAgICAgc2IuZW1pdEhlbHBlcihwcm9wLCBvcHRpb25zLCBzYi5oZWxwZXJzLnVud3JhcEJ1ZmZlcik7XG4gICAgICAvLyBbcmVzdWx0XVxuICAgICAgc2IuZW1pdE9wKHByb3AsICdDQUxMX0VEJywgY2FsbEJ1ZmZlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFtyZXN1bHRdXG4gICAgICBzYi5lbWl0T3AocHJvcCwgJ0NBTExfRScsIEJ1ZmZlci5jb25jYXQoW2NhbGxCdWZmZXIsIHNjcmlwdEhhc2hdKSk7XG4gICAgfVxuICB9XG59XG4iXX0=