compiler: Use receiver name in hash/equal for type within method.

Test case sent as https://golang.org/cl/17081.
    
    Reviewed-on: https://go-review.googlesource.com/17082

From-SVN: r230657
This commit is contained in:
Ian Lance Taylor 2015-11-20 13:23:02 +00:00
parent 430002b956
commit 0b78e62cff
2 changed files with 11 additions and 2 deletions

View File

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

View File

@ -1769,7 +1769,16 @@ Type::specific_type_functions(Gogo* gogo, Named_type* name,
const Named_object* in_function = name->in_function(&index);
if (in_function != NULL)
{
base_name += '$' + Gogo::unpack_hidden_name(in_function->name());
base_name.append(1, '$');
const Typed_identifier* rcvr =
in_function->func_value()->type()->receiver();
if (rcvr != NULL)
{
Named_type* rcvr_type = rcvr->type()->deref()->named_type();
base_name.append(Gogo::unpack_hidden_name(rcvr_type->name()));
base_name.append(1, '$');
}
base_name.append(Gogo::unpack_hidden_name(in_function->name()));
if (index > 0)
{
char buf[30];