traefik / yaegi

Yaegi is Another Elegant Go Interpreter
https://pkg.go.dev/github.com/traefik/yaegi
Apache License 2.0
6.96k stars 343 forks source link

incorrect error in type assertion #1478

Closed mvertes closed 1 year ago

mvertes commented 1 year ago

The following program sample.go triggers an unexpected result

package main

import "github.com/traefik/yaegi/_test/p7"

type messageState struct{}

func (m *messageState) ProtoMethods() *p7.Methods { return nil }

func main() {
    var in p7.Input
    ms, ok := in.Message.(*messageState)
    println(ms == nil, ok)
}
// See below for dependency packages

Expected result

$ go run ./sample.go
false true

Got

$ yaegi ./sample.go
sample.go:11:12: impossible type assertion: *main.messageState does not implement p6.Message

Yaegi Version

v0.14.2

Additional Notes

To be tested with the following dependencies:

import "github.com/traefik/yaegi/_test/p6"

type Methods = struct { Name string }

type Input = struct { Message p6.Message }


* p6.go:
```go
package p6

type methods = struct {
    Name string
}

type Message interface {
    ProtoMethods() *methods
}

This issue is related to #1464. From first investigations, it probably requires that #1416 is solved too.

mvertes commented 1 year ago

Fixed by #1479.