Fixes #582.
Update #287
Status: Accepted
Bug fix was too intrusive; undo and reopen issue.
R=ken2
CC=golang-dev
https://golang.org/cl/209044
walkdef(l->n);
}
-static NodeList *deftypequeue;
-static int intypedef;
-
static void
walkdeftype(Node *n)
{
n->walkdef = 1;
n->type = typ(TFORW);
n->type->sym = n->sym;
- intypedef++;
- if(intypedef > 1)
- deftypequeue = list(deftypequeue, n);
- else {
- walkdeftype(n);
- while(deftypequeue != nil) {
- NodeList *l;
-
- l = deftypequeue;
- deftypequeue = nil;
- for(; l; l=l->next)
- walkdeftype(l->n);
- }
- }
- intypedef--;
+ walkdeftype(n);
break;
case OPACK:
}
type I5 interface {
- I6 // ERROR "interface"
+ I6
}
type I6 interface {
- I5
+ I5 // ERROR "interface"
}
--- /dev/null
+// errchk $G -e $D/$F.go
+
+// Copyright 2010 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
+
+type T U // bogus "invalid recursive type T" from 6g
+type U int
+
+const x T = 123
+
+type V V // ERROR "invalid recursive type"
+
+
panic PC=xxx
== bugs/
+
+=========== bugs/bug250.go
+bugs/bug250.go:14: interface type loop involving I1
+bugs/bug250.go:17: need type assertion to use I2 as I1
+ missing m() I2
+BUG: bug250
+
+=========== bugs/bug251.go
+BUG: errchk: bugs/bug251.go:11: missing expected error: 'loop|interface'
+errchk: bugs/bug251.go: unmatched error messages:
+==================================================
+bugs/bug251.go:15: interface type loop involving I1
+bugs/bug251.go:19: need type assertion to use I2 as I1
+==================================================