Fixes #8507.
LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews, r
https://golang.org/cl/
144560043
if(t->width == -2) {
lno = lineno;
lineno = t->lineno;
- if(!t->broke)
+ if(!t->broke) {
+ t->broke = 1;
yyerror("invalid recursive type %T", t);
+ }
t->width = 0;
lineno = lno;
return;
if(bad)
*bad = T;
-
+ if(t->broke)
+ return AMEM;
if(t->noalg)
return ANOEQ;
--- /dev/null
+// errorcheck
+
+// Copyright 2014 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 8507
+// used to call algtype on invalid recursive type and get into infinite recursion
+
+package p
+
+type T struct{ T } // ERROR "invalid recursive type T"
+
+func f() {
+ println(T{} == T{})
+}