Skip to content

Commit a47e157

Browse files
committed
fix: requireReturnsCheck false positve on async functions (fixes #174)
1 parent b8b9692 commit a47e157

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2302,6 +2302,16 @@ function quux () {
23022302
* @returns {*} Foo.
23032303
*/
23042304
const quux = () => foo;
2305+
2306+
/**
2307+
* @returns {Promise<void>}
2308+
*/
2309+
async function quux() {}
2310+
2311+
/**
2312+
* @returns {Promise<void>}
2313+
*/
2314+
async () => {}
23052315
````
23062316

23072317

src/rules/requireReturnsCheck.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ export default iterateJsdoc(({
2424
return;
2525
}
2626

27+
// Async function always returns a promise
28+
if (functionNode.async) {
29+
return;
30+
}
31+
2732
if (JSON.stringify(jsdocTags) !== '[]' && voidReturn && sourcecode.indexOf('return') < 1) {
2833
report('Present JSDoc @' + targetTagName + ' declaration but not available return expression in function.');
2934
}

test/rules/assertions/requireReturnsCheck.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,28 @@ export default {
104104
*/
105105
const quux = () => foo;
106106
`
107+
},
108+
{
109+
code: `
110+
/**
111+
* @returns {Promise<void>}
112+
*/
113+
async function quux() {}
114+
`,
115+
parserOptions: {
116+
ecmaVersion: 8
117+
}
118+
},
119+
{
120+
code: `
121+
/**
122+
* @returns {Promise<void>}
123+
*/
124+
async () => {}
125+
`,
126+
parserOptions: {
127+
ecmaVersion: 8
128+
}
107129
}
108130
]
109131
};

0 commit comments

Comments
 (0)