traefik / yaegi

Yaegi is Another Elegant Go Interpreter

Home Page:https://pkg.go.dev/github.com/traefik/yaegi

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

count, err = 1, nil // panic: reflect: New(nil)

he11olx opened this issue · comments

The following program sample.go triggers an unexpected result

package main

import (
	"errors"
	"go/build"

	"github.com/traefik/yaegi/interp"
	"github.com/traefik/yaegi/stdlib"
)

func main() {
	inter := interp.New(interp.Options{GoPath: build.Default.GOPATH})
	inter.Use(stdlib.Symbols)

	var s2 = `package s2

func Handler(err error) int{
	var count int
	if err!= nil {
		count, err = 1, nil // panic: reflect: New(nil)
		
		// count, err = 1, error(nil) // It's ok
		
		// It's ok
		// count = 1 
		// err = nil 
	}
	return count
}`
	inter.Eval(s2)
	i, _ := inter.Eval("s2.Handler")
	f := i.Interface().(func(err error) int)
	f(errors.New("test"))
}

Expected result

not paic

Got

panic: reflect: New(nil)

Yaegi Version

latest

Additional Notes

No response