Source File
cycle_error.go
Belonging Package
go.uber.org/dig
// Copyright (c) 2019 Uber Technologies, Inc.//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to deal// in the Software without restriction, including without limitation the rights// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell// copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions://// The above copyright notice and this permission notice shall be included in// all copies or substantial portions of the Software.//// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN// THE SOFTWARE.package digimport ()type cycleErrPathEntry struct {Key keyFunc *digreflect.Func}type errCycleDetected struct {Path []cycleErrPathEntryscope *Scope}var _ digError = errCycleDetected{}func ( errCycleDetected) () string {// We get something like,//// [scope "foo"]// func(*bar) *foo provided by "path/to/package".NewFoo (path/to/file.go:42)// depends on func(*baz) *bar provided by "another/package".NewBar (somefile.go:1)// depends on func(*foo) baz provided by "somepackage".NewBar (anotherfile.go:2)// depends on func(*bar) *foo provided by "path/to/package".NewFoo (path/to/file.go:42)//:= new(bytes.Buffer)if := .scope.name; len() > 0 {fmt.Fprintf(, "[scope %q]\n", )}for , := range .Path {if > 0 {.WriteString("\n\tdepends on ")}fmt.Fprintf(, "%v provided by %v", .Key, .Func)}return .String()}func ( errCycleDetected) ( io.Writer, string) {fmt.Fprint(, .Error())}func ( errCycleDetected) ( fmt.State, rune) {formatError(, , )}// IsCycleDetected returns a boolean as to whether the provided error indicates// a cycle was detected in the container graph.func ( error) bool {return errors.As(, &errCycleDetected{})}
![]() |
The pages are generated with Golds v0.8.2. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |