@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
33 lines (31 loc) • 5.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const safe_stable_stringify_1 = tslib_1.__importDefault(require("safe-stable-stringify"));
const Helper_1 = require("../Helper");
class InvokeCallHelper extends Helper_1.Helper {
static getKey(options = { bindThis: false, noArgs: false }) {
const bindThis = options.bindThis || false;
const overwriteThis = options.overwriteThis || false;
const noArgs = options.noArgs || false;
return safe_stable_stringify_1.default({ bindThis, overwriteThis, noArgs });
}
constructor(options = { bindThis: false, noArgs: false }) {
super();
this.bindThis = options.bindThis || false;
this.overwriteThis = options.overwriteThis || false;
this.noArgs = options.noArgs || false;
}
emit(sb, node, optionsIn) {
const options = sb.pushValueOptions(optionsIn);
sb.emitHelper(node, options, sb.helpers.getCallable({ bindThis: this.bindThis, overwriteThis: this.overwriteThis }));
if (this.noArgs) {
sb.emitPushInt(node, 0);
sb.emitOp(node, 'NEWARRAY');
sb.emitOp(node, 'SWAP');
}
sb.emitHelper(node, optionsIn, sb.helpers.call);
}
}
exports.InvokeCallHelper = InvokeCallHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkludm9rZUNhbGxIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMEZBQThDO0FBSTlDLHNDQUFtQztBQVVuQyxNQUFhLGdCQUFpQixTQUFRLGVBQU07SUFDbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFtQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUN4RixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztRQUMzQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQztRQUNyRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQztRQUV2QyxPQUFPLCtCQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQU1ELFlBQW1CLFVBQW1DLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQ3RGLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQUVNLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxTQUF1QjtRQUNuRSxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0MsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLEVBQ0osT0FBTyxFQUNQLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUN2RixDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBRWYsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFNUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekI7UUFFRCxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUF2Q0QsNENBdUNDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL2Z1bmN0aW9uL0ludm9rZUNhbGxIZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3RyaW5naWZ5IGZyb20gJ3NhZmUtc3RhYmxlLXN0cmluZ2lmeSc7XG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vSGVscGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBJbnZva2VDYWxsSGVscGVyT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGJpbmRUaGlzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgb3ZlcndyaXRlVGhpcz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IG5vQXJncz86IGJvb2xlYW47XG59XG5cbi8vIElucHV0OiBbb2JqZWN0VmFsLCA/dGhpc1ZhbCwgP2FyZ3NhcnJheV1cbi8vIE91dHB1dDogW3ZhbF1cbmV4cG9ydCBjbGFzcyBJbnZva2VDYWxsSGVscGVyIGV4dGVuZHMgSGVscGVyIHtcbiAgcHVibGljIHN0YXRpYyBnZXRLZXkob3B0aW9uczogSW52b2tlQ2FsbEhlbHBlck9wdGlvbnMgPSB7IGJpbmRUaGlzOiBmYWxzZSwgbm9BcmdzOiBmYWxzZSB9KTogc3RyaW5nIHtcbiAgICBjb25zdCBiaW5kVGhpcyA9IG9wdGlvbnMuYmluZFRoaXMgfHwgZmFsc2U7XG4gICAgY29uc3Qgb3ZlcndyaXRlVGhpcyA9IG9wdGlvbnMub3ZlcndyaXRlVGhpcyB8fCBmYWxzZTtcbiAgICBjb25zdCBub0FyZ3MgPSBvcHRpb25zLm5vQXJncyB8fCBmYWxzZTtcblxuICAgIHJldHVybiBzdHJpbmdpZnkoeyBiaW5kVGhpcywgb3ZlcndyaXRlVGhpcywgbm9BcmdzIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBiaW5kVGhpczogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBvdmVyd3JpdGVUaGlzOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IG5vQXJnczogYm9vbGVhbjtcblxuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogSW52b2tlQ2FsbEhlbHBlck9wdGlvbnMgPSB7IGJpbmRUaGlzOiBmYWxzZSwgbm9BcmdzOiBmYWxzZSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmJpbmRUaGlzID0gb3B0aW9ucy5iaW5kVGhpcyB8fCBmYWxzZTtcbiAgICB0aGlzLm92ZXJ3cml0ZVRoaXMgPSBvcHRpb25zLm92ZXJ3cml0ZVRoaXMgfHwgZmFsc2U7XG4gICAgdGhpcy5ub0FyZ3MgPSBvcHRpb25zLm5vQXJncyB8fCBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zSW46IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG4gICAgLy8gW2Z1bmMsID9hcmdzYXJyYXldXG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5nZXRDYWxsYWJsZSh7IGJpbmRUaGlzOiB0aGlzLmJpbmRUaGlzLCBvdmVyd3JpdGVUaGlzOiB0aGlzLm92ZXJ3cml0ZVRoaXMgfSksXG4gICAgKTtcbiAgICBpZiAodGhpcy5ub0FyZ3MpIHtcbiAgICAgIC8vIFswLCBmdW5jXVxuICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMCk7XG4gICAgICAvLyBbYXJnc2FycmF5LCBmdW5jXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdORVdBUlJBWScpO1xuICAgICAgLy8gW2Z1bmMsIGFyZ3NhcnJheV1cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgIH1cbiAgICAvLyBbdmFsXVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9uc0luLCBzYi5oZWxwZXJzLmNhbGwpO1xuICB9XG59XG4iXX0=