From d55f52882656122869b6b409be783bfb5a2fd2fb Mon Sep 17 00:00:00 2001 From: "David R. Jenni" Date: Fri, 10 Feb 2017 19:25:58 +0100 Subject: [PATCH] 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 --- src/cmd/compile/internal/gc/typecheck.go | 4 ++-- test/fixedbugs/issue14010.go | 2 +- test/fixedbugs/issue8440.go | 11 +++++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 test/fixedbugs/issue8440.go diff --git a/src/cmd/compile/internal/gc/typecheck.go b/src/cmd/compile/internal/gc/typecheck.go index d1318256887..5807f1929e6 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 f5cab41a0d6..2786e107e80 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 00000000000..f9b1dea3ebf --- /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" +}