go /
xerrors /
9bdfabe68543c54f90421aeb9a60ef8061b5b544 Errorf: support %w anywhere in the format string
Allow a single %w to appear anywhere in the format string, matched
by an operand that satisfies the error interface.
This is complicated by a few things:
- We don't want to do full-fledged printf verb parsing. We approximate,
and do not handle argument indexes on %w like "%[3]w".
- There is a messy interaction with the xerrors formatting system (not
adopted in Go 1.13). When the %w is at the end we can control the
error string so that the wrapped error's message is formatted
properly, after the wrapping errors' message. With a %w in the
middle, we can't do that. In this CL, we print the wrapped error's
message twice: once in its place in the format string, and then
again because it's wrapped.
Fixes #go/33143.
Change-Id: I6192096521664476e82d5a54b80e352e47397cfe
Reviewed-on: https://go-review.googlesource.com/c/xerrors/+/186957
Reviewed-by: Damien Neil <dneil@google.com>
4 files changed