Commit 7c546566 authored by David Crawshaw's avatar David Crawshaw

cmd/compile: compute number of arguments correctly

The outCount value includes a flag bit for dotdotdot.

If we have this count incorrect, then the offset for the
methodset *rtype are in the wrong place.

Fixes #14783

Change-Id: If5acb16af08d4ffe36c8c9ee389c32f2712ce757
Reviewed-on: https://go-review.googlesource.com/20566Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent ae00df12
...@@ -1068,7 +1068,7 @@ ok: ...@@ -1068,7 +1068,7 @@ ok:
ot += 4 // align for *rtype ot += 4 // align for *rtype
} }
dataAdd := (inCount + outCount) * Widthptr dataAdd := (inCount + t.Outtuple) * Widthptr
ot = dextratype(s, ot, t, dataAdd) ot = dextratype(s, ot, t, dataAdd)
// Array of rtype pointers follows funcType. // Array of rtype pointers follows funcType.
......
...@@ -2410,6 +2410,17 @@ func TestEmbeddedMethods(t *testing.T) { ...@@ -2410,6 +2410,17 @@ func TestEmbeddedMethods(t *testing.T) {
} }
} }
type FuncDDD func(...interface{}) error
func (f FuncDDD) M() {}
func TestNumMethodOnDDD(t *testing.T) {
rv := ValueOf((FuncDDD)(nil))
if n := rv.NumMethod(); n != 1 {
t.Fatalf("NumMethod()=%d, want 1", n)
}
}
func TestPtrTo(t *testing.T) { func TestPtrTo(t *testing.T) {
var i int var i int
......
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