-
-
Notifications
You must be signed in to change notification settings - Fork 169
Closed
Labels
Description
When parsing a NamedExportDeclaration, the require-yields rule expects an ExportNamedDeclaration node to have a declaration defined, but that is not necessarily the case.
eslint-plugin-jsdoc/src/iterateJsdoc.js
Lines 1351 to 1356 in 244116e
| ( | |
| /** | |
| * @type {import('estree').ExportNamedDeclaration| | |
| * import('estree').ExportDefaultDeclaration} | |
| */ (node).declaration | |
| ).generator, |
Expected behavior
ESLint does not crash.
Actual behavior
ESLint crashes.
$ npx eslint index.js
Oops! Something went wrong! :(
ESLint: 8.57.0
TypeError: Cannot read properties of null (reading 'generator')
Occurred while linting /Users/wharney/Projects/tmp/index.js:2
Rule: "jsdoc/require-yields"
at utils.isGenerator (file:///Users/wharney/Projects/tmp/node_modules/eslint-plugin-jsdoc/src/iterateJsdoc.js:1356:9)
at shouldReportYields (file:///Users/wharney/Projects/tmp/node_modules/eslint-plugin-jsdoc/src/rules/requireYields.js:107:41)
at iterateJsdoc.contextDefaults (file:///Users/wharney/Projects/tmp/node_modules/eslint-plugin-jsdoc/src/rules/requireYields.js:110:9)
at iterate (file:///Users/wharney/Projects/tmp/node_modules/eslint-plugin-jsdoc/src/iterateJsdoc.js:2049:3)
at checkJsdoc (file:///Users/wharney/Projects/tmp/node_modules/eslint-plugin-jsdoc/src/iterateJsdoc.js:2498:9)
at ruleErrorHandler (/Users/wharney/Projects/tmp/node_modules/eslint/lib/linter/linter.js:1076:28)
at /Users/wharney/Projects/tmp/node_modules/eslint/lib/linter/safe-emitter.js:45:58
at Array.forEach (<anonymous>)
at Object.emit (/Users/wharney/Projects/tmp/node_modules/eslint/lib/linter/safe-emitter.js:45:38)
at NodeEventGenerator.applySelector (/Users/wharney/Projects/tmp/node_modules/eslint/lib/linter/node-event-generator.js:297:26)
ESLint Config
import jsdoc from "eslint-plugin-jsdoc";
export default {
plugins: { jsdoc },
rules: {
"jsdoc/require-yields": [
"error",
{
contexts: ["ExportNamedDeclaration"],
},
],
},
};ESLint sample
const foo = "foo";
/** this will crash */
export { foo }
/** this will crash */
export { bar } from "bar";
/** this works as expected */
export const okay = "has declaration!"Environment
- Node version: 22.1.0
- ESLint version 8.57.0
eslint-plugin-jsdocversion: 48.2.5