UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

36 lines (34 loc) 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BuiltinInstanceMemberValue = 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 types_1 = require("./types"); class BuiltinInstanceMemberValue { constructor() { this.types = new Set([types_1.BuiltinType.InstanceMemberValue]); this.canSet = false; this.isReadonly = true; } emitValue(sb, node, options, visited = false) { if (!this.canSet && options.setValue) { if (!this.isReadonly) { sb.context.reportError(node, DiagnosticCode_1.DiagnosticCode.InvalidBuiltinModify, DiagnosticMessage_1.DiagnosticMessage.CannotModifyBuiltin); } return; } if (!visited && (typescript_1.default.isPropertyAccessExpression(node) || typescript_1.default.isElementAccessExpression(node))) { sb.visit(ts_utils_1.tsUtils.expression.getExpression(node), sb.pushValueOptions(options)); } if (!this.canSet && !options.pushValue) { sb.emitOp(node, 'DROP'); return; } this.emit(sb, node, options); } } exports.BuiltinInstanceMemberValue = BuiltinInstanceMemberValue; //# sourceMappingURL=BuiltinInstanceMemberValue.js.map