| // Copyright 2018 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package fmt | |
| import "golang.org/x/exp/errors" | |
| // The functionality in this file is to provide adaptors only. It will not | |
| // be included in the standard library. | |
| // FormatError calls the FormatError method of err with a errors.Printer | |
| // configured according to s and verb and writes the result to s. | |
| func FormatError(s State, verb rune, err errors.Formatter) { | |
| // Assuming this function is only called from the Format method, and given | |
| // that FormatError takes precedence over Format, it cannot be called from | |
| // any package that supports errors.Formatter. It is therefore safe to | |
| // disregard that State may be a specific printer implementation and use one | |
| // of our choice instead. | |
| p := newPrinter() | |
| if verb == 'v' { | |
| if s.Flag('#') { | |
| p.fmt.sharpV = true | |
| } | |
| if s.Flag('+') { | |
| p.fmt.plusV = true | |
| } | |
| } | |
| fmtError(p, verb, err) | |
| s.Write(p.buf) | |
| } |