dominikh / go-tools

Staticcheck - The advanced Go linter
https://staticcheck.dev
MIT License
6.13k stars 373 forks source link

SA4006: Fix for compound operators, increment/decrement #1555

Open arp242 opened 4 months ago

arp242 commented 4 months ago

In the case of compound operators such as +=, -=, etc we need to use the left-hand side to get the value.

For IncDec we need a different codepath from AssignStmt altogether.

Fixes #1329

cespare commented 3 days ago

Thanks for implementing this @arp242! I skimmed the code and it makes sense to me, but I'm not too familiar with staticcheck internals since all my tools are built on top of the x/tools code.

I ran this over a large code base and it worked fine and flagged one new unused write (thanks!).

I tried running it against another instance of this bug that I found in a code review recently and it wasn't flagged by this code. But after some digging I see that it's a general shortcoming of the SA4006 implementation, not this PR; I filed #1609.

Hopefully this can be incorporated into staticcheck soon.