From: Konstantin Shaposhnikov Date: Tue, 20 Oct 2015 16:39:27 +0000 (+0800) Subject: cmd/vet: fix shadow assignment check with complex rhs X-Git-Tag: go1.6beta1~768 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=3c1712db0bd3aa360ad08d9a8e57f6f9b64df6a4;p=gostls13.git cmd/vet: fix shadow assignment check with complex rhs This change fixes shadow assignment check in cases when RHS is not an identifier or a type assertion. Fixes #12188 Change-Id: I0940df8d9c237ab8b8d3272eb6895e676c75c115 Reviewed-on: https://go-review.googlesource.com/16038 Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot --- diff --git a/src/cmd/vet/shadow.go b/src/cmd/vet/shadow.go index 2149e70ce2..5d0d6b5bf5 100644 --- a/src/cmd/vet/shadow.go +++ b/src/cmd/vet/shadow.go @@ -155,6 +155,8 @@ func (f *File) idiomaticShortRedecl(a *ast.AssignStmt) bool { return false } } + default: + return false } } return true diff --git a/src/cmd/vet/testdata/shadow.go b/src/cmd/vet/testdata/shadow.go index 34a680681b..241109f4ee 100644 --- a/src/cmd/vet/testdata/shadow.go +++ b/src/cmd/vet/testdata/shadow.go @@ -25,8 +25,9 @@ func ShadowRead(f *os.File, buf []byte) (err error) { _ = i } if f != nil { + x := one() // ERROR "declaration of x shadows declaration at testdata/shadow.go:14" var _, err = f.Read(buf) // ERROR "declaration of err shadows declaration at testdata/shadow.go:13" - if err != nil { + if x == 1 && err != nil { return err } } @@ -52,3 +53,7 @@ func ShadowRead(f *os.File, buf []byte) (err error) { _, _ = err, x return } + +func one() int { + return 1 +}