UNPKG

js-slang

Version:

Javascript-based implementations of Source, written in Typescript

38 lines 1.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NoUpdateAssignment = void 0; const astring_1 = require("astring"); const noUnspecifiedOperator_1 = require("./noUnspecifiedOperator"); class NoUpdateAssignment extends noUnspecifiedOperator_1.NoUnspecifiedOperatorError { explain() { return `The assignment operator ${this.node.operator} is not allowed. Use = instead.`; } elaborate() { const leftStr = (0, astring_1.generate)(this.node.left); const rightStr = (0, astring_1.generate)(this.node.right); const newOpStr = this.node.operator.slice(0, -1); if (newOpStr === '+' || newOpStr === '-' || newOpStr === '/' || newOpStr === '*') { const elabStr = `\n\t${leftStr} = ${leftStr} ${newOpStr} ${rightStr};`; return elabStr; } else { return ''; } } } exports.NoUpdateAssignment = NoUpdateAssignment; const noUpdateAssignment = { name: 'no-update-assignment', checkers: { AssignmentExpression(node) { if (node.operator !== '=') { return [new NoUpdateAssignment(node)]; } else { return []; } } } }; exports.default = noUpdateAssignment; //# sourceMappingURL=noUpdateAssignment.js.map