wire icon indicating copy to clipboard operation
wire copied to clipboard

Why are methods in ProviderSet that provide interfaces defined in the dependence project being generated as ’invalid type’?

Open NameOfGoy opened this issue 11 months ago • 1 comments

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 : Image

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.

NameOfGoy avatar Feb 06 '25 06:02 NameOfGoy

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
}

NameOfGoy avatar Feb 06 '25 06:02 NameOfGoy