UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

34 lines (32 loc) 1.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StorageFor = void 0; 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=for.js.map