diff options
author | Robert Griesemer <gri@golang.org> | 2020-12-01 16:02:37 -0800 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2020-12-02 05:11:01 +0000 |
commit | ab1812556777ffe61e554efb01c080cff90a6308 (patch) | |
tree | bf1586e5c77b17b356a6a79f8edab1110f831d9b /src/cmd/compile/internal/types2/decl.go | |
parent | 036245862aa9db844ee8a6d12809f7d444d33042 (diff) | |
download | go-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.go | 14 |
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) |