Commit 6054700c by Ian Lance Taylor

compiler: check recursive inherited interface aliases

    
    Fixes golang/go#25302.
    
    Reviewed-on: https://go-review.googlesource.com/c/163298

From-SVN: r269241
parent 15994bfb
9c1859b8e97242b0e697a3aaa39a4da5e6172e74 2c74b84184941ebea318f69fe43a81f657790b63
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -10329,6 +10329,23 @@ Find_alias::type(Type* type) ...@@ -10329,6 +10329,23 @@ Find_alias::type(Type* type)
return TRAVERSE_SKIP_COMPONENTS; 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; return TRAVERSE_CONTINUE;
} }
......
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