UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

33 lines (31 loc) 5.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const ts_utils_1 = require("@neo-one/ts-utils"); const typescript_1 = tslib_1.__importDefault(require("typescript")); const DiagnosticCode_1 = require("../../../../DiagnosticCode"); const DiagnosticMessage_1 = require("../../../../DiagnosticMessage"); const BuiltinMemberCall_1 = require("../../BuiltinMemberCall"); class StorageFor extends BuiltinMemberCall_1.BuiltinMemberCall { constructor(type) { super(); this.type = type; } emitCall(sb, _func, node, optionsIn) { const prefix = sb.context.analysis.extractStorageKey(node); if (prefix === undefined) { const parent = ts_utils_1.tsUtils.node.getParent(node); const parentClass = ts_utils_1.tsUtils.node.getFirstAncestorByTest(parent, typescript_1.default.isClassDeclaration); if (!typescript_1.default.isPropertyDeclaration(parent) || parentClass === undefined || !sb.context.analysis.isSmartContract(parentClass)) { sb.context.reportError(parent, DiagnosticCode_1.DiagnosticCode.InvalidStructuredStorageFor, DiagnosticMessage_1.DiagnosticMessage.InvalidStructuredStorageForProperty); } return; } const options = sb.pushValueOptions(optionsIn); sb.emitHelper(node, options, sb.helpers.createStructuredStorage({ type: this.type, prefix })); } } exports.StorageFor = StorageFor; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnREFBNEM7QUFDNUMsb0VBQTRCO0FBQzVCLCtEQUE0RDtBQUM1RCxxRUFBa0U7QUFJbEUsK0RBQTREO0FBSTVELE1BQWEsVUFBVyxTQUFRLHFDQUFpQjtJQUMvQyxZQUFvQyxJQUFtQjtRQUNyRCxLQUFLLEVBQUUsQ0FBQztRQUQwQixTQUFJLEdBQUosSUFBSSxDQUFlO0lBRXZELENBQUM7SUFFTSxRQUFRLENBQ2IsRUFBaUIsRUFDakIsS0FBMkIsRUFDM0IsSUFBdUIsRUFDdkIsU0FBdUI7UUFFdkIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQ3hCLE1BQU0sTUFBTSxHQUFHLGtCQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxNQUFNLFdBQVcsR0FBRyxrQkFBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsb0JBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3ZGLElBQ0UsQ0FBQyxvQkFBRSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQztnQkFDakMsV0FBVyxLQUFLLFNBQVM7Z0JBQ3pCLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUNqRDtnQkFDQSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FDcEIsTUFBTSxFQUNOLCtCQUFjLENBQUMsMkJBQTJCLEVBQzFDLHFDQUFpQixDQUFDLG1DQUFtQyxDQUN0RCxDQUFDO2FBQ0g7WUFFRCxPQUFPO1NBQ1I7UUFFRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0MsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztDQUNGO0FBbENELGdDQWtDQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2J1aWx0aW5zL2NvbnRyYWN0L3N0b3JhZ2UvZm9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHNVdGlscyB9IGZyb20gJ0BuZW8tb25lL3RzLXV0aWxzJztcbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IERpYWdub3N0aWNDb2RlIH0gZnJvbSAnLi4vLi4vLi4vLi4vRGlhZ25vc3RpY0NvZGUnO1xuaW1wb3J0IHsgRGlhZ25vc3RpY01lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi9EaWFnbm9zdGljTWVzc2FnZSc7XG5pbXBvcnQgeyBXcmFwcGFibGVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCdWlsdGluTWVtYmVyQ2FsbCB9IGZyb20gJy4uLy4uL0J1aWx0aW5NZW1iZXJDYWxsJztcbmltcG9ydCB7IE1lbWJlckxpa2VFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgZXhwb3J0LW5hbWVcbmV4cG9ydCBjbGFzcyBTdG9yYWdlRm9yIGV4dGVuZHMgQnVpbHRpbk1lbWJlckNhbGwge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0eXBlOiBXcmFwcGFibGVUeXBlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0Q2FsbChcbiAgICBzYjogU2NyaXB0QnVpbGRlcixcbiAgICBfZnVuYzogTWVtYmVyTGlrZUV4cHJlc3Npb24sXG4gICAgbm9kZTogdHMuQ2FsbEV4cHJlc3Npb24sXG4gICAgb3B0aW9uc0luOiBWaXNpdE9wdGlvbnMsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHByZWZpeCA9IHNiLmNvbnRleHQuYW5hbHlzaXMuZXh0cmFjdFN0b3JhZ2VLZXkobm9kZSk7XG4gICAgaWYgKHByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSB0c1V0aWxzLm5vZGUuZ2V0UGFyZW50KG5vZGUpO1xuICAgICAgY29uc3QgcGFyZW50Q2xhc3MgPSB0c1V0aWxzLm5vZGUuZ2V0Rmlyc3RBbmNlc3RvckJ5VGVzdChwYXJlbnQsIHRzLmlzQ2xhc3NEZWNsYXJhdGlvbik7XG4gICAgICBpZiAoXG4gICAgICAgICF0cy5pc1Byb3BlcnR5RGVjbGFyYXRpb24ocGFyZW50KSB8fFxuICAgICAgICBwYXJlbnRDbGFzcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICFzYi5jb250ZXh0LmFuYWx5c2lzLmlzU21hcnRDb250cmFjdChwYXJlbnRDbGFzcylcbiAgICAgICkge1xuICAgICAgICBzYi5jb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIHBhcmVudCxcbiAgICAgICAgICBEaWFnbm9zdGljQ29kZS5JbnZhbGlkU3RydWN0dXJlZFN0b3JhZ2VGb3IsXG4gICAgICAgICAgRGlhZ25vc3RpY01lc3NhZ2UuSW52YWxpZFN0cnVjdHVyZWRTdG9yYWdlRm9yUHJvcGVydHksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0gc2IucHVzaFZhbHVlT3B0aW9ucyhvcHRpb25zSW4pO1xuICAgIC8vIFt2YWxdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmNyZWF0ZVN0cnVjdHVyZWRTdG9yYWdlKHsgdHlwZTogdGhpcy50eXBlLCBwcmVmaXggfSkpO1xuICB9XG59XG4iXX0=