Generating mocks (reflect mode) fails if interface contains methods with generic types
daolis opened this issue · 2 comments
daolis commented
Generating mocks (reflect mode) fails with Failed to format generated source code:
if the interface contains methods with generic types.
The generated code contains the full package path as the type.
The wrong type is returned from reflect.typeOf
(see golang/go#55147)
Reproduceable with
package test
import (
_ "github.com/golang/mock/gomock"
)
type TestType string
type TestGenericType[T any] struct {
blaa T
}
//go:generate mockgen -destination zz_generated_mock.go -package mockst . TestGenericInterface
type TestGenericInterface interface {
TestMethod() TestGenericType[TestType]
}
generated file contains e.g. this method
// TestMethod mocks base method.
func (m *MockTestGenericInterface) TestMethod() test.TestGenericType[github.com/daolis/mockgentest/test.TestType] {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "TestMethod")
ret0, _ := ret[0].(test.TestGenericType[github.com/daolis/mockgentest/test.TestType])
return ret0
}