Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
NameOfGoy opened this issue Feb 6, 2025 · 1 comment

Comments

@NameOfGoy
Copy link

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
Copy link
Author

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
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant