mirror of
https://github.com/golang/go
synced 2024-11-26 21:11:57 -07:00
cmd/compile: emit error message for broken type
The original report in #5172 was that cmd/compile was generating bogus follow-on error messages when typechecking a struct failed. Instead of fixing those follow-on error messages, golang.org/cl/9614044 suppress all follow-on error messages after struct typecheck fails. We should continue emitting error messages instead. While at it, also add the test case for original report. Fixes #33947 Change-Id: I4a5c6878977128abccd704350a12df743631c7bf Reviewed-on: https://go-review.googlesource.com/c/go/+/191944 Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
24c6dd9823
commit
97bc039c9c
@ -503,12 +503,7 @@ func typecheck1(n *Node, top int) (res *Node) {
|
||||
|
||||
case OTSTRUCT:
|
||||
ok |= Etype
|
||||
t := tostruct(n.List.Slice())
|
||||
if t.Broke() {
|
||||
n.Type = nil
|
||||
return n
|
||||
}
|
||||
setTypeNode(n, t)
|
||||
setTypeNode(n, tostruct(n.List.Slice()))
|
||||
n.List.Set(nil)
|
||||
|
||||
case OTINTER:
|
||||
|
@ -12,8 +12,15 @@ type foo struct {
|
||||
x bar // ERROR "undefined"
|
||||
}
|
||||
|
||||
type T struct{}
|
||||
|
||||
func (t T) Bar() {}
|
||||
|
||||
func main() {
|
||||
var f foo
|
||||
go f.bar() // GCCGO_ERROR "undefined"
|
||||
defer f.bar() // GCCGO_ERROR "undefined"
|
||||
go f.bar() // ERROR "undefined"
|
||||
defer f.bar() // ERROR "undefined"
|
||||
|
||||
t := T{1} // ERROR "too many values"
|
||||
go t.Bar()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user