From 63ef3bcd16558663abc7dada4f7abc0e9bd668ba Mon Sep 17 00:00:00 2001 From: Brett Zamir Date: Fri, 25 Sep 2020 19:36:02 +0800 Subject: [PATCH] fix(`require-jsdoc`): support `TSEnumDeclaration` with `publicOnly`; fixes #640 --- README.md | 6 ++++++ src/exportParser.js | 7 +++++- test/rules/assertions/requireJsdoc.js | 31 +++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 766af341c..524159452 100644 --- a/README.md +++ b/README.md @@ -9951,6 +9951,12 @@ class Test { } // Options: [{"require":{"ArrowFunctionExpression":true,"ClassDeclaration":false,"ClassExpression":true,"FunctionDeclaration":true,"FunctionExpression":true,"MethodDefinition":true}}] // Message: Missing JSDoc comment. + +export enum testEnum { + A, B +} +// Options: [{"contexts":["TSEnumDeclaration"],"publicOnly":true}] +// Message: Missing JSDoc comment. ```` The following patterns are not considered problems: diff --git a/src/exportParser.js b/src/exportParser.js index 57af5f55e..9d34a4846 100644 --- a/src/exportParser.js +++ b/src/exportParser.js @@ -80,7 +80,11 @@ const getSymbol = function (node, globals, scope, opt) { /* istanbul ignore next */ return null; - } case 'ClassDeclaration': case 'ClassExpression': case 'FunctionExpression': case 'FunctionDeclaration': case 'ArrowFunctionExpression': { + } + case 'TSEnumDeclaration': + case 'ClassDeclaration': case 'ClassExpression': + case 'FunctionExpression': case 'FunctionDeclaration': + case 'ArrowFunctionExpression': { const val = createNode(); val.props.prototype = createNode(); val.props.prototype.type = 'object'; @@ -146,6 +150,7 @@ createSymbol = function (node, globals, value, scope, isGlobal) { const block = scope || globals; let symbol; switch (node.type) { + case 'TSEnumDeclaration': case 'FunctionDeclaration': // Fallthrough diff --git a/test/rules/assertions/requireJsdoc.js b/test/rules/assertions/requireJsdoc.js index f0b2a3ef4..500a4d7de 100644 --- a/test/rules/assertions/requireJsdoc.js +++ b/test/rules/assertions/requireJsdoc.js @@ -2554,6 +2554,37 @@ export default { `, parser: require.resolve('babel-eslint'), }, + { + code: ` + export enum testEnum { + A, B + } + `, + errors: [ + { + line: 2, + message: 'Missing JSDoc comment.', + }, + ], + options: [ + { + contexts: ['TSEnumDeclaration'], + publicOnly: true, + }, + ], + output: ` + /** + * + */ + export enum testEnum { + A, B + } + `, + parser: require.resolve('@typescript-eslint/parser'), + parserOptions: { + sourceType: 'module', + }, + }, ], valid: [{ code: `