sindresorhus/eslint-plugin-unicorn

Rule proposal: `no-unused-return-value`

Closed

#741 opened on May 22, 2020

 (11 comments) (25 reactions) (0 assignees)JavaScript (468 forks)user submission
help wantednew rule

Repository metrics

Stars
 (5,022 stars)
PR merge metrics
 (Avg merge 1d 16h) (399 merged PRs in 30d)

Description

Details here: https://github.com/eslint/eslint/issues/12980

The idea is that many builtin functions return values and if those return values are not used, the code is essentially a noop and can be removed.

The discussion got stale because it seems hard for a plugin to correctly judge the type of a variable which is essential for a rule like this so it may require Typescript to really be useful. Also there was the problem of getters which would trigger false positives but I generally see getters as a obscure feature that should not be used.

Fail

const arr = [{name: 'eslint'}];
arr.map(item => item.name); // error: Unused Array.prototype.map return value
console.log(arr);

Pass

const arr = [{name: 'eslint'}];
console.log(arr);

Fail

let i = 0;
const arr = [1,2,3];
arr.map((item) => {  // error: Unused Array.prototype.map return value
  i += 1;
});

Pass

let i = 0;
const arr = [1,2,3];
arr.forEach((item) => {
  i += 1;
});

Contributor guide