Skip to content

Commit c523384

Browse files
committed
fix(require-jsdoc): allow TSInterfaceDeclaration to find jsdoc block preceding export; fixes #385
1 parent b7e93f0 commit c523384

File tree

3 files changed

+74
-5
lines changed

3 files changed

+74
-5
lines changed

README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5647,6 +5647,28 @@ function quux () {
56475647
}
56485648
export default quux;
56495649
// Options: [{"publicOnly":true,"require":{"FunctionExpression":true}}]
5650+
5651+
/**
5652+
* This example interface is great!
5653+
*/
5654+
export interface Example {
5655+
/**
5656+
* My super test string!
5657+
*/
5658+
test: string
5659+
}
5660+
// Options: [{"contexts":["TSInterfaceDeclaration"]}]
5661+
5662+
/**
5663+
* This example interface is great!
5664+
*/
5665+
interface Example {
5666+
/**
5667+
* My super test string!
5668+
*/
5669+
test: string
5670+
}
5671+
// Options: [{"contexts":["TSInterfaceDeclaration"]}]
56505672
````
56515673

56525674

src/eslint/getJSDocComment.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,10 @@ const getJSDocComment = function (sourceCode, node, settings) {
6262

6363
return null;
6464
};
65-
let parent = node.parent;
65+
let {parent} = node;
6666

6767
switch (node.type) {
68+
case 'TSInterfaceDeclaration':
6869
case 'ClassDeclaration':
6970
case 'FunctionDeclaration':
7071
return findJSDocComment(looksLikeExport(parent) ? parent : node);
@@ -74,9 +75,7 @@ const getJSDocComment = function (sourceCode, node, settings) {
7475
case 'ArrowFunctionExpression':
7576
case 'FunctionExpression':
7677
if (
77-
parent.type !== 'CallExpression' &&
78-
parent.type !== 'OptionalCallExpression' &&
79-
parent.type !== 'NewExpression'
78+
!['CallExpression', 'OptionalCallExpression', 'NewExpression'].includes(parent.type)
8079
) {
8180
while (
8281
!sourceCode.getCommentsBefore(parent).length &&

test/rules/assertions/requireJsdoc.js

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2182,5 +2182,53 @@ export default {
21822182
parserOptions: {
21832183
sourceType: 'module',
21842184
},
2185-
}],
2185+
}, {
2186+
code: `
2187+
/**
2188+
* This example interface is great!
2189+
*/
2190+
export interface Example {
2191+
/**
2192+
* My super test string!
2193+
*/
2194+
test: string
2195+
}
2196+
`,
2197+
options: [
2198+
{
2199+
contexts: [
2200+
'TSInterfaceDeclaration',
2201+
],
2202+
},
2203+
],
2204+
parser: require.resolve('@typescript-eslint/parser'),
2205+
parserOptions: {
2206+
sourceType: 'module',
2207+
},
2208+
},
2209+
{
2210+
code: `
2211+
/**
2212+
* This example interface is great!
2213+
*/
2214+
interface Example {
2215+
/**
2216+
* My super test string!
2217+
*/
2218+
test: string
2219+
}
2220+
`,
2221+
options: [
2222+
{
2223+
contexts: [
2224+
'TSInterfaceDeclaration',
2225+
],
2226+
},
2227+
],
2228+
parser: require.resolve('@typescript-eslint/parser'),
2229+
parserOptions: {
2230+
sourceType: 'module',
2231+
},
2232+
},
2233+
],
21862234
};

0 commit comments

Comments
 (0)