golang/mock

Cannot parse type parameters on return interface types

Fryuni opened this issue · 2 comments

Actual behavior A clear and concise description of what the bug is.
When the return of an interface includes another interface that uses one of the available type parameter the parsing fails with:

❯ mockgen -source=foo.go
2022/07/21 01:01:20 Loading input failed: foo.go:5:6: failed parsing returns: don't know how to parse type *ast.IndexExpr

This seems similar to #643, but that issue was using reflect mode.

Expected behavior A clear and concise description of what you expected to
happen.

The mock should be generated like any other generic interface, keeping the return type exactly as defined.

To Reproduce Steps to reproduce the behavior

Minimal reproduction
Save this file:

package bugTest

type (
	Foo[T any] interface {
		Bar() Bar[T]
	}
	Bar[T any] interface {
		Baz() T
	}
)

Run mockgen -source <path to file>

Additional Information

  • gomock mode (reflect or source): source
  • gomock version or git ref: v1.6.0
  • golang version: go version go1.19rc2 linux/amd64

Triage Notes for the Maintainers

I have a PR that aims to address this in source mode: #663

Closing as a dupe of #643