If we've already complained about a type T,
don't complain again about further expressions
involving it.
Fixes #20245 and hopefully all of its ilk.
Change-Id: Ic0abe8235d52e8a7ac40e3615aea8f3a54fd7cec
Reviewed-on: https://go-review.googlesource.com/42690
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
evconst(n)
if n.Op == OTYPE && top&Etype == 0 {
- yyerror("type %v is not an expression", n.Type)
+ if !n.Type.Broke() {
+ yyerror("type %v is not an expression", n.Type)
+ }
n.Type = nil
return n
}
}
func n() {
- (I) // ERROR "type I is not an expression"
+ (I)
}
func m() {
package p
-var f = func(...A) // ERROR "type func(....*) is not an expression" ERROR "undefined: A"
+var f = func(...A) // ERROR "undefined: A"
--- /dev/null
+// 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.
+
+// Issue 20245: panic while formatting an error message
+
+package p
+
+var e = interface{ I1 } // ERROR "undefined: I1"