From: David R. Jenni Date: Fri, 10 Feb 2017 18:25:58 +0000 (+0100) Subject: cmd/compile: silence superfluous assignment error message X-Git-Tag: go1.9beta1~1454 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d55f52882656122869b6b409be783bfb5a2fd2fb;p=gostls13.git cmd/compile: silence superfluous assignment error message Avoid printing a second error message when a field of an undefined variable is accessed. Fixes #8440. Change-Id: I3fe0b11fa3423cec3871cb01b5951efa8ea7451a Reviewed-on: https://go-review.googlesource.com/36751 Reviewed-by: Matthew Dempsky Run-TryBot: Matthew Dempsky TryBot-Result: Gobot Gobot --- diff --git a/src/cmd/compile/internal/gc/typecheck.go b/src/cmd/compile/internal/gc/typecheck.go index d131825688..5807f1929e 100644 --- a/src/cmd/compile/internal/gc/typecheck.go +++ b/src/cmd/compile/internal/gc/typecheck.go @@ -3213,8 +3213,8 @@ func checkassign(stmt *Node, n *Node) { return } - // have already complained about n being undefined - if n.Op == ONONAME { + // have already complained about n being invalid + if n.Type == nil { return } diff --git a/test/fixedbugs/issue14010.go b/test/fixedbugs/issue14010.go index f5cab41a0d..2786e107e8 100644 --- a/test/fixedbugs/issue14010.go +++ b/test/fixedbugs/issue14010.go @@ -11,5 +11,5 @@ package main func main() { true = false // ERROR "cannot assign to true" - byte = 0 // ERROR "not an expression" "cannot assign to byte" + byte = 0 // ERROR "not an expression" } diff --git a/test/fixedbugs/issue8440.go b/test/fixedbugs/issue8440.go new file mode 100644 index 0000000000..f9b1dea3eb --- /dev/null +++ b/test/fixedbugs/issue8440.go @@ -0,0 +1,11 @@ +// errorcheck + +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +func main() { + n.foo = 6 // ERROR "undefined: n in n.foo" +}