compiler: omit field name for embedded fields in reflection string

This matches the gc compiler.
    
    The test case was sent for the master repo as
    https://golang.org/cl/91138.
    
    Fixes golang/go#23620
    
    Reviewed-on: https://go-review.googlesource.com/91139

From-SVN: r257300
This commit is contained in:
Ian Lance Taylor 2018-02-01 15:54:04 +00:00
parent fc876f22b3
commit 4d0bf3e1e1
3 changed files with 14 additions and 6 deletions

View File

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

View File

@ -6417,11 +6417,11 @@ Struct_type::do_reflection(Gogo* gogo, std::string* ret) const
if (p != this->fields_->begin())
ret->push_back(';');
ret->push_back(' ');
if (p->is_anonymous())
ret->push_back('?');
else
ret->append(Gogo::unpack_hidden_name(p->field_name()));
ret->push_back(' ');
if (!p->is_anonymous())
{
ret->append(Gogo::unpack_hidden_name(p->field_name()));
ret->push_back(' ');
}
if (p->is_anonymous()
&& p->type()->named_type() != NULL
&& p->type()->named_type()->is_alias())

View File

@ -170,6 +170,14 @@ var typeTests = []pair{
}{},
"interface { reflect_test.a(func(func(int) int) func(func(int)) int); reflect_test.b() }",
},
{struct {
x struct {
int32
int64
}
}{},
"struct { int32; int64 }",
},
}
var valueTests = []pair{