From: Rémy Oudompheng Date: Wed, 7 Nov 2012 22:09:01 +0000 (+0100) Subject: cmd/gc: fix internal compiler error with broken structs. X-Git-Tag: go1.1rc2~1929 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c208a3a263648a5f2a363b3af801a9d1522be03b;p=gostls13.git cmd/gc: fix internal compiler error with broken structs. Fixes #4359. R=golang-dev, daniel.morsing, rsc CC=golang-dev https://golang.org/cl/6834043 --- diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c index 35c99c858c..9b42772393 100644 --- a/src/cmd/gc/typecheck.c +++ b/src/cmd/gc/typecheck.c @@ -443,7 +443,7 @@ reswitch: ok |= Etype; n->op = OTYPE; n->type = tostruct(n->list); - if(n->type == T) + if(n->type == T || n->type->broke) goto error; n->list = nil; break; diff --git a/test/fixedbugs/issue4359.go b/test/fixedbugs/issue4359.go new file mode 100644 index 0000000000..b5adb4010b --- /dev/null +++ b/test/fixedbugs/issue4359.go @@ -0,0 +1,19 @@ +// errorcheck + +// Copyright 2012 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 4359: wrong handling of broken struct fields +// causes "internal compiler error: lookdot badwidth". + +package main + +type T struct { + x T1 // ERROR "undefined" +} + +func f() { + var t *T + _ = t.x +}