wire: build provider map incrementally (google/go-cloud#96)
One small breaking change: a provider set can no longer include an interface binding to a concrete type that is not being provided (directly or indirectly) by the provider set. I can't imagine a reasonable use case for the previous behavior, so this likely will catch more errors In terms of operation, binding conflict error messages will now give much more specific line numbers, since they will be reported closer to where the problem occurred. Now that provider sets gather this information, it can be exposed in the package API. gowire now uses this information instead of trying to build it itself. Fixes google/go-cloud#29
This commit is contained in:
@@ -260,9 +260,9 @@ var BarFooer = wire.NewSet(
|
||||
```
|
||||
|
||||
The first argument to `wire.Bind` is a pointer to a value of the desired
|
||||
interface type and the second argument is a zero value of the concrete type. An
|
||||
interface binding does not necessarily need to have a provider in the same set
|
||||
that provides the concrete type.
|
||||
interface type and the second argument is a zero value of the concrete type.
|
||||
Any set that includes an interface binding must also have a provider in the
|
||||
same set that provides the concrete type.
|
||||
|
||||
[type identity]: https://golang.org/ref/spec#Type_identity
|
||||
[return concrete types]: https://github.com/golang/go/wiki/CodeReviewComments#interfaces
|
||||
|
||||
Reference in New Issue
Block a user