@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
29 lines (27 loc) • 4.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Helper_1 = require("../Helper");
class CreateFunctionArrayHelper extends Helper_1.Helper {
constructor({ body }) {
super();
this.body = body;
}
emit(sb, node, options) {
if (options.pushValue) {
sb.scope.pushAll(sb, node, options);
sb.emitHelper(node, options, sb.helpers.cloneArray);
sb.emitOp(node, 'DUP');
sb.emitPushInt(node, 0);
sb.emitOp(node, 'OVER');
sb.emitOp(node, 'OVER');
sb.emitOp(node, 'PICKITEM');
sb.emitHelper(node, options, sb.helpers.cloneArray);
sb.emitOp(node, 'SETITEM');
sb.emitHelper(node, options, sb.helpers.function({ body: this.body }));
sb.emitPushInt(node, 2);
sb.emitOp(node, 'PACK');
}
}
}
exports.CreateFunctionArrayHelper = CreateFunctionArrayHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyZWF0ZUZ1bmN0aW9uQXJyYXlIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxzQ0FBbUM7QUFRbkMsTUFBYSx5QkFBMEIsU0FBUSxlQUFNO0lBR25ELFlBQW1CLEVBQUUsSUFBSSxFQUFvQztRQUMzRCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFTSxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsT0FBcUI7UUFDakUsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1lBR3JCLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFcEMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFcEQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFdkIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFNUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFcEQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFM0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFdkUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0NBQ0Y7QUFyQ0QsOERBcUNDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL2Z1bmN0aW9uL0NyZWF0ZUZ1bmN0aW9uQXJyYXlIZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi9IZWxwZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUZ1bmN0aW9uQXJyYXlIZWxwZXJPcHRpb25zIHtcbiAgcmVhZG9ubHkgYm9keTogKG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4gdm9pZDtcbn1cblxuLy8gSW5wdXQ6IFtdXG4vLyBPdXRwdXQ6IFtmYXJyXVxuZXhwb3J0IGNsYXNzIENyZWF0ZUZ1bmN0aW9uQXJyYXlIZWxwZXIgZXh0ZW5kcyBIZWxwZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGJvZHk6IChvcHRpb25zOiBWaXNpdE9wdGlvbnMpID0+IHZvaWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHsgYm9keSB9OiBDcmVhdGVGdW5jdGlvbkFycmF5SGVscGVyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5ib2R5ID0gYm9keTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAob3B0aW9ucy5wdXNoVmFsdWUpIHtcbiAgICAgIC8vIGNyZWF0ZSBmdW5jdGlvblxuICAgICAgLy8gW1tzY29wZXMsIHRoaXNdXVxuICAgICAgc2Iuc2NvcGUucHVzaEFsbChzYiwgbm9kZSwgb3B0aW9ucyk7XG4gICAgICAvLyBbW3Njb3BlcywgdGhpc11dXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuY2xvbmVBcnJheSk7XG4gICAgICAvLyBbW3Njb3BlcywgdGhpc10sIFtzY29wZXMsIHRoaXNdXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEVVAnKTtcbiAgICAgIC8vIFswLCBbc2NvcGVzLCB0aGlzXSwgW3Njb3BlcywgdGhpc11dXG4gICAgICBzYi5lbWl0UHVzaEludChub2RlLCAwKTtcbiAgICAgIC8vIFtbc2NvcGVzLCB0aGlzXSwgMCwgW3Njb3BlcywgdGhpc10sIFtzY29wZXMsIHRoaXNdXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdPVkVSJyk7XG4gICAgICAvLyBbMCwgW3Njb3BlcywgdGhpc10sIDAsIFtzY29wZXMsIHRoaXNdLCBbc2NvcGVzLCB0aGlzXV1cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnT1ZFUicpO1xuICAgICAgLy8gW3Njb3BlcywgMCwgW3Njb3BlcywgdGhpc10sIFtzY29wZXMsIHRoaXNdXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdQSUNLSVRFTScpO1xuICAgICAgLy8gW3Njb3BlcywgMCwgW3Njb3BlcywgdGhpc10sIFtzY29wZXMsIHRoaXNdXVxuICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmNsb25lQXJyYXkpO1xuICAgICAgLy8gW1tzY29wZXMsIHRoaXNdXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdTRVRJVEVNJyk7XG4gICAgICAvLyBbdGFyZ2V0LCBzY29wZXNdXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuZnVuY3Rpb24oeyBib2R5OiB0aGlzLmJvZHkgfSkpO1xuICAgICAgLy8gWzIsIHRhcmdldCwgc2NvcGVzXVxuICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMik7XG4gICAgICAvLyBbYXJyXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdQQUNLJyk7XG4gICAgfVxuICB9XG59XG4iXX0=