yaegi
yaegi copied to clipboard
redefinition of type not possible by design?
The following program sample.go
triggers an unexpected result
package main
import (
"github.com/traefik/yaegi/interp"
"github.com/traefik/yaegi/stdlib"
)
func main() {
i := interp.New(interp.Options{})
i.Use(stdlib.Symbols)
_, err := i.Eval(`import "fmt"`)
if err != nil {
panic(err)
}
_, err = i.Eval(`
type Color struct {
Name string
}
`)
if err != nil {
panic(err)
}
_, err = i.Eval(`fmt.Println(Color{Name:"white"})`)
if err != nil {
panic(err)
}
_, err = i.Eval(`
type Color struct {
Name string
Value int
}
`)
if err != nil {
panic(err)
}
_, err = i.Eval(`fmt.Println(Color{Name:"white", Value:0xffffff})`)
if err != nil {
panic(err)
}
}
Expected result
{white}
{white 16777215}
Got
{white}
panic: 1:60: unknown field Value in struct literal
goroutine 1 [running]:
main.main()
/Users/emicklei/xProjects/golivia/app/main.go:45 +0x18b
exit status 2
Yaegi Version
v0.12.0
Additional Notes
Hi,
I am evaluating this package for its usage in an interactive editor in which I can change funcs, methods and types while running a program. This example shows that redefining a type is not visible. The definition Eval is without error ; however, using the new field reports an error.