compiler: support variadic function definitions

Pack variadic arguments into a slice. This currently doen't work with
byte slices though.
This commit is contained in:
Evgenii Stratonikov 2020-06-26 13:30:48 +03:00
parent c57d4cfff2
commit a88ac44147
2 changed files with 40 additions and 6 deletions

View file

@ -184,3 +184,35 @@ func TestLocalsCount(t *testing.T) {
}`
eval(t, src, big.NewInt(7))
}
func TestVariadic(t *testing.T) {
src := `package foo
func someFunc(a int, b ...int) int {
sum := a
for i := range b {
sum = sum - b[i]
}
return sum
}
func Main() int {
return someFunc(10, 1, 2, 3)
}`
eval(t, src, big.NewInt(4))
}
func TestVariadicMethod(t *testing.T) {
src := `package foo
type myInt int
func (x myInt) someFunc(a int, b ...int) int {
sum := int(x) + a
for i := range b {
sum = sum - b[i]
}
return sum
}
func Main() int {
x := myInt(38)
return x.someFunc(10, 1, 2, 3)
}`
eval(t, src, big.NewInt(42))
}