Commit 7b5789b5 authored by Russ Cox's avatar Russ Cox

gc: undo attempt at fixing recursive interface embedding

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
parent 855986d5
......@@ -122,9 +122,6 @@ walkdeflist(NodeList *l)
walkdef(l->n);
}
static NodeList *deftypequeue;
static int intypedef;
static void
walkdeftype(Node *n)
{
......@@ -265,21 +262,7 @@ walkdef(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:
......
......@@ -19,9 +19,9 @@ type I4 interface {
}
type I5 interface {
I6 // ERROR "interface"
I6
}
type I6 interface {
I5
I5 // ERROR "interface"
}
// 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"
......@@ -150,3 +150,17 @@ throw: interface conversion
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
==================================================
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment