wire
wire copied to clipboard
Why are methods in ProviderSet that provide interfaces defined in the dependence project being generated as ’invalid type’?
Describe the bug
ProviderSet like :
import (
"dependence-project/s3"
"dependence-project/s3/minio"
"github.com/google/wire"
)
var ProviderSet = wire.NewSet(NewS3)
func NewS3(dataConf *conf.Data) (s3.S3, error) {
return minio.NewS3(dataConf.Minio.Endpoint, dataConf.Minio.AccessKeyId, dataConf.Minio.SecretAccessKey, false, "")
}
the s3 definition in the dependence project like this :
wire.go:
func wireApp(*conf.Data) (*kratos.App, func(), error) {
panic(wire.Build(s3.ProviderSet, newApp))
}
wire_gen.go:
invalid type, err := s3.NewS3(data)
if err != nil {
return nil, nil, err
}
and the last generate err : wire: 40:10: expected ';', found 'type' (and 1 more errors)
Expected behavior
I hope that it can be able to correctly generate the interface types defined in the dependency project
Version
0.6.0
Additional context
Add any other context about the problem here.
I have got to wrap it with a struct in order for it to generate without errors.
type Client struct {
s3.S3
}
func NewS3(dataConf *conf.Data) (*Client, error) {
s3c, err := minio.NewS3(dataConf.Minio.Endpoint, dataConf.Minio.AccessKeyId, dataConf.Minio.SecretAccessKey, false, "")
return &Client{
S3: s3c,
}, err
}