]> Cypherpunks repositories - gostls13.git/commit
cmd/compile/internal/types2: avoid "declared but not used" errors for invalid code
authorRobert Griesemer <gri@golang.org>
Thu, 23 Sep 2021 04:57:19 +0000 (21:57 -0700)
committerRobert Griesemer <gri@golang.org>
Thu, 23 Sep 2021 19:41:45 +0000 (19:41 +0000)
commitddb5a42b25c63df9f11669bd4b14eeebcd2ba2bb
tree8d062a49da018d9864823dd33a463ed35c1c727b
parentc0766d2cd0453b33da74407bcb0d32bbc5392c9b
cmd/compile/internal/types2: avoid "declared but not used" errors for invalid code

Agressively mark all LHS variables in assignments as used if there
is any error in the (entire) assignment. This reduces the number of
spurious "declared but not used" errors in programs that are invalid
in the first place. This behavior is closer to the behavior of the
compiler's original type checker (types1) and lets us remove lines
of the form "_ = variable" just to satisfy test cases. It also makes
more important errors visible by not crowding them out.

Remove the Checker.useLHS function and use Checker.use instead:
useLHS didn't evaluate top-level variables, but we actually want
them to be evaluated in an error scenario so that they are getting
used (and thus we don't get the "declared but not used" error).

Fixes #42937.

Change-Id: Idda460f6b81c66735bf9fd597c54188949bf12b8
Reviewed-on: https://go-review.googlesource.com/c/go/+/351730
Trust: Robert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
src/cmd/compile/internal/types2/assignments.go
src/cmd/compile/internal/types2/call.go
src/cmd/compile/internal/types2/stmt.go
test/fixedbugs/bug062.go
test/fixedbugs/bug131.go
test/fixedbugs/bug175.go
test/fixedbugs/bug289.go
test/fixedbugs/issue9083.go
test/interface/pointer.go