feat(linter/jsdoc): Implement require-returns rule (#3218)

Part of #1170

>
https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns.md
This commit is contained in:
Yuji Sugiura 2024-05-23 22:12:10 +09:00 committed by GitHub
parent ff4252a201
commit 3a5f088ca3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 3132 additions and 2 deletions

View file

@ -381,6 +381,7 @@ mod jsdoc {
pub mod require_property_description;
pub mod require_property_name;
pub mod require_property_type;
pub mod require_returns;
pub mod require_yields;
}
@ -732,6 +733,7 @@ oxc_macros::declare_all_lint_rules! {
jsdoc::require_property_type,
jsdoc::require_property_name,
jsdoc::require_property_description,
jsdoc::require_returns,
jsdoc::require_yields,
tree_shaking::no_side_effects_in_initialization,
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,879 @@
---
source: crates/oxc_linter/src/tester.rs
expression: require_returns
---
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux (foo) {
6 │ │
7 │ │ return foo;
8 │ ╰─▶ }
9 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux (foo) {
6 │ │ someLabel: {
7 │ │ return foo;
8 │ │ }
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:26]
4 │ */
5 │ ╭─▶ const foo = () => ({
6 │ │ bar: 'baz'
7 │ ╰─▶ })
8 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:26]
4 │ */
5 │ const foo = bar=>({ bar })
· ──────────────
6 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:26]
4 │ */
5 │ const foo = bar => bar.baz()
· ────────────────
6 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux (foo) {
6 │ │
7 │ │ return foo;
8 │ ╰─▶ }
9 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ async function quux() {
6 │ ╰─▶ }
7 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:27]
4 │ */
5 │ const quux = async function () {}
· ────────────────────
6 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:27]
4 │ */
5 │ const quux = async () => {}
· ──────────────
6 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:15]
4 │ */
5 │ async function quux () {}
· ─────────────────────────
6 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ ╰─▶ }
7 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:6:20]
5 │ */
6 │ ╭─▶ get name() {
7 │ │ return this._name;
8 │ ╰─▶ }
9 │ }
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ async function quux () {
6 │ ╰─▶ }
7 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Duplicate `@returns` tags.
╭─[require_returns.tsx:4:17]
3 │ * @returns {undefined}
4 │ * @returns {void}
· ────────
5 │ */
╰────
help: Remove redundunt `@returns` tag.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux (foo) {
6 │ │ return 'bar';
7 │ ╰─▶ }
8 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:10]
4 │ */
5 │ ╭─▶ async function foo(a) {
6 │ │ return;
7 │ ╰─▶ }
8 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:10]
4 │ */
5 │ ╭─▶ async function foo(a) {
6 │ │ return Promise.all(a);
7 │ ╰─▶ }
8 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:4:19]
3 │ /** gets bar */
4 │ ╭─▶ get bar() {
5 │ │ return 0;
6 │ ╰─▶ }
7 │ }
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:6:25]
5 │ */
6 │ ╭─▶ constructor() {
7 │ │ return new Map();
8 │ ╰─▶ }
9 │ }
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:6:20]
5 │ */
6 │ ╭─▶ get Test() {
7 │ │ return 0;
8 │ ╰─▶ }
9 │ }
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux (foo) {
6 │ │
7 │ │ return new Promise(function (resolve, reject) {
8 │ │ resolve(foo);
9 │ │ });
10 │ ╰─▶ }
11 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux (foo) {
6 │ │
7 │ │ return new Promise(function (resolve, reject) {
8 │ │ setTimeout(() => {
9 │ │ resolve(true);
10 │ │ });
11 │ │ });
12 │ ╰─▶ }
13 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux (foo) {
6 │ │
7 │ │ return new Promise(function (resolve, reject) {
8 │ │ foo(resolve);
9 │ │ });
10 │ ╰─▶ }
11 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ while(true) {
8 │ │ resolve(true);
9 │ │ }
10 │ │ });
11 │ ╰─▶ }
12 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ do {
8 │ │ resolve(true);
9 │ │ }
10 │ │ while(true)
11 │ │ });
12 │ ╰─▶ }
13 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ if (true) {
8 │ │ resolve(true);
9 │ │ }
10 │ │ return;
11 │ │ });
12 │ ╰─▶ }
13 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ if (resolve(true)) {
8 │ │ return;
9 │ │ }
10 │ │ return;
11 │ │ });
12 │ ╰─▶ }
13 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ if (true) {
8 │ │ resolve(true);
9 │ │ }
10 │ │ });
11 │ ╰─▶ }
12 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ true ? resolve(true) : null;
8 │ │ return;
9 │ │ });
10 │ ╰─▶ }
11 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ var a = {};
7 │ │ return new Promise((resolve, reject) => {
8 │ │ with (a) {
9 │ │ resolve(true);
10 │ │ }
11 │ │ });
12 │ ╰─▶ }
13 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ var a = {};
7 │ │ return new Promise((resolve, reject) => {
8 │ │ try {
9 │ │ resolve(true);
10 │ │ } catch (err) {}
11 │ │ });
12 │ ╰─▶ }
13 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ var a = {};
7 │ │ return new Promise((resolve, reject) => {
8 │ │ try {
9 │ │ } catch (err) {
10 │ │ resolve(true);
11 │ │ }
12 │ │ });
13 │ ╰─▶ }
14 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ var a = {};
7 │ │ return new Promise((resolve, reject) => {
8 │ │ try {
9 │ │ } catch (err) {
10 │ │ } finally {
11 │ │ resolve(true);
12 │ │ }
13 │ │ });
14 │ ╰─▶ }
15 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ var a = {};
7 │ │ return new Promise((resolve, reject) => {
8 │ │ switch (a) {
9 │ │ case 'abc':
10 │ │ resolve(true);
11 │ │ }
12 │ │ });
13 │ ╰─▶ }
14 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ if (true) {
8 │ │ resolve();
9 │ │ } else {
10 │ │ resolve(true);
11 │ │ }
12 │ │ });
13 │ ╰─▶ }
14 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ for (let i = 0; i < 5 ; i++) {
8 │ │ resolve(true);
9 │ │ }
10 │ │ });
11 │ ╰─▶ }
12 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ for (const i of obj) {
8 │ │ resolve(true);
9 │ │ }
10 │ │ });
11 │ ╰─▶ }
12 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ for (const i in obj) {
8 │ │ resolve(true);
9 │ │ }
10 │ │ });
11 │ ╰─▶ }
12 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ if (true) {
8 │ │ return;
9 │ │ } else {
10 │ │ resolve(true);
11 │ │ }
12 │ │ });
13 │ ╰─▶ }
14 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ function a () {
8 │ │ resolve(true);
9 │ │ }
10 │ │ a();
11 │ │ });
12 │ ╰─▶ }
13 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ return () => {
8 │ │ identifierForCoverage;
9 │ │ resolve(true);
10 │ │ };
11 │ │ });
12 │ ╰─▶ }
13 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ a || resolve(true);
8 │ │ });
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ (r = resolve(true));
8 │ │ });
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ a + (resolve(true));
8 │ │ });
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ a, resolve(true);
8 │ │ });
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ +resolve();
8 │ │ [...resolve()];
9 │ │ [...+resolve(true)];
10 │ │ });
11 │ ╰─▶ }
12 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise(function * (resolve, reject) {
7 │ │ yield resolve(true)
8 │ │ });
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise(async function (resolve, reject) {
7 │ │ await resolve(true)
8 │ │ });
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ someLabel: {
8 │ │ resolve(true);
9 │ │ }
10 │ │ });
11 │ ╰─▶ }
12 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ var obj = {
8 │ │ [someKey]: 'val',
9 │ │ anotherKey: resolve(true)
10 │ │ }
11 │ │ });
12 │ ╰─▶ }
13 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ var obj = {
8 │ │ [resolve(true)]: 'val',
9 │ │ }
10 │ │ });
11 │ ╰─▶ }
12 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ `abc${resolve(true)}`;
8 │ │ });
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ tagTemp`abc${resolve(true)}`;
8 │ │ });
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ a.b[resolve(true)].c;
8 │ │ });
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ abc?.[resolve(true)].d?.e(resolve(true));
8 │ │ });
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ const [a = resolve(true)] = arr;
8 │ │ });
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ const {a = resolve(true)} = obj;
8 │ │ });
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ import(resolve(true));
8 │ │ });
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ class A {
8 │ │ method1 () {
9 │ │ resolve();
10 │ │ }
11 │ │ @dec(function () {
12 │ │ resolve()
13 │ │ })
14 │ │ method2 () {
15 │ │ resolve(true);
16 │ │ }
17 │ │ }
18 │ │ });
19 │ ╰─▶ }
20 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ class A {
8 │ │ method1 () {
9 │ │ resolve();
10 │ │ }
11 │ │ @dec(function () {
12 │ │ resolve(true)
13 │ │ })
14 │ │ method2 () {}
15 │ │ }
16 │ │ });
17 │ ╰─▶ }
18 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ const a = class {
8 │ │ [b] () {
9 │ │ resolve();
10 │ │ }
11 │ │ method1 () {
12 │ │ resolve(true);
13 │ │ }
14 │ │ method2 () {}
15 │ │ }
16 │ │ });
17 │ ╰─▶ }
18 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ const a = class {
8 │ │ [b] () {
9 │ │ resolve(true);
10 │ │ }
11 │ │ }
12 │ │ });
13 │ ╰─▶ }
14 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:21]
4 │ */
5 │ ╭─▶ export function quux () {
6 │ │ return new Promise((resolve, reject) => {
7 │ │ resolve(true);
8 │ │ });
9 │ ╰─▶ }
10 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ function quux () {
6 │ │ return new Promise();
7 │ ╰─▶ }
8 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ async function quux () {
6 │ │ return new Promise();
7 │ ╰─▶ }
8 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:14]
4 │ */
5 │ ╭─▶ async function quux () {
6 │ │ return new Promise((resolve, reject) => {});
7 │ ╰─▶ }
8 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:17]
4 │ */
5 │ export function readFixture(path: string): void;
· ─────────────────────────────────────────
6 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:17]
4 │ */
5 │ export function readFixture(path: string);
· ───────────────────────────────────
6 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:10]
4 │ */
5 │ ╭─▶ async function foo(a) {
6 │ │ return Promise.all(a);
7 │ ╰─▶ }
8 │
╰────
help: Add `@returns` tag to the JSDoc comment.
⚠ eslint-plugin-jsdoc(require-returns): Missing JSDoc `@returns` declaration for function.
╭─[require_returns.tsx:5:25]
4 │ */
5 │ ╭─▶ export default async function demo() {
6 │ │ return true;
7 │ ╰─▶ }
8 │
╰────
help: Add `@returns` tag to the JSDoc comment.

