compiler: improve recursive type detection
Detect recursive type definition like
"type T0 T1; type T1 T2; ...... type Tn T0".
Fixes golang/go#25320.
Change-Id: If2148b21c2857eec882309ea0cf4452209ebc6d5
Reviewed-on: https://go-review.googlesource.com/c/159837
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/go/types.cc b/go/types.cc
index 5a45bb2..6d0c9a3 100644
--- a/go/types.cc
+++ b/go/types.cc
@@ -10259,6 +10259,15 @@
break;
case Type::TYPE_NAMED:
+ if (type->named_type() == type->base()->named_type())
+ {
+ this->found_ = true;
+ return TRAVERSE_EXIT;
+ }
+ else
+ go_assert(saw_errors());
+ break;
+
case Type::TYPE_FORWARD:
go_assert(saw_errors());
break;