func Report()

in txerr/report.go [51:80]


func Report(in error, verbose bool) string {
	buf := &strbld.Builder{}
	putStr(buf, directOp(in))
	putStr(buf, directCtx(in))

	// if hasMsg is false, new newline will be added when printing the 'cause'
	hasMsg := any(
		putKind(buf, directKind(in)),
		putStr(buf, directMsg(in)),
	)

	if !verbose {
		return buf.String()
	}

	switch err := in.(type) {
	case withChild:
		putErr(buf, hasMsg, err.Cause())

	case withChildren:
		for _, sub := range err.Causes() {
			putSubErr(buf, sub)
		}
	}

	if buf.Len() == 0 {
		return "unknown error"
	}
	return buf.String()
}