panic: runtime error: slice bounds out of range [1:0]
muazhari opened this issue · 0 comments
muazhari commented
The following program sample.go
triggers an unexpected result
package main
import (
"fmt"
"github.com/traefik/yaegi/interp"
"math"
)
func main() {
c0Str := `
func c0(args ...any) (result any) {
fmt.Println("c0")
n := args[0].(int64)
count := int64(0)
for i := int64(1); i < n; i++ {
for j := int64(1); j < (i * i); j++ {
count += 1
}
}
return count
}
`
c1Str := `
func c1(args ...any) (result any) {
fmt.Println("c1")
count := int64(0)
for i := int64(1); i < int64(math.Log2(float64(n))); i++ {
for j := int64(1); j < n-i; j++ {
count += 1
}
}
return count
}
`
i := interp.New(interp.Options{})
_, _ = i.Eval(`
import
(
"fmt"
"math"
)
`)
_, _ = i.Eval(c0Str)
_, _ = i.Eval(c1Str)
c0v, _ := i.Eval("c0")
c1v, _ := i.Eval("c1")
c0I := c0v.Interface().(func(...any) any)
c1I := c1v.Interface().(func(...any) any)
c0F := c0I(int64(100))
c1F := c1I(int64(100))
fmt.Println(c0F)
fmt.Println(c1F)
}
Expected result
some integer
some integer
Got
panic: runtime error: slice bounds out of range [1:0]
goroutine 1 [running]:
github.com/traefik/yaegi/interp.genFunctionWrapper.func1.1({0xc000012420, 0x1, 0x1?})
/home/muazhari/go/pkg/mod/github.com/traefik/yaegi@v0.16.1/interp/run.go:1000 +0x7f4
main.main()
/mnt/c/Data/Apps/golang/main.go:266 +0x2c3
exit status 2
Yaegi Version
v0.16.1
Additional Notes
No response