quick-lint / quick-lint-js

quick-lint-js finds bugs in JavaScript programs
https://quick-lint-js.com
GNU General Public License v3.0
1.52k stars 191 forks source link

feat(fe): add warning for 'x==y;' statement #1219

Open CoderMuffin opened 3 months ago

CoderMuffin commented 3 months ago

fixes #1132

Add a new diagnostic E0459 that warns on statements that are expressions and the first operator is either ==, ===, != or !==.

While adding this I had to change several tests (especially ones relating to redundant string case checks) from test_parse_and_visit_statement to test_parse_and_visit_expression, as they were causing false positives. The changes should not affect the tests in any way.

Also, I was thinking that maybe this could be widened (or a second diagnostic could be introduced) for statements that are completely redundant (e.g. x+y;)? If this is implemented expressions that can have side effects like x(), x.a() or x() ? y : z will have to be checked for, as warning on these could advise removal that would incorrectly affect program flow. I would think false positives could also be quite likely.

CoderMuffin commented 3 months ago

Not sure what to do regarding the failing docs check on E0343 and E0342, is there any way to declare that the new E0459 should also be triggered here?