gopherjs: Interface implementation errors are not descriptive.
Running this program on play.golang.org produces:
/tmp/sandbox161431897/main.go:14: cannot convert T literal (type T) to type FooBar:
    T does not implement FooBar (missing Bar method)
It tells us that Bar is the missing method (i.e. what the error actually is).
But running the same program via gopherjs.org/play produces a error that is very hard to understand:
prog.go:14:13: cannot convert (T literal) (value of type T) to FooBar 
I actually have code that uses some very large composite interfaces – and it’s hard to track down exactly what I’ve done wrong (it’s code that cannot be run via the standard Go compiler itself, only by gopherjs).
Any ideas on a potential workaround or improvement to this situation?
About this issue
- Original URL
 - State: closed
 - Created 9 years ago
 - Comments: 15 (15 by maintainers)
 
@shurcooL you’re absolutely right, sorry I didn’t check that.
I’ve just looked at the
go/typessource code. For assignments a reason is generated:https://github.com/golang/go/blob/8db4d02e8fed0b42d71ef311c3b5481b2e72b26d/src/go/types/assignments.go#L60
but for conversions there is no reason:
https://github.com/golang/go/blob/8db4d02e8fed0b42d71ef311c3b5481b2e72b26d/src/go/types/conversions.go#L34
Looks like a relatively simple fix… will see if I can find the time over the weekend.