compiler: check recursive inherited interface aliases
Fixes golang/go#25302. Reviewed-on: https://go-review.googlesource.com/c/163298 From-SVN: r269241
This commit is contained in:
parent
15994bfbca
commit
6054700c46
2 changed files with 18 additions and 1 deletions
|
@ -1,4 +1,4 @@
|
|||
9c1859b8e97242b0e697a3aaa39a4da5e6172e74
|
||||
2c74b84184941ebea318f69fe43a81f657790b63
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
|
|
@ -10329,6 +10329,23 @@ Find_alias::type(Type* type)
|
|||
return TRAVERSE_SKIP_COMPONENTS;
|
||||
}
|
||||
|
||||
// Check if there are recursive inherited interface aliases.
|
||||
Interface_type* ift = type->interface_type();
|
||||
if (ift != NULL)
|
||||
{
|
||||
const Typed_identifier_list* methods = ift->local_methods();
|
||||
if (methods == NULL)
|
||||
return TRAVERSE_CONTINUE;
|
||||
for (Typed_identifier_list::const_iterator p = methods->begin();
|
||||
p != methods->end();
|
||||
++p)
|
||||
if (p->name().empty() && p->type()->named_type() == this->find_type_)
|
||||
{
|
||||
this->found_ = true;
|
||||
return TRAVERSE_EXIT;
|
||||
}
|
||||
}
|
||||
|
||||
return TRAVERSE_CONTINUE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue