go/test/interface
Robert Griesemer ddb5a42b25 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>
2021-09-23 19:41:45 +00:00
..
embed1.dir test: convert tests to run.go whenever possible. 2012-10-10 22:35:27 +02:00
embed3.dir test: add tests for runtime.itab.init 2019-11-06 09:09:59 +00:00
private.dir test: convert tests to run.go whenever possible. 2012-10-10 22:35:27 +02:00
recursive1.dir all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
assertinline.go cmd/compile: do more type conversion inline 2016-11-02 21:33:03 +00:00
bigdata.go test/interface: document tests 2012-02-19 17:33:41 +11:00
convert.go test/interface: document tests 2012-02-19 17:33:41 +11:00
convert1.go test/interface: document tests 2012-02-19 17:33:41 +11:00
convert2.go test/interface: document tests 2012-02-19 17:33:41 +11:00
embed.go test/interface: document tests 2012-02-19 17:33:41 +11:00
embed1.go test: convert tests to run.go whenever possible. 2012-10-10 22:35:27 +02:00
embed2.go [dev.typeparams] test: adjust more test cases to match compiler -G output 2020-12-03 17:55:56 +00:00
embed3.go test: add tests for runtime.itab.init 2019-11-06 09:09:59 +00:00
explicit.go [dev.typeparams] merge: merge branch 'dev.regabi' into 'dev.typeparams' 2020-12-14 12:13:36 -08:00
fail.go cmd/gc: blank methods are not permitted in interface types 2014-10-15 09:55:13 -07:00
fake.go test/interface: document tests 2012-02-19 17:33:41 +11:00
noeq.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
pointer.go cmd/compile/internal/types2: avoid "declared but not used" errors for invalid code 2021-09-23 19:41:45 +00:00
private.go test: convert tests to run.go whenever possible. 2012-10-10 22:35:27 +02:00
receiver.go test/interface: document tests 2012-02-19 17:33:41 +11:00
receiver1.go [dev.typeparams] test: adjust more test cases to match compiler -G output 2020-12-03 17:55:56 +00:00
recursive.go test: use testlib (another bunch). 2012-02-18 22:15:42 +01:00
recursive1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
returntype.go test/interface: document tests 2012-02-19 17:33:41 +11:00
struct.go test/interface: document tests 2012-02-19 17:33:41 +11:00