View file

@ -35,7 +35,18 @@ pub fn get_function_nearest_jsdoc_node<'a, 'b>(
| AstKind::PropertyDefinition(_)
// /** This JSDoc should NOT found for `ArrowFunctionExpression` callback */
// function outer() { inner(() => {}) }
| AstKind::CallExpression(_) => return None,
| AstKind::CallExpression(_)
// /** This JSDoc should NOT found for `ArrowFunctionExpression` callback */
// new Promise(() => {})
| AstKind::NewExpression(_) => {
// /** This JSDoc should NOT found for `VariableDeclaration` */
// export const foo = () => {}
let parent_node = ctx.nodes().parent_node(current_node.id())?;
match parent_node.kind() {
AstKind::ExportDefaultDeclaration(_) | AstKind::ExportNamedDeclaration(_) => return Some(parent_node),
_ => return None
}
},
_ => current_node = ctx.nodes().parent_node(current_node.id())?,
}
}

View file

@ -223,7 +223,6 @@ fn should_attach_jsdoc(kind: &AstKind) -> bool {
| AstKind::ExportDefaultDeclaration(_)
| AstKind::ExportNamedDeclaration(_)
| AstKind::ImportDeclaration(_)
| AstKind::ModuleDeclaration(_)
// Maybe JSX, TS related kinds should be added?
)