]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: silence superfluous assignment error message
authorDavid R. Jenni <david.r.jenni@gmail.com>
Fri, 10 Feb 2017 18:25:58 +0000 (19:25 +0100)
committerMatthew Dempsky <mdempsky@google.com>
Thu, 23 Feb 2017 21:06:11 +0000 (21:06 +0000)
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 <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/compile/internal/gc/typecheck.go
test/fixedbugs/issue14010.go
test/fixedbugs/issue8440.go [new file with mode: 0644]

index d13182568870cea4bb7fac67ed5a1640de757180..5807f1929e699ac59fdd1063e7c6c0671a6f88d7 100644 (file)
@@ -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
        }
 
index f5cab41a0d6b8385c01acc1d5d4d747ad7d60c59..2786e107e80452da6a10ca5ec6200d36a67f9505 100644 (file)
@@ -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 (file)
index 0000000..f9b1dea
--- /dev/null
@@ -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"
+}