aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/types2/decl.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2020-12-01 16:02:37 -0800
committerRobert Griesemer <gri@golang.org>2020-12-02 05:11:01 +0000
commitab1812556777ffe61e554efb01c080cff90a6308 (patch)
treebf1586e5c77b17b356a6a79f8edab1110f831d9b /src/cmd/compile/internal/types2/decl.go
parent036245862aa9db844ee8a6d12809f7d444d33042 (diff)
downloadgo-ab1812556777ffe61e554efb01c080cff90a6308.tar.gz
go-ab1812556777ffe61e554efb01c080cff90a6308.zip
[dev.typeparams] cmd/compile/internal/types2: no "declared but not used" errors for invalid var decls
Matches compiler behavior. Change-Id: I87ca46fb7269fbac61ffbf8ed48902156b06f6e4 Reviewed-on: https://go-review.googlesource.com/c/go/+/274615 Trust: Robert Griesemer <gri@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
Diffstat (limited to 'src/cmd/compile/internal/types2/decl.go')
-rw-r--r--src/cmd/compile/internal/types2/decl.go14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/types2/decl.go b/src/cmd/compile/internal/types2/decl.go
index c7bfd3fd7b..bb33e38051 100644
--- a/src/cmd/compile/internal/types2/decl.go
+++ b/src/cmd/compile/internal/types2/decl.go
@@ -457,6 +457,20 @@ func (check *Checker) constDecl(obj *Const, typ, init syntax.Expr) {
func (check *Checker) varDecl(obj *Var, lhs []*Var, typ, init syntax.Expr) {
assert(obj.typ == nil)
+ // If we have undefined variable types due to errors,
+ // mark variables as used to avoid follow-on errors.
+ // Matches compiler behavior.
+ defer func() {
+ if obj.typ == Typ[Invalid] {
+ obj.used = true
+ }
+ for _, lhs := range lhs {
+ if lhs.typ == Typ[Invalid] {
+ lhs.used = true
+ }
+ }
+ }()
+
// determine type, if any
if typ != nil {
obj.typ = check.varType(typ)