js-slang
Version:
Javascript-based implementations of Source, written in Typescript
39 lines (37 loc) • 1.45 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.NoImplicitDeclareUndefinedError = void 0;
const formatters_1 = require("../../../utils/formatters");
const errors_1 = require("../../errors");
const misc_1 = require("../../../utils/misc");
class NoImplicitDeclareUndefinedError extends errors_1.RuleError {
explain() {
return 'Missing value in variable declaration.';
}
elaborate() {
return (0, formatters_1.stripIndent) `
A variable declaration assigns a value to a name.
For instance, to assign 20 to ${this.node.name}, you can write:
let ${this.node.name} = 20;
${this.node.name} + ${this.node.name}; // 40
`;
}
}
exports.NoImplicitDeclareUndefinedError = NoImplicitDeclareUndefinedError;
const noImplicitDeclareUndefined = {
name: 'no-implicit-declare-undefined',
checkers: {
VariableDeclaration(node, ancestors) {
if (ancestors.length > 1) {
switch (ancestors[ancestors.length - 2].type) {
case 'ForOfStatement':
case 'ForInStatement':
return [];
}
}
return (0, misc_1.mapAndFilter)(node.declarations, decl => decl.init ? undefined : new NoImplicitDeclareUndefinedError(decl.id));
}
}
};
exports.default = noImplicitDeclareUndefined;
//# sourceMappingURL=noImplicitDeclareUndefined.js.map
;