nelsam / hel

Hel rules over Helheim, where the souls unworthy of Valhalla reside. It's also a mock generator for Go.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Panics when embedding interface

Nino-K opened this issue · comments

With the below interfaces:

type A interface{
   Something() error
}

type B interface{
  AnotherThing()(A, error)
}

I get the following Panic:

Loading interface types in matching directories.panic: Can't find anonymous type error
	panic: interface conversion: ast.Expr is *ast.Ident, not *ast.FuncType

goroutine 1 [running]:
panic(0x1f55e0, 0xc4249c8780)
	/usr/local/go/src/runtime/panic.go:500 +0x1a1
github.com/nelsam/hel/types.dependencies(0xc420a433c0, 0xc4200a6000, 0xc, 0x14, 0xc420bc7a40, 0x6, 0x8, 0x31e060, 0xc4200154b0, 0x34faf0, ...)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:160 +0x542
github.com/nelsam/hel/types.loadPkgTypeSpecs.func1(0xc420c94260, 0xc420ad2178, 0xc420ad1f98, 0x31e060, 0xc4200154b0)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:251 +0x138
panic(0x1ef020, 0xc420c92420)
	/usr/local/go/src/runtime/panic.go:458 +0x243
github.com/nelsam/hel/types.findAnonMethods(0xc420a43280, 0xc4200a6000, 0xc, 0x14, 0xc420bc7a40, 0x6, 0x8, 0x31e060, 0xc4200154b0, 0xc420c07b10, ...)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:391 +0x22a
github.com/nelsam/hel/types.flatten(0xc420a433c0, 0xc4200a6000, 0xc, 0x14, 0xc420bc7a40, 0x6, 0x8, 0x31e060, 0xc4200154b0)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:308 +0x544
github.com/nelsam/hel/types.flattenAnon(0xc420c8d840, 0x7, 0x8, 0xc4200a6000, 0xc, 0x14, 0xc420bc7a40, 0x6, 0x8, 0x31e060, ...)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:294 +0xd5
github.com/nelsam/hel/types.loadPkgTypeSpecs.func2(0xc420c8d840, 0x7, 0x8, 0xc420c94260, 0xc420bc7a40, 0x6, 0x8, 0x31e060, 0xc4200154b0)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:269 +0xa6
github.com/nelsam/hel/types.loadPkgTypeSpecs(0xc420fb1e00, 0x31e060, 0xc4200154b0, 0x0, 0x0, 0x0, 0xc420c90570, 0x1)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:274 +0x28e
github.com/nelsam/hel/types.Dir.addPkg(0x0, 0x0, 0x0, 0x0, 0xc420c923a0, 0x8, 0x0, 0x0, 0x0, 0xc420c90540, ...)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:81 +0x90
github.com/nelsam/hel/types.loadDependencies(0xc4201bbfb0, 0xc4200d6000, 0x18, 0x18, 0xc42049cc00, 0x15, 0x20, 0x31e060, 0xc4200154b0, 0x0, ...)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:220 +0x74e
github.com/nelsam/hel/types.dependencies(0xc420763ac0, 0xc4200d6000, 0x18, 0x18, 0xc42049cc00, 0x15, 0x20, 0x31e060, 0xc4200154b0, 0x34faf0, ...)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:162 +0x246
github.com/nelsam/hel/types.loadPkgTypeSpecs.func1(0xc420ae9060, 0xc420ad2bc8, 0xc420ad29e8, 0x31e060, 0xc4200154b0)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:251 +0x138
github.com/nelsam/hel/types.loadPkgTypeSpecs(0xc42022e420, 0x31e060, 0xc4200154b0, 0x0, 0x0, 0x0, 0xc420ae2d50, 0x1)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:274 +0x28e
github.com/nelsam/hel/types.Dir.addPkg(0x0, 0x0, 0x0, 0x0, 0xc420ae4bb3, 0x9, 0x0, 0x0, 0x0, 0xc420ae2d20, ...)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:81 +0x90
github.com/nelsam/hel/types.loadDependencies(0xc420102420, 0xc420030208, 0x1, 0x1, 0xc420015e90, 0x2, 0x2, 0x31e060, 0xc4200154b0, 0xc4200dd060, ...)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:220 +0x74e
github.com/nelsam/hel/types.dependencies(0xc4200fd7c0, 0xc420030208, 0x1, 0x1, 0xc420015e90, 0x2, 0x2, 0x31e060, 0xc4200154b0, 0x29a91, ...)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:161 +0x19a
github.com/nelsam/hel/types.loadPkgTypeSpecs.func1(0xc4201060c0, 0xc420ad3618, 0xc420ad3438, 0x31e060, 0xc4200154b0)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:251 +0x138
github.com/nelsam/hel/types.loadPkgTypeSpecs(0xc420102300, 0x31e060, 0xc4200154b0, 0x0, 0x0, 0x0, 0xc420102ab0, 0x0)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:274 +0x28e
github.com/nelsam/hel/types.Dir.addPkg(0xc420016a80, 0x30, 0xc420015537, 0x9, 0xc420015537, 0x9, 0x0, 0x0, 0x0, 0xc4200119b0, ...)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:81 +0x90
github.com/nelsam/hel/types.Load(0xc4200154a0, 0x1, 0x1, 0x31e060, 0xc4200154b0, 0x1)
	/Users/ninok/go/src/github.com/nelsam/hel/types/types.go:127 +0x232
main.init.1.func1.2()
	/Users/ninok/go/src/github.com/nelsam/hel/main.go:88 +0x21d
main.progress(0xc420ad3c80)
	/Users/ninok/go/src/github.com/nelsam/hel/main.go:147 +0xc8
main.init.1.func1(0xc42009c400, 0xc4200169c0, 0x0, 0x4)
	/Users/ninok/go/src/github.com/nelsam/hel/main.go:89 +0x810
github.com/spf13/cobra.(*Command).execute(0xc42009c400, 0xc42000c150, 0x4, 0x4, 0xc42009c400, 0xc42000c150)
	/Users/ninok/go/src/github.com/spf13/cobra/command.go:565 +0x411
github.com/spf13/cobra.(*Command).ExecuteC(0xc42009c400, 0x0, 0x0, 0x0)
	/Users/ninok/go/src/github.com/spf13/cobra/command.go:651 +0x367
github.com/spf13/cobra.(*Command).Execute(0xc42009c400, 0x0, 0xc420000340)
	/Users/ninok/go/src/github.com/spf13/cobra/command.go:610 +0x2b
main.main()
	/Users/ninok/go/src/github.com/nelsam/hel/main.go:184 +0x2d
session_handler.go:9: running "hel": exit status 2

Any suggestions?

That looks like an old version of hel. Your stack trace references a type assertion at types.go line 160, which is not a type assertion in the current code.

Thanks for looking into it, I updated hel and it is no longer the case. I'm going to close this issue.