]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gc: fix internal compiler error with broken structs.
authorRémy Oudompheng <oudomphe@phare.normalesup.org>
Wed, 7 Nov 2012 22:09:01 +0000 (23:09 +0100)
committerRémy Oudompheng <oudomphe@phare.normalesup.org>
Wed, 7 Nov 2012 22:09:01 +0000 (23:09 +0100)
Fixes #4359.

R=golang-dev, daniel.morsing, rsc
CC=golang-dev
https://golang.org/cl/6834043

src/cmd/gc/typecheck.c
test/fixedbugs/issue4359.go [new file with mode: 0644]

index 35c99c858c17e17fde8454d24686270c1c391d5e..9b42772393d66f0866ba005beb358b2acb572288 100644 (file)
@@ -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 (file)
index 0000000..b5adb40
--- /dev/null
@@ -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
+}