@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
33 lines (31 loc) • 5.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../../constants");
const Helper_1 = require("../Helper");
class ThrowHelper extends Helper_1.Helper {
emit(sb, node, optionsIn) {
const options = sb.pushValueOptions(optionsIn);
sb.emitOp(node, 'DUP');
sb.emitHelper(node, options, sb.helpers.if({
condition: () => {
sb.emitOp(node, 'DUP');
sb.emitHelper(node, options, sb.helpers.isString);
},
whenFalse: () => {
sb.emitHelper(node, options, sb.helpers.unwrapError);
sb.emitPushInt(node, constants_1.ErrorSlots.message);
sb.emitOp(node, 'PICKITEM');
},
}));
sb.emitHelper(node, options, sb.helpers.unwrapString);
sb.emitLine(node);
sb.emitOp(node, 'SWAP');
sb.emitPushString(node, 'error');
sb.emitPushInt(node, 3);
sb.emitOp(node, 'PACK');
sb.emitSysCall(node, 'Neo.Runtime.Notify');
sb.emitHelper(node, optionsIn, sb.helpers.throwCompletion);
}
}
exports.ThrowHelper = ThrowHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRocm93SGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsK0NBQTZDO0FBRzdDLHNDQUFtQztBQUluQyxNQUFhLFdBQVksU0FBUSxlQUFNO0lBQzlCLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxTQUF1QjtRQUNuRSxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0MsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkIsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLEVBQ0osT0FBTyxFQUNQLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1osU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFFZCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFdkIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBRWQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBRXJELEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLHNCQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRXpDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzlCLENBQUM7U0FDRixDQUFDLENBQ0gsQ0FBQztRQUVGLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXRELEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFakMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUUzQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUEzQ0Qsa0NBMkNDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL2NvbXBsZXRpb25SZWNvcmQvVGhyb3dIZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBFcnJvclNsb3RzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi9IZWxwZXInO1xuXG4vLyBJbnB1dDogW2Vycm9yVmFsXVxuLy8gT3V0cHV0OiBbXVxuZXhwb3J0IGNsYXNzIFRocm93SGVscGVyIGV4dGVuZHMgSGVscGVyIHtcbiAgcHVibGljIGVtaXQoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5vZGUsIG9wdGlvbnNJbjogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9uc0luKTtcbiAgICAvLyBbZXJyb3JWYWwsIGVycm9yVmFsXVxuICAgIHNiLmVtaXRPcChub2RlLCAnRFVQJyk7XG4gICAgLy8gW3N0cmluZ1ZhbCwgZXJyb3JWYWxdXG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5pZih7XG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4ge1xuICAgICAgICAgIC8vIFtlcnJvclZhbCwgZXJyb3JWYWwsIGVycm9yVmFsXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFVQJyk7XG4gICAgICAgICAgLy8gW2Jvb2xlYW4sIGVycm9yVmFsLCBlcnJvclZhbF1cbiAgICAgICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuaXNTdHJpbmcpO1xuICAgICAgICB9LFxuICAgICAgICB3aGVuRmFsc2U6ICgpID0+IHtcbiAgICAgICAgICAvLyBbbWFwLCBlcnJvclZhbF1cbiAgICAgICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMudW53cmFwRXJyb3IpO1xuICAgICAgICAgIC8vIFtudW1iZXIsIG1hcCwgZXJyb3JWYWxdXG4gICAgICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgRXJyb3JTbG90cy5tZXNzYWdlKTtcbiAgICAgICAgICAvLyBbc3RyaW5nVmFsLCBlcnJvclZhbF1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1BJQ0tJVEVNJyk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApO1xuICAgIC8vIFtzdHJpbmcsIGVycm9yVmFsXVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy51bndyYXBTdHJpbmcpO1xuICAgIC8vIFtudW1iZXIsIHN0cmluZywgZXJyb3JWYWxdXG4gICAgc2IuZW1pdExpbmUobm9kZSk7XG4gICAgLy8gW3N0cmluZywgbnVtYmVyLCBlcnJvclZhbF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1NXQVAnKTtcbiAgICAvLyBbJ2Vycm9yJywgc3RyaW5nLCBudW1iZXIsIGVycm9yVmFsXVxuICAgIHNiLmVtaXRQdXNoU3RyaW5nKG5vZGUsICdlcnJvcicpO1xuICAgIC8vIFszLCAnZXJyb3InLCBudW1iZXIsIHN0cmluZywgZXJyb3JWYWxdXG4gICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMyk7XG4gICAgLy8gW2FycmF5LCBlcnJvclZhbF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1BBQ0snKTtcbiAgICAvLyBbZXJyb3JWYWxdXG4gICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ05lby5SdW50aW1lLk5vdGlmeScpO1xuICAgIC8vIFtdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zSW4sIHNiLmhlbHBlcnMudGhyb3dDb21wbGV0aW9uKTtcbiAgfVxufVxuIl19