Skip to content

Commit 1e45ae4

Browse files
committed
fix(require-jsdoc): do not report PropertyDefinition's with non-public accessibility; fixes #1122
1 parent 1886b36 commit 1e45ae4

File tree

3 files changed

+64
-0
lines changed

3 files changed

+64
-0
lines changed

docs/rules/require-jsdoc.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -990,6 +990,19 @@ class A {
990990
}
991991
// "jsdoc/require-jsdoc": ["error"|"warn", {"contexts":[{"context":"MethodDefinition","minLineCount":3}],"require":{"ClassDeclaration":false,"FunctionExpression":false,"MethodDefinition":false}}]
992992
// Message: Missing JSDoc comment.
993+
994+
export class MyClass {
995+
996+
public myPublicProperty: number = 1;
997+
/* ^ Missing JSDoc comment. eslint(jsdoc/require-jsdoc) - expected ✅ */
998+
999+
private myPrivateProp: number = -1;
1000+
/* ^ Missing JSDoc comment. eslint(jsdoc/require-jsdoc) - unexpected ❌ */
1001+
1002+
// ...
1003+
}
1004+
// "jsdoc/require-jsdoc": ["error"|"warn", {"contexts":["PropertyDefinition"],"publicOnly":true}]
1005+
// Message: Missing JSDoc comment.
9931006
````
9941007

9951008

src/exportParser.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -905,6 +905,13 @@ const isUncommentedExport = function (node, sourceCode, opt, settings) {
905905
// console.log({node});
906906
// Optimize with ancestor check for esm
907907
if (opt.esm) {
908+
if (
909+
node.type === 'PropertyDefinition' && 'accessibility' in node &&
910+
node.accessibility !== 'public'
911+
) {
912+
return false;
913+
}
914+
908915
const exportNode = getExportAncestor(node);
909916

910917
// Is export node comment

test/rules/assertions/requireJsdoc.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4081,6 +4081,50 @@ function quux (foo) {
40814081
`,
40824082
parser: require.resolve('@typescript-eslint/parser'),
40834083
},
4084+
{
4085+
code: `
4086+
export class MyClass {
4087+
4088+
public myPublicProperty: number = 1;
4089+
/* ^ Missing JSDoc comment. eslint(jsdoc/require-jsdoc) - expected ✅ */
4090+
4091+
private myPrivateProp: number = -1;
4092+
/* ^ Missing JSDoc comment. eslint(jsdoc/require-jsdoc) - unexpected ❌ */
4093+
4094+
// ...
4095+
}
4096+
`,
4097+
errors: [
4098+
{
4099+
line: 4,
4100+
message: 'Missing JSDoc comment.',
4101+
},
4102+
],
4103+
options: [
4104+
{
4105+
contexts: [
4106+
'PropertyDefinition',
4107+
],
4108+
publicOnly: true,
4109+
},
4110+
],
4111+
output: `
4112+
export class MyClass {
4113+
4114+
/**
4115+
*
4116+
*/
4117+
public myPublicProperty: number = 1;
4118+
/* ^ Missing JSDoc comment. eslint(jsdoc/require-jsdoc) - expected ✅ */
4119+
4120+
private myPrivateProp: number = -1;
4121+
/* ^ Missing JSDoc comment. eslint(jsdoc/require-jsdoc) - unexpected ❌ */
4122+
4123+
// ...
4124+
}
4125+
`,
4126+
parser: require.resolve('@typescript-eslint/parser'),
4127+
},
40844128
],
40854129
valid: [
40864130
{

0 commit comments

Comments
 (0)