compiler: set varargs correctly for type of method expression
Fixes golang/go#41737 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/258977
This commit is contained in:
parent
4c69e61f43
commit
3e52eaab8c
@ -1,4 +1,4 @@
|
||||
c9c084bce713e258721e12041a351ec8ad33ad17
|
||||
801c458a562d22260ff176c26d65639dd32c8a90
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
@ -5350,8 +5350,12 @@ Function_type::copy_with_receiver_as_param(bool want_pointer_receiver) const
|
||||
++p)
|
||||
new_params->push_back(*p);
|
||||
}
|
||||
return Type::make_function_type(NULL, new_params, this->results_,
|
||||
this->location_);
|
||||
Function_type* ret = Type::make_function_type(NULL, new_params,
|
||||
this->results_,
|
||||
this->location_);
|
||||
if (this->is_varargs_)
|
||||
ret->set_is_varargs();
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Make a copy of a function type ignoring any receiver and adding a
|
||||
|
@ -2396,8 +2396,14 @@ func TestVariadicMethodValue(t *testing.T) {
|
||||
points := []Point{{20, 21}, {22, 23}, {24, 25}}
|
||||
want := int64(p.TotalDist(points[0], points[1], points[2]))
|
||||
|
||||
// Variadic method of type.
|
||||
tfunc := TypeOf((func(Point, ...Point) int)(nil))
|
||||
if tt := TypeOf(p).Method(4).Type; tt != tfunc {
|
||||
t.Errorf("Variadic Method Type from TypeOf is %s; want %s", tt, tfunc)
|
||||
}
|
||||
|
||||
// Curried method of value.
|
||||
tfunc := TypeOf((func(...Point) int)(nil))
|
||||
tfunc = TypeOf((func(...Point) int)(nil))
|
||||
v := ValueOf(p).Method(4)
|
||||
if tt := v.Type(); tt != tfunc {
|
||||
t.Errorf("Variadic Method Type is %s; want %s", tt, tfunc)
|
||||
|
Loading…
Reference in New Issue
Block a user