compiler: improve recursive type detection

Detect recursive type definition like
    "type T0 T1; type T1 T2; ...... type Tn T0".
    
    Fixes golang/go#25320.
    
    Reviewed-on: https://go-review.googlesource.com/c/159837

From-SVN: r268347
This commit is contained in:
Ian Lance Taylor 2019-01-28 22:36:05 +00:00
parent 52bfbb69e7
commit ab1be99f2b
2 changed files with 10 additions and 1 deletions

View File

@ -1,4 +1,4 @@
d67c4bf0c42b79d54925ba8c5f23278ee6c3efb6
5ccb2d8593963e06ec3a35d362b384e82301d9f0
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View File

@ -10259,6 +10259,15 @@ Find_type_use::type(Type* type)
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;