mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2025-05-03 23:02:27 +00:00
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:
parent
c57d4cfff2
commit
a88ac44147
2 changed files with 40 additions and 6 deletions
|
@ -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))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue