compiler: use package path with embedded builtin type
The test case is https://go.dev/cl/414235. Fixes golang/go#52856 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/414294
This commit is contained in:
parent
53c4ef1e3c
commit
74956337e8
2 changed files with 22 additions and 9 deletions
|
@ -1,4 +1,4 @@
|
|||
d5b4abed2f206e492890acc20738e89617ea542c
|
||||
c7238f58a26131b7611eff6f555cab02af8a623c
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
|
|
@ -831,15 +831,28 @@ Struct_type::do_mangled_name(Gogo* gogo, std::string* ret,
|
|||
ret->push_back(' ');
|
||||
}
|
||||
|
||||
// For an anonymous field with an alias type, the field name
|
||||
// is the alias name.
|
||||
if (p->is_anonymous()
|
||||
&& p->type()->named_type() != NULL
|
||||
&& p->type()->named_type()->is_alias())
|
||||
p->type()->named_type()->append_symbol_type_name(gogo, true, ret,
|
||||
is_non_identifier);
|
||||
const Type* ft = p->type();
|
||||
const Named_type* nt = ft->named_type();
|
||||
|
||||
if (p->is_anonymous() && nt != NULL && nt->is_builtin())
|
||||
{
|
||||
// For an embedded field with a builtin type, we must
|
||||
// include a package path. Otherwise embedding builtin
|
||||
// types in different packages will produce identical
|
||||
// types, which shouldn't happen because the builtin
|
||||
// types are not exported.
|
||||
ret->append(gogo->pkgpath());
|
||||
ret->push_back('.');
|
||||
nt->append_symbol_type_name(gogo, true, ret, is_non_identifier);
|
||||
}
|
||||
else if (p->is_anonymous() && nt != NULL && nt->is_alias())
|
||||
{
|
||||
// For an anonymous field with an alias type, the field name
|
||||
// is the alias name.
|
||||
nt->append_symbol_type_name(gogo, true, ret, is_non_identifier);
|
||||
}
|
||||
else
|
||||
this->append_mangled_name(p->type(), gogo, ret, is_non_identifier);
|
||||
this->append_mangled_name(ft, gogo, ret, is_non_identifier);
|
||||
|
||||
if (p->has_tag())
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue