js-slang
Version:
Javascript-based implementations of Source, written in Typescript
38 lines • 1.34 kB
JavaScript
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
;