The problem

Certain functions do not change the state of the calling object. If these functions' return values are unused, then the function call could be removed without any effects, indicating a likely bug.

Currently checking the following APIs:

  • Array.concat()
  • Array.filter()
  • Array.map()
  • Array.slice()
  • Function.bind()
  • Object.create()
  • string.concat()
  • string.normalize()
  • string.padStart()
  • string.padEnd()
  • string.repeat()
  • string.replace() (Check only if the second parameter is non-function.)
  • string.slice()
  • string.split()
  • string.substr()
  • string.substring()
  • string.toLocaleLowerCase()
  • string.toLocaleUpperCase()
  • string.toLowerCase()
  • string.toUpperCase()
  • string.trim()

For user defined functions, add a @checkReturnValue JSDoc to mark functions whose return values should be checked. See this example.