run
goerr innerone innertwo
assertion outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&assert.withAssertionFailure{
    cause: &errbase.opaqueWrapper{
        cause: &barriers.barrierErr{
            smsg:      "‹innerone›\n‹innertwo›",
            maskedErr: &errors.errorString{s:"innerone\ninnertwo"},
        },
        prefix:  "",
        details: errorspb.EncodedErrorDetails{
            OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
            ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
            ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
            FullDetails:       (*types.Any)(nil),
        },
    },
}
=====
===== non-redactable formats
=====
== %#v
&assert.withAssertionFailure{
    cause: &errbase.opaqueWrapper{
        cause: &barriers.barrierErr{
            smsg:      "‹innerone›\n‹innertwo›",
            maskedErr: &errors.errorString{s:"innerone\ninnertwo"},
        },
        prefix:  "",
        details: errorspb.EncodedErrorDetails{
            OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
            ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
            ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
            FullDetails:       (*types.Any)(nil),
        },
    },
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1) assertion failure
Wraps: (2)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (3) innerone
  | innertwo
  | -- cause hidden behind barrier
  | innerone
  | (1) innerone
  |   | innertwo
  | Error types: (1) *errors.errorString
Error types: (1) *assert.withAssertionFailure (2) *errbase.opaqueWrapper (3) *barriers.barrierErr
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1) assertion failure
Wraps: (2)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (3) ‹innerone›
  | ‹innertwo›
  | -- cause hidden behind barrier
  | ‹innerone›
  | (1) ‹innerone›‹›
  | ‹  | innertwo›
  | Error types: (1) *errors.errorString
Error types: (1) *assert.withAssertionFailure (2) *errbase.opaqueWrapper (3) *barriers.barrierErr
=====
===== Sentry reporting
=====
== Message payload
<path>:<lineno>: ×
(1) assertion failure
Wraps: (2)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (3) ×
  | ×
  | -- cause hidden behind barrier
  | ×
  | (1) ××
  | ×
  | Error types: (1) *errors.errorString
Error types: (1) *assert.withAssertionFailure (2) *errbase.opaqueWrapper (3) *barriers.barrierErr
-- report composition:
*barriers.barrierErr: masked error: ×
<path>:<lineno>: *withstack.withStack (top exception)
*assert.withAssertionFailure
== Extra "error types"
github.com/cockroachdb/errors/barriers/*barriers.barrierErr (*::)
github.com/cockroachdb/errors/withstack/*withstack.withStack (*::)
github.com/cockroachdb/errors/assert/*assert.withAssertionFailure (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "<path>:<lineno> ...funcNN...
Title: "*barriers.barrierErr: ×\nvia *withstack.withStack"
<path>:<lineno>:
   (runtime) goexit()
<path>:<lineno>:
   (testing) tRunner()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven.Walk)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) Walk()
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.TestDatadriven)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) RunTest()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runTestInternal()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runDirectiveOrSubTest()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runDirective()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven.runDirective)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.TestDatadriven.func2) 1()
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.glob.)...funcNN...

run
goerr innerone innertwo
assertwrap outerthree outerfour
opaque

require (?s)outerthree.*outerfour.*innerone.*innertwo
----
&assert.withAssertionFailure{
    cause: &errbase.opaqueWrapper{
        cause: &errutil.withPrefix{
            cause: &barriers.barrierErr{
                smsg:      "‹innerone›\n‹innertwo›",
                maskedErr: &errors.errorString{s:"innerone\ninnertwo"},
            },
            prefix: "assertmsg: ‹outerthree›\n‹outerfour›",
        },
        prefix:  "",
        details: errorspb.EncodedErrorDetails{
            OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
            ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
            ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
            FullDetails:       (*types.Any)(nil),
        },
    },
}
=====
===== non-redactable formats
=====
== %#v
&assert.withAssertionFailure{
    cause: &errbase.opaqueWrapper{
        cause: &errutil.withPrefix{
            cause: &barriers.barrierErr{
                smsg:      "‹innerone›\n‹innertwo›",
                maskedErr: &errors.errorString{s:"innerone\ninnertwo"},
            },
            prefix: "assertmsg: ‹outerthree›\n‹outerfour›",
        },
        prefix:  "",
        details: errorspb.EncodedErrorDetails{
            OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
            ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
            ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
            FullDetails:       (*types.Any)(nil),
        },
    },
}
== Error()
assertmsg: outerthree
outerfour: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
assertmsg: outerthree: innerone
(1) assertion failure
Wraps: (2)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (3) assertmsg: outerthree
  | outerfour
Wraps: (4) innerone
  | innertwo
  | -- cause hidden behind barrier
  | innerone
  | (1) innerone
  |   | innertwo
  | Error types: (1) *errors.errorString
Error types: (1) *assert.withAssertionFailure (2) *errbase.opaqueWrapper (3) *errutil.withPrefix (4) *barriers.barrierErr
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
assertmsg: ‹outerthree›
‹outerfour›: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
assertmsg: ‹outerthree›: ‹innerone›
(1) assertion failure
Wraps: (2)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (3) assertmsg: ‹outerthree›
  | ‹outerfour›
Wraps: (4) ‹innerone›
  | ‹innertwo›
  | -- cause hidden behind barrier
  | ‹innerone›
  | (1) ‹innerone›‹›
  | ‹  | innertwo›
  | Error types: (1) *errors.errorString
Error types: (1) *assert.withAssertionFailure (2) *errbase.opaqueWrapper (3) *errutil.withPrefix (4) *barriers.barrierErr
=====
===== Sentry reporting
=====
== Message payload
<path>:<lineno>: assertmsg: ×: ×
(1) assertion failure
Wraps: (2)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (3) assertmsg: ×
  | ×
Wraps: (4) ×
  | ×
  | -- cause hidden behind barrier
  | ×
  | (1) ××
  | ×
  | Error types: (1) *errors.errorString
Error types: (1) *assert.withAssertionFailure (2) *errbase.opaqueWrapper (3) *errutil.withPrefix (4) *barriers.barrierErr
-- report composition:
*barriers.barrierErr: masked error: ×
*errutil.withPrefix: assertmsg: ×
<path>:<lineno>: *withstack.withStack (top exception)
*assert.withAssertionFailure
== Extra "error types"
github.com/cockroachdb/errors/barriers/*barriers.barrierErr (*::)
github.com/cockroachdb/errors/errutil/*errutil.withPrefix (*::)
github.com/cockroachdb/errors/withstack/*withstack.withStack (*::)
github.com/cockroachdb/errors/assert/*assert.withAssertionFailure (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "<path>:<lineno> ...funcNN...
Title: "*barriers.barrierErr: assertmsg: ×: ×\nvia *withstack.withStack"
<path>:<lineno>:
   (runtime) goexit()
<path>:<lineno>:
   (testing) tRunner()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven.Walk)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) Walk()
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.TestDatadriven)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) RunTest()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runTestInternal()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runDirectiveOrSubTest()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runDirective()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven.runDirective)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.TestDatadriven.func2) 1()
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.glob.)...funcNN...

run
goerr innerone innertwo
barrier outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&barriers.barrierErr{
    smsg:      "‹innerone›\n‹innertwo›",
    maskedErr: &errors.errorString{s:"innerone\ninnertwo"},
}
=====
===== non-redactable formats
=====
== %#v
&barriers.barrierErr{
    smsg:      "‹innerone›\n‹innertwo›",
    maskedErr: &errors.errorString{s:"innerone\ninnertwo"},
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1) innerone
  | innertwo
  | -- cause hidden behind barrier
  | innerone
  | (1) innerone
  |   | innertwo
  | Error types: (1) *errors.errorString
Error types: (1) *barriers.barrierErr
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1) ‹innerone›
  | ‹innertwo›
  | -- cause hidden behind barrier
  | ‹innerone›
  | (1) ‹innerone›‹›
  | ‹  | innertwo›
  | Error types: (1) *errors.errorString
Error types: (1) *barriers.barrierErr
=====
===== Sentry reporting
=====
== Message payload
×
(1) ×
  | ×
  | -- cause hidden behind barrier
  | ×
  | (1) ××
  | ×
  | Error types: (1) *errors.errorString
Error types: (1) *barriers.barrierErr
-- report composition:
*barriers.barrierErr: masked error: ×
== Extra "error types"
github.com/cockroachdb/errors/barriers/*barriers.barrierErr (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*barriers.barrierErr"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
delegate outerthree outerfour
opaque

require (?s)outerthree.*outerfour.*innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegate",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegate", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegate",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegate", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
outerthree
outerfour: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
outerthree: innerone
(1) outerthree
  | outerfour
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegate
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹outerthree›
‹outerfour›: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹outerthree›: ‹innerone›
(1) ‹outerthree›
  | ‹outerfour›
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegate
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×: ×
(1) ×
  | ×
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegate
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
*fmttests.werrDelegate
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegate (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×: ×"
(NO STACKTRACE)

run
goerr innerone innertwo
delegate-empty outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateEmpty",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateEmpty", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateEmpty",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateEmpty", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateEmpty
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateEmpty
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateEmpty
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
*fmttests.werrDelegateEmpty
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateEmpty (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
delegate-noprefix outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateNoPrefix",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateNoPrefix", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateNoPrefix",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateNoPrefix", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateNoPrefix
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateNoPrefix
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateNoPrefix
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
*fmttests.werrDelegateNoPrefix
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/fmttests/*fmttests.werrDelegateNoPrefix (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
detail outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&hintdetail.withDetail{
    cause:  &errors.errorString{s:"innerone\ninnertwo"},
    detail: "outerthree\nouterfour",
}
=====
===== non-redactable formats
=====
== %#v
&hintdetail.withDetail{
    cause:  &errors.errorString{s:"innerone\ninnertwo"},
    detail: "outerthree\nouterfour",
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1) outerthree
  | outerfour
Wraps: (2) innerone
  | innertwo
Error types: (1) *hintdetail.withDetail (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1) ‹outerthree›
‹  | outerfour›
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *hintdetail.withDetail (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×
(1) ×
×
Wraps: (2) ××
×
Error types: (1) *hintdetail.withDetail (2) *errors.errorString
-- report composition:
*errors.errorString
*hintdetail.withDetail
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/hintdetail/*hintdetail.withDetail (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
domain outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&domains.withDomain{
    cause:  &errors.errorString{s:"innerone\ninnertwo"},
    domain: "mydomain",
}
=====
===== non-redactable formats
=====
== %#v
&domains.withDomain{
    cause:  &errors.errorString{s:"innerone\ninnertwo"},
    domain: "mydomain",
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1) mydomain
Wraps: (2) innerone
  | innertwo
Error types: (1) *domains.withDomain (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1) mydomain
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *domains.withDomain (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×
(1) mydomain
Wraps: (2) ××
×
Error types: (1) *domains.withDomain (2) *errors.errorString
-- report composition:
*errors.errorString
*domains.withDomain: mydomain
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/domains/*domains.withDomain (*::mydomain)
== Exception 1 (Module: "mydomain")
Type: "*errors.errorString"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
elided-cause outerthree outerfour
opaque

require (?s)outerthree.*outerfour
----
&fmttests.werrWithElidedCause{
    wrapped: &errors.errorString{s:"innerone\ninnertwo"},
    msg:     "outerthree\nouterfour",
}
=====
===== non-redactable formats
=====
== %#v
&fmttests.werrWithElidedCause{
    wrapped: &errors.errorString{s:"innerone\ninnertwo"},
    msg:     "outerthree\nouterfour",
}
== Error()
outerthree
outerfour
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
outerthree
(1) outerthree
  | outerfour
Wraps: (2) innerone
  | innertwo
Error types: (1) *fmttests.werrWithElidedCause (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹outerthree›
‹outerfour›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹outerthree›
(1) ‹outerthree›‹›
‹  | outerfour›
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *fmttests.werrWithElidedCause (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×
(1) ××
×
Wraps: (2) ××
×
Error types: (1) *fmttests.werrWithElidedCause (2) *errors.errorString
-- report composition:
*errors.errorString
*fmttests.werrWithElidedCause
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/fmttests/*fmttests.werrWithElidedCause (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
empty outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrEmpty",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrEmpty", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrEmpty",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrEmpty", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrEmpty
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrEmpty
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrEmpty
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
*fmttests.werrEmpty
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/fmttests/*fmttests.werrEmpty (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
fmt outerthree outerfour
opaque

require (?s)outerthree.*outerfour.*innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrFmt",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrFmt", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrFmt",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrFmt", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
outerthree
outerfour: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
outerthree: innerone
(1) outerthree
  | outerfour
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrFmt
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹outerthree›
‹outerfour›: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹outerthree›: ‹innerone›
(1) ‹outerthree›
  | ‹outerfour›
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrFmt
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×: ×
(1) ×
  | ×
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrFmt
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
*fmttests.werrFmt
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/fmttests/*fmttests.werrFmt (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×: ×"
(NO STACKTRACE)

run
goerr innerone innertwo
fmt-old outerthree outerfour
opaque

accept %\+v via Formattable.*IRREGULAR: not same as %\+v
accept %\#v via Formattable.*IRREGULAR: not same as %\#v

require (?s)outerthree.*outerfour.*innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrFmto",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrFmto", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrFmto",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrFmto", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
outerthree
outerfour: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
outerthree: innerone
(1) outerthree
  | outerfour
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrFmto
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹outerthree›
‹outerfour›: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹outerthree›: ‹innerone›
(1) ‹outerthree›
  | ‹outerfour›
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrFmto
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×: ×
(1) ×
  | ×
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrFmto
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
*fmttests.werrFmto
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/fmttests/*fmttests.werrFmto (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×: ×"
(NO STACKTRACE)

run
goerr innerone innertwo
fmt-old-delegate outerthree outerfour
opaque

accept %\+v via Formattable.*IRREGULAR: not same as %\+v
accept %\#v via Formattable.*IRREGULAR: not same as %\#v

require (?s)outerthree.*outerfour.*innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtoDelegate",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtoDelegate", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtoDelegate",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtoDelegate", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
outerthree
outerfour: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
outerthree: innerone
(1) outerthree
  | outerfour
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtoDelegate
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹outerthree›
‹outerfour›: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹outerthree›: ‹innerone›
(1) ‹outerthree›
  | ‹outerfour›
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtoDelegate
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×: ×
(1) ×
  | ×
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtoDelegate
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
*fmttests.werrFmtoDelegate
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtoDelegate (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×: ×"
(NO STACKTRACE)

run
goerr innerone innertwo
fmt-partial outerthree outerfour
opaque

require (?s)outerthree.*outerfour.*innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtp",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtp", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtp",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtp", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
outerthree
outerfour: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
outerthree: innerone
(1) outerthree
  | outerfour
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtp
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹outerthree›
‹outerfour›: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹outerthree›: ‹innerone›
(1) ‹outerthree›
  | ‹outerfour›
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtp
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×: ×
(1) ×
  | ×
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtp
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
*fmttests.werrFmtp
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/fmttests/*fmttests.werrFmtp (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×: ×"
(NO STACKTRACE)

run
goerr innerone innertwo
goerr outerthree outerfour
opaque

accept %\+v via Formattable.*IRREGULAR: not same as %\+v
accept %\#v via Formattable.*IRREGULAR: not same as %\#v

require (?s)outerthree.*outerfour.*innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "fmt/*fmt.wrapError",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"fmt/*fmt.wrapError", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "fmt/*fmt.wrapError",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"fmt/*fmt.wrapError", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
outerthree
outerfour: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
outerthree: innerone
(1) outerthree
  | outerfour
  |
  | (opaque error wrapper)
  | type name: fmt/*fmt.wrapError
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹outerthree›
‹outerfour›: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹outerthree›: ‹innerone›
(1) ‹outerthree›
  | ‹outerfour›
  |
  | (opaque error wrapper)
  | type name: fmt/*fmt.wrapError
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×: ×
(1) ×
  | ×
  |
  | (opaque error wrapper)
  | type name: fmt/*fmt.wrapError
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
*fmt.wrapError
== Extra "error types"
errors/*errors.errorString (*::)
fmt/*fmt.wrapError (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×: ×"
(NO STACKTRACE)

run
goerr innerone innertwo
handled-domain outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&domains.withDomain{
    cause: &barriers.barrierErr{
        smsg:      "‹innerone›\n‹innertwo›",
        maskedErr: &errors.errorString{s:"innerone\ninnertwo"},
    },
    domain: "error domain: pkg <path>",
}
=====
===== non-redactable formats
=====
== %#v
&domains.withDomain{
    cause: &barriers.barrierErr{
        smsg:      "‹innerone›\n‹innertwo›",
        maskedErr: &errors.errorString{s:"innerone\ninnertwo"},
    },
    domain: "error domain: pkg <path>",
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1) error domain: pkg <path>
Wraps: (2) innerone
  | innertwo
  | -- cause hidden behind barrier
  | innerone
  | (1) innerone
  |   | innertwo
  | Error types: (1) *errors.errorString
Error types: (1) *domains.withDomain (2) *barriers.barrierErr
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1) error domain: pkg <path>
Wraps: (2) ‹innerone›
  | ‹innertwo›
  | -- cause hidden behind barrier
  | ‹innerone›
  | (1) ‹innerone›‹›
  | ‹  | innertwo›
  | Error types: (1) *errors.errorString
Error types: (1) *domains.withDomain (2) *barriers.barrierErr
=====
===== Sentry reporting
=====
== Message payload
×
(1) error domain: pkg <path>
Wraps: (2) ×
  | ×
  | -- cause hidden behind barrier
  | ×
  | (1) ××
  | ×
  | Error types: (1) *errors.errorString
Error types: (1) *domains.withDomain (2) *barriers.barrierErr
-- report composition:
*barriers.barrierErr: masked error: ×
*domains.withDomain: error domain: pkg <path>
== Extra "error types"
github.com/cockroachdb/errors/barriers/*barriers.barrierErr (*::)
github.com/cockroachdb/errors/domains/*domains.withDomain (*::error domain: pkg <path>)
== Exception 1 (Module: "error domain: pkg <path>")
Type: "*barriers.barrierErr"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
hint outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&hintdetail.withHint{
    cause: &errors.errorString{s:"innerone\ninnertwo"},
    hint:  "outerthree\nouterfour",
}
=====
===== non-redactable formats
=====
== %#v
&hintdetail.withHint{
    cause: &errors.errorString{s:"innerone\ninnertwo"},
    hint:  "outerthree\nouterfour",
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1) outerthree
  | outerfour
Wraps: (2) innerone
  | innertwo
Error types: (1) *hintdetail.withHint (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1) ‹outerthree›
‹  | outerfour›
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *hintdetail.withHint (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×
(1) ×
×
Wraps: (2) ××
×
Error types: (1) *hintdetail.withHint (2) *errors.errorString
-- report composition:
*errors.errorString
*hintdetail.withHint
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/hintdetail/*hintdetail.withHint (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
issuelink outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&issuelink.withIssueLink{
    cause:     &errors.errorString{s:"innerone\ninnertwo"},
    IssueLink: issuelink.IssueLink{IssueURL:"https://mysite", Detail:"outerthree\nouterfour"},
}
=====
===== non-redactable formats
=====
== %#v
&issuelink.withIssueLink{
    cause:     &errors.errorString{s:"innerone\ninnertwo"},
    IssueLink: issuelink.IssueLink{IssueURL:"https://mysite", Detail:"outerthree\nouterfour"},
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1) issue: https://mysite
  | detail: outerthree
  | outerfour
Wraps: (2) innerone
  | innertwo
Error types: (1) *issuelink.withIssueLink (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1) issue: https://mysite
  | detail: outerthree
  | outerfour
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *issuelink.withIssueLink (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×
(1) issue: https://mysite
  | detail: outerthree
  | outerfour
Wraps: (2) ××
×
Error types: (1) *issuelink.withIssueLink (2) *errors.errorString
-- report composition:
*errors.errorString
*issuelink.withIssueLink: https://mysite
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/issuelink/*issuelink.withIssueLink (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
migrated outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrMigrated",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"some/previous/path/prevpkg.prevType", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrMigrated",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"some/previous/path/prevpkg.prevType", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrMigrated
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrMigrated
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrMigrated
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
*fmttests.werrMigrated
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/fmttests/*fmttests.werrMigrated (some/previous/path/prevpkg.prevType::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
msg outerthree outerfour
opaque

require (?s)outerthree.*outerfour.*innerone.*innertwo
----
&errutil.withPrefix{
    cause:  &errors.errorString{s:"innerone\ninnertwo"},
    prefix: "outerthree\nouterfour",
}
=====
===== non-redactable formats
=====
== %#v
&errutil.withPrefix{
    cause:  &errors.errorString{s:"innerone\ninnertwo"},
    prefix: "outerthree\nouterfour",
}
== Error()
outerthree
outerfour: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
outerthree: innerone
(1) outerthree
  | outerfour
Wraps: (2) innerone
  | innertwo
Error types: (1) *errutil.withPrefix (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
outerthree
outerfour: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
outerthree: ‹innerone›
(1) outerthree
  | outerfour
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errutil.withPrefix (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
outerthree: ×
(1) outerthree
  | outerfour
Wraps: (2) ××
×
Error types: (1) *errutil.withPrefix (2) *errors.errorString
-- report composition:
*errors.errorString
*errutil.withPrefix: outerthree
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/errutil/*errutil.withPrefix (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "outerthree: ×"
(NO STACKTRACE)

run
goerr innerone innertwo
newfw outerthree outerfour
opaque

require (?s)outerthree.*outerfour.*innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause: &secondary.withSecondaryError{
        cause: &errutil.withNewMessage{
            cause:   &errors.errorString{s:"innerone\ninnertwo"},
            message: "new-style (‹outerthree›\n‹outerfour›) :: ‹innerone›\n‹innertwo› ::",
        },
        secondaryError: &errors.errorString{s:"innerone\ninnertwo"},
    },
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
        ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause: &secondary.withSecondaryError{
        cause: &errutil.withNewMessage{
            cause:   &errors.errorString{s:"innerone\ninnertwo"},
            message: "new-style (‹outerthree›\n‹outerfour›) :: ‹innerone›\n‹innertwo› ::",
        },
        secondaryError: &errors.errorString{s:"innerone\ninnertwo"},
    },
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
        ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
new-style (outerthree
outerfour) :: innerone
innertwo ::
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
new-style (outerthree
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) secondary error attachment
  | innerone
  | (1) innerone
  |   | innertwo
  | Error types: (1) *errors.errorString
Wraps: (3) new-style (outerthree
  | outerfour) :: innerone
  | innertwo ::
Wraps: (4) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *secondary.withSecondaryError (3) *errutil.withNewMessage (4) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
new-style (‹outerthree›
‹outerfour›) :: ‹innerone›
‹innertwo› ::
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
new-style (‹outerthree›
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) secondary error attachment
  | ‹innerone›
  | (1) ‹innerone›‹›
  | ‹  | innertwo›
  | Error types: (1) *errors.errorString
Wraps: (3) new-style (‹outerthree›
  | ‹outerfour›) :: ‹innerone›
  | ‹innertwo› ::
Wraps: (4) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *secondary.withSecondaryError (3) *errutil.withNewMessage (4) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
<path>:<lineno>: new-style (×
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) secondary error attachment
  | ×
  | (1) ××
  | ×
  | Error types: (1) *errors.errorString
Wraps: (3) new-style (×
  | ×) :: ×
  | × ::
Wraps: (4) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *secondary.withSecondaryError (3) *errutil.withNewMessage (4) *errors.errorString
-- report composition:
*errors.errorString
*errutil.withNewMessage: new-style (×
*secondary.withSecondaryError
<path>:<lineno>: *withstack.withStack (top exception)
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/errutil/*errutil.withNewMessage (*::)
github.com/cockroachdb/errors/secondary/*secondary.withSecondaryError (*::)
github.com/cockroachdb/errors/withstack/*withstack.withStack (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "<path>:<lineno> ...funcNN...
Title: "*errors.errorString: new-style (×\nvia *withstack.withStack"
<path>:<lineno>:
   (runtime) goexit()
<path>:<lineno>:
   (testing) tRunner()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven.Walk)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) Walk()
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.TestDatadriven)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) RunTest()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runTestInternal()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runDirectiveOrSubTest()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runDirective()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven.runDirective)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.TestDatadriven.func2) 1()
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.glob.)...funcNN...

run
goerr innerone innertwo
nofmt outerthree outerfour
opaque

accept %\+v via Formattable.*IRREGULAR: not same as %\+v
accept %\#v via Formattable.*IRREGULAR: not same as %\#v

require (?s)outerthree.*outerfour.*innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrNoFmt",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrNoFmt", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrNoFmt",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrNoFmt", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
outerthree
outerfour: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
outerthree: innerone
(1) outerthree
  | outerfour
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrNoFmt
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹outerthree›
‹outerfour›: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹outerthree›: ‹innerone›
(1) ‹outerthree›
  | ‹outerfour›
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrNoFmt
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×: ×
(1) ×
  | ×
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrNoFmt
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
*fmttests.werrNoFmt
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/fmttests/*fmttests.werrNoFmt (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×: ×"
(NO STACKTRACE)

run
goerr innerone innertwo
os-link outerthree outerfour
opaque

accept %\+v via Formattable.*IRREGULAR: not same as %\+v
accept %\#v via Formattable.*IRREGULAR: not same as %\#v

require (?s)innerone.*innertwo
----
&os.LinkError{
    Op:  "link",
    Old: "/path/to/file",
    New: "/path/to/newfile",
    Err: &errors.errorString{s:"innerone\ninnertwo"},
}
=====
===== non-redactable formats
=====
== %#v
&os.LinkError{Op:"link", Old:"/path/to/file", New:"/path/to/newfile", Err:(*errors.errorString)(0xAAAABBBB)}
== Error()
link /path/to/file /path/to/newfile: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v = Error(), ok
== %#v via Formattable() (IRREGULAR: not same as %#v)
&os.LinkError{
    Op:  "link",
    Old: "/path/to/file",
    New: "/path/to/newfile",
    Err: &errors.errorString{s:"innerone\ninnertwo"},
}
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() (IRREGULAR: not same as %+v)
link /path/to/file /path/to/newfile: innerone
(1) link /path/to/file /path/to/newfile
Wraps: (2) innerone
  | innertwo
Error types: (1) *os.LinkError (2) *errors.errorString
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
link ‹/path/to/file› ‹/path/to/newfile›: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v via Formattable()
link ‹/path/to/file› ‹/path/to/newfile›: ‹innerone›
(1) link ‹/path/to/file› ‹/path/to/newfile›
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *os.LinkError (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
link × ×: ×
(1) link × ×
Wraps: (2) ××
×
Error types: (1) *os.LinkError (2) *errors.errorString
-- report composition:
*errors.errorString
*os.LinkError
== Extra "error types"
errors/*errors.errorString (*::)
os/*os.LinkError (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "link × ×: ×"
(NO STACKTRACE)

run
goerr innerone innertwo
os-netop outerthree outerfour
opaque

accept %\+v via Formattable.*IRREGULAR: not same as %\+v
accept %\#v via Formattable.*IRREGULAR: not same as %\#v

require (?s)innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "send tcp unixhello",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "net/*net.OpError",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"net/*net.OpError", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "send tcp unixhello",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "net/*net.OpError",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"net/*net.OpError", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
send tcp unixhello: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
send tcp unixhello: innerone
(1) send tcp unixhello
  |
  | (opaque error wrapper)
  | type name: net/*net.OpError
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹send tcp unixhello›: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹send tcp unixhello›: ‹innerone›
(1) ‹send tcp unixhello›
  |
  | (opaque error wrapper)
  | type name: net/*net.OpError
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×: ×
(1) ×
  |
  | (opaque error wrapper)
  | type name: net/*net.OpError
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
*net.OpError
== Extra "error types"
errors/*errors.errorString (*::)
net/*net.OpError (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×: ×"
(NO STACKTRACE)

run
goerr innerone innertwo
os-path outerthree outerfour
opaque

accept %\+v via Formattable.*IRREGULAR: not same as %\+v
accept %\#v via Formattable.*IRREGULAR: not same as %\#v

require (?s)innerone.*innertwo
----
&fs.PathError{
    Op:   "link",
    Path: "/path/to/file",
    Err:  &errors.errorString{s:"innerone\ninnertwo"},
}
=====
===== non-redactable formats
=====
== %#v
&fs.PathError{Op:"link", Path:"/path/to/file", Err:(*errors.errorString)(0xAAAABBBB)}
== Error()
link /path/to/file: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v = Error(), ok
== %#v via Formattable() (IRREGULAR: not same as %#v)
&fs.PathError{
    Op:   "link",
    Path: "/path/to/file",
    Err:  &errors.errorString{s:"innerone\ninnertwo"},
}
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() (IRREGULAR: not same as %+v)
link /path/to/file: innerone
(1) link /path/to/file
Wraps: (2) innerone
  | innertwo
Error types: (1) *fs.PathError (2) *errors.errorString
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
link ‹/path/to/file›: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v via Formattable()
link ‹/path/to/file›: ‹innerone›
(1) link ‹/path/to/file›
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *fs.PathError (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
link ×: ×
(1) link ×
Wraps: (2) ××
×
Error types: (1) *fs.PathError (2) *errors.errorString
-- report composition:
*errors.errorString
*fs.PathError
== Extra "error types"
errors/*errors.errorString (*::)
io/fs/*fs.PathError (os/*os.PathError::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "link ×: ×"
(NO STACKTRACE)

run
goerr innerone innertwo
os-syscall outerthree outerfour
opaque

accept %\+v via Formattable.*IRREGULAR: not same as %\+v
accept %\#v via Formattable.*IRREGULAR: not same as %\#v

require (?s)innerone.*innertwo
----
&os.SyscallError{
    Syscall: "open",
    Err:     &errors.errorString{s:"innerone\ninnertwo"},
}
=====
===== non-redactable formats
=====
== %#v
&os.SyscallError{Syscall:"open", Err:(*errors.errorString)(0xAAAABBBB)}
== Error()
open: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v = Error(), ok
== %#v via Formattable() (IRREGULAR: not same as %#v)
&os.SyscallError{
    Syscall: "open",
    Err:     &errors.errorString{s:"innerone\ninnertwo"},
}
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() (IRREGULAR: not same as %+v)
open: innerone
(1) open
Wraps: (2) innerone
  | innertwo
Error types: (1) *os.SyscallError (2) *errors.errorString
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
open: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v via Formattable()
open: ‹innerone›
(1) open
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *os.SyscallError (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
open: ×
(1) open
Wraps: (2) ××
×
Error types: (1) *os.SyscallError (2) *errors.errorString
-- report composition:
*errors.errorString
*os.SyscallError
== Extra "error types"
errors/*errors.errorString (*::)
os/*os.SyscallError (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "open: ×"
(NO STACKTRACE)

run
goerr innerone innertwo
pkgmsg outerthree outerfour
opaque

accept %x.*IRREGULAR: not same as hex Error
accept %q.*IRREGULAR: not same as quoted Error
accept %X.*IRREGULAR: not same as HEX Error
accept %\#v via Formattable.*IRREGULAR: not same as %\#v
accept %\+v via Formattable.*IRREGULAR: not same as %\+v
require (?s)outerthree.*outerfour.*innerone.*innertwo
----
&errors.withMessage{
    cause: &errors.errorString{s:"innerone\ninnertwo"},
    msg:   "outerthree\nouterfour",
}
=====
===== non-redactable formats
=====
== %#v
outerthree
outerfour: innerone
innertwo
== Error()
outerthree
outerfour: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q (IRREGULAR: not same as quoted Error())
outerthree
outerfour: innerone
innertwo
== %x (IRREGULAR: not same as hex Error())
(EMPTY STRING)
== %X (IRREGULAR: not same as HEX Error())
(EMPTY STRING)
== %+v
innerone
innertwo
outerthree
outerfour
== %#v via Formattable() (IRREGULAR: not same as %#v)
&errors.withMessage{
    cause: &errors.errorString{s:"innerone\ninnertwo"},
    msg:   "outerthree\nouterfour",
}
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() (IRREGULAR: not same as %+v)
outerthree: innerone
(1) outerthree
  | outerfour
Wraps: (2) innerone
  | innertwo
Error types: (1) *errors.withMessage (2) *errors.errorString
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹outerthree›
‹outerfour›: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v via Formattable()
‹outerthree›: ‹innerone›
(1) ‹outerthree›‹›
‹  | outerfour›
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errors.withMessage (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×: ×
(1) ××
×
Wraps: (2) ××
×
Error types: (1) *errors.withMessage (2) *errors.errorString
-- report composition:
*errors.errorString
*errors.withMessage
== Extra "error types"
errors/*errors.errorString (*::)
github.com/pkg/errors/*errors.withMessage (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×: ×"
(NO STACKTRACE)

run
goerr innerone innertwo
pkgstack outerthree outerfour
opaque

accept %x.*IRREGULAR: not same as hex Error
accept %q.*IRREGULAR: not same as quoted Error
accept %X.*IRREGULAR: not same as HEX Error
accept %\#v via Formattable.*IRREGULAR: not same as %\#v
accept %\+v via Formattable.*IRREGULAR: not same as %\+v
require (?s)innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/pkg/errors/*errors.withStack",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/pkg/errors/*errors.withStack", Extension:""},
        ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/pkg/errors/*errors.withStack",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/pkg/errors/*errors.withStack", Extension:""},
        ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1)
  | (opaque error wrapper)
  | type name: github.com/pkg/errors/*errors.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1)
  | (opaque error wrapper)
  | type name: github.com/pkg/errors/*errors.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
<path>:<lineno>: ×
(1)
  | (opaque error wrapper)
  | type name: github.com/pkg/errors/*errors.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
<path>:<lineno>: *errors.withStack (top exception)
== Extra "error types"
errors/*errors.errorString (*::)
github.com/pkg/errors/*errors.withStack (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "<path>:<lineno> ...funcNN...
Title: "*errors.errorString: ×\nvia *errors.withStack"
<path>:<lineno>:
   (runtime) goexit()
<path>:<lineno>:
   (testing) tRunner()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven.Walk)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) Walk()
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.TestDatadriven)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) RunTest()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runTestInternal()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runDirectiveOrSubTest()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runDirective()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven.runDirective)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.TestDatadriven.func2) 1()
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.glob.)...funcNN...

run
goerr innerone innertwo
safedetails outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&safedetails.withSafeDetails{
    cause:       &errors.errorString{s:"innerone\ninnertwo"},
    safeDetails: {"safe ×\n×"},
}
=====
===== non-redactable formats
=====
== %#v
&safedetails.withSafeDetails{
    cause:       &errors.errorString{s:"innerone\ninnertwo"},
    safeDetails: {"safe ×\n×"},
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1) safe ×
  | ×
Wraps: (2) innerone
  | innertwo
Error types: (1) *safedetails.withSafeDetails (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1) safe ×
  | ×
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *safedetails.withSafeDetails (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×
(1) safe ×
  | ×
Wraps: (2) ××
×
Error types: (1) *safedetails.withSafeDetails (2) *errors.errorString
-- report composition:
*errors.errorString
*safedetails.withSafeDetails: safe ×
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/safedetails/*safedetails.withSafeDetails (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
safefmt outerthree outerfour
opaque

require (?s)outerthree.*outerfour.*innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "safe outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrSafeFormat",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrSafeFormat", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "safe outerthree\nouterfour",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/fmttests/*fmttests.werrSafeFormat",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/fmttests/*fmttests.werrSafeFormat", Extension:""},
        ReportablePayload: nil,
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
safe outerthree
outerfour: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
safe outerthree: innerone
(1) safe outerthree
  | outerfour
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrSafeFormat
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹safe outerthree›
‹outerfour›: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹safe outerthree›: ‹innerone›
(1) ‹safe outerthree›
  | ‹outerfour›
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrSafeFormat
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×: ×
(1) ×
  | ×
  |
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/fmttests/*fmttests.werrSafeFormat
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
*fmttests.werrSafeFormat
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/fmttests/*fmttests.werrSafeFormat (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×: ×"
(NO STACKTRACE)

run
goerr innerone innertwo
secondary outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&secondary.withSecondaryError{
    cause:          &errors.errorString{s:"innerone\ninnertwo"},
    secondaryError: &errbase.opaqueWrapper{
        cause:   &errutil.leafError{msg:"outerthree\nouterfour"},
        prefix:  "",
        details: errorspb.EncodedErrorDetails{
            OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
            ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
            ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
            FullDetails:       (*types.Any)(nil),
        },
    },
}
=====
===== non-redactable formats
=====
== %#v
&secondary.withSecondaryError{
    cause:          &errors.errorString{s:"innerone\ninnertwo"},
    secondaryError: &errbase.opaqueWrapper{
        cause:   &errutil.leafError{msg:"outerthree\nouterfour"},
        prefix:  "",
        details: errorspb.EncodedErrorDetails{
            OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
            ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
            ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
            FullDetails:       (*types.Any)(nil),
        },
    },
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1) secondary error attachment
  | outerthree
  | (1)
  |   | (opaque error wrapper)
  |   | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  |   | reportable 0:
  |   |
  |   | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirective.func1
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirective
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runTestInternal
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.RunTest
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.Walk
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.Walk.func1
  |   | <tab><path>:<lineno>
  |   | testing.tRunner
  |   | <tab><path>:<lineno>
  |   | runtime.goexit
  |   | <tab><path>:<lineno>
  | Wraps: (2) outerthree
  |   | outerfour
  | Error types: (1) *errbase.opaqueWrapper (2) *errutil.leafError
Wraps: (2) innerone
  | innertwo
Error types: (1) *secondary.withSecondaryError (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1) secondary error attachment
  | outerthree
  | (1)
  |   | (opaque error wrapper)
  |   | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  |   | reportable 0:
  |   |
  |   | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirective.func1
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirective
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runTestInternal
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.RunTest
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.Walk
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.Walk.func1
  |   | <tab><path>:<lineno>
  |   | testing.tRunner
  |   | <tab><path>:<lineno>
  |   | runtime.goexit
  |   | <tab><path>:<lineno>
  | Wraps: (2) outerthree
  |   | outerfour
  | Error types: (1) *errbase.opaqueWrapper (2) *errutil.leafError
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *secondary.withSecondaryError (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×
(1) secondary error attachment
  | outerthree
  | (1)
  |   | (opaque error wrapper)
  |   | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  |   | reportable 0:
  |   |
  |   | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirective.func1
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirective
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runTestInternal
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.RunTest
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.Walk
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.Walk.func1
  |   | <tab><path>:<lineno>
  |   | testing.tRunner
  |   | <tab><path>:<lineno>
  |   | runtime.goexit
  |   | <tab><path>:<lineno>
  | Wraps: (2) outerthree
  |   | outerfour
  | Error types: (1) *errbase.opaqueWrapper (2) *errutil.leafError
Wraps: (2) ××
×
Error types: (1) *secondary.withSecondaryError (2) *errors.errorString
-- report composition:
*errors.errorString
*secondary.withSecondaryError: details for github.com/cockroachdb/errors/withstack/*withstack.withStack:::
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/secondary/*secondary.withSecondaryError (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
stack outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
        ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause:   &errors.errorString{s:"innerone\ninnertwo"},
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
        ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
<path>:<lineno>: ×
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errors.errorString
-- report composition:
*errors.errorString
<path>:<lineno>: *withstack.withStack (top exception)
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/withstack/*withstack.withStack (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "<path>:<lineno> ...funcNN...
Title: "*errors.errorString: ×\nvia *withstack.withStack"
<path>:<lineno>:
   (runtime) goexit()
<path>:<lineno>:
   (testing) tRunner()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven.Walk)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) Walk()
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.TestDatadriven)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) RunTest()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runTestInternal()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runDirectiveOrSubTest()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runDirective()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven.runDirective)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.TestDatadriven.func2) 1()
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.glob.)...funcNN...

run
goerr innerone innertwo
tags outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&contexttags.withContext{
    cause: &errors.errorString{s:"innerone\ninnertwo"},
    tags:  &logtags.Buffer{
        tags: {
            {
                key:   "k",
                value: "123",
            },
            {
                key:   "safe",
                value: "456",
            },
        },
        prealloc: {
            {
                key:   "k",
                value: "123",
            },
            {
                key:   "safe",
                value: "456",
            },
            {},
            {},
        },
    },
    redactedTags: {"k×", "safe=456"},
}
=====
===== non-redactable formats
=====
== %#v
&contexttags.withContext{
    cause: &errors.errorString{s:"innerone\ninnertwo"},
    tags:  &logtags.Buffer{
        tags: {
            {
                key:   "k",
                value: "123",
            },
            {
                key:   "safe",
                value: "456",
            },
        },
        prealloc: {
            {
                key:   "k",
                value: "123",
            },
            {
                key:   "safe",
                value: "456",
            },
            {},
            {},
        },
    },
    redactedTags: {"k×", "safe=456"},
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1) tags: [k123,safe=456]
Wraps: (2) innerone
  | innertwo
Error types: (1) *contexttags.withContext (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1) tags: [k‹123›,safe=‹456›]
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *contexttags.withContext (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×
(1) tags: [k×,safe=×]
Wraps: (2) ××
×
Error types: (1) *contexttags.withContext (2) *errors.errorString
-- report composition:
*errors.errorString
*contexttags.withContext: k×
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/contexttags/*contexttags.withContext (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
telemetry outerthree outerfour
opaque

require (?s)innerone.*innertwo
----
&telemetrykeys.withTelemetry{
    cause: &errors.errorString{s:"innerone\ninnertwo"},
    keys:  {"somekey", "outerthree\nouterfour"},
}
=====
===== non-redactable formats
=====
== %#v
&telemetrykeys.withTelemetry{
    cause: &errors.errorString{s:"innerone\ninnertwo"},
    keys:  {"somekey", "outerthree\nouterfour"},
}
== Error()
innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
innerone
(1) keys: [somekey outerthree
  | outerfour]
Wraps: (2) innerone
  | innertwo
Error types: (1) *telemetrykeys.withTelemetry (2) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
‹innerone›
(1) keys: [somekey outerthree
  | outerfour]
Wraps: (2) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *telemetrykeys.withTelemetry (2) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
×
(1) keys: [somekey outerthree
  | outerfour]
Wraps: (2) ××
×
Error types: (1) *telemetrykeys.withTelemetry (2) *errors.errorString
-- report composition:
*errors.errorString
*telemetrykeys.withTelemetry: somekey
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/telemetrykeys/*telemetrykeys.withTelemetry (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "*errors.errorString"
Title: "×"
(NO STACKTRACE)

run
goerr innerone innertwo
wrapf outerthree outerfour
opaque

require (?s)outerthree.*outerfour.*innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause: &errutil.withPrefix{
        cause:  &errors.errorString{s:"innerone\ninnertwo"},
        prefix: "new-stylew ‹outerthree›\n‹outerfour›",
    },
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
        ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause: &errutil.withPrefix{
        cause:  &errors.errorString{s:"innerone\ninnertwo"},
        prefix: "new-stylew ‹outerthree›\n‹outerfour›",
    },
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
        ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
new-stylew outerthree
outerfour: innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
new-stylew outerthree: innerone
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) new-stylew outerthree
  | outerfour
Wraps: (3) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *errutil.withPrefix (3) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
new-stylew ‹outerthree›
‹outerfour›: ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
new-stylew ‹outerthree›: ‹innerone›
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) new-stylew ‹outerthree›
  | ‹outerfour›
Wraps: (3) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *errutil.withPrefix (3) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
<path>:<lineno>: new-stylew ×: ×
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) new-stylew ×
  | ×
Wraps: (3) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *errutil.withPrefix (3) *errors.errorString
-- report composition:
*errors.errorString
*errutil.withPrefix: new-stylew ×
<path>:<lineno>: *withstack.withStack (top exception)
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/errutil/*errutil.withPrefix (*::)
github.com/cockroachdb/errors/withstack/*withstack.withStack (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "<path>:<lineno> ...funcNN...
Title: "*errors.errorString: new-stylew ×: ×\nvia *withstack.withStack"
<path>:<lineno>:
   (runtime) goexit()
<path>:<lineno>:
   (testing) tRunner()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven.Walk)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) Walk()
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.TestDatadriven)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) RunTest()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runTestInternal()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runDirectiveOrSubTest()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runDirective()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven.runDirective)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.TestDatadriven.func2) 1()
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.glob.)...funcNN...

run
goerr innerone innertwo
wrapf-attached outerthree outerfour
opaque

require (?s)outerthree.*outerfour.*innerone.*innertwo
----
&errbase.opaqueWrapper{
    cause: &secondary.withSecondaryError{
        cause: &errutil.withPrefix{
            cause:  &errors.errorString{s:"innerone\ninnertwo"},
            prefix: "new-style ‹outerthree›\n‹outerfour› (payload)",
        },
        secondaryError: &errbase.opaqueWrapper{
            cause:   &errutil.leafError{msg:"payload"},
            prefix:  "",
            details: errorspb.EncodedErrorDetails{
                OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
                ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
                ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
                FullDetails:       (*types.Any)(nil),
            },
        },
    },
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
        ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
        FullDetails:       (*types.Any)(nil),
    },
}
=====
===== non-redactable formats
=====
== %#v
&errbase.opaqueWrapper{
    cause: &secondary.withSecondaryError{
        cause: &errutil.withPrefix{
            cause:  &errors.errorString{s:"innerone\ninnertwo"},
            prefix: "new-style ‹outerthree›\n‹outerfour› (payload)",
        },
        secondaryError: &errbase.opaqueWrapper{
            cause:   &errutil.leafError{msg:"payload"},
            prefix:  "",
            details: errorspb.EncodedErrorDetails{
                OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
                ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
                ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
                FullDetails:       (*types.Any)(nil),
            },
        },
    },
    prefix:  "",
    details: errorspb.EncodedErrorDetails{
        OriginalTypeName:  "github.com/cockroachdb/errors/withstack/*withstack.withStack",
        ErrorTypeMark:     errorspb.ErrorTypeMark{FamilyName:"github.com/cockroachdb/errors/withstack/*withstack.withStack", Extension:""},
        ReportablePayload: {"\ngithub.com/cockroachdb/errors/fmttests.glob...funcNN...\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective.func1\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirective\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runDirectiveOrSubTest\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.runTestInternal\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.RunTest\n\<path>:<lineno>\ngithub.com/cockroachdb/errors/fmttests.TestDatadriven.func2\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk\n\<path>:<lineno>\ngithub.com/cockroachdb/datadriven.Walk.func1\n\<path>:<lineno>\ntesting.tRunner\n\<path>:<lineno>\nruntime.goexit\n\<path>:<lineno>"},
        FullDetails:       (*types.Any)(nil),
    },
}
== Error()
new-style outerthree
outerfour (payload): innerone
innertwo
== %v = Error(), good
== %s = Error(), good
== %q = quoted Error(), good
== %x = hex Error(), good
== %X = HEX Error(), good
== %+v
new-style outerthree: innerone
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) secondary error attachment
  | payload
  | (1)
  |   | (opaque error wrapper)
  |   | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  |   | reportable 0:
  |   |
  |   | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirective.func1
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirective
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runTestInternal
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.RunTest
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.Walk
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.Walk.func1
  |   | <tab><path>:<lineno>
  |   | testing.tRunner
  |   | <tab><path>:<lineno>
  |   | runtime.goexit
  |   | <tab><path>:<lineno>
  | Wraps: (2) payload
  | Error types: (1) *errbase.opaqueWrapper (2) *errutil.leafError
Wraps: (3) new-style outerthree
  | outerfour (payload)
Wraps: (4) innerone
  | innertwo
Error types: (1) *errbase.opaqueWrapper (2) *secondary.withSecondaryError (3) *errutil.withPrefix (4) *errors.errorString
== %#v via Formattable() = %#v, good
== %v via Formattable() = Error(), good
== %s via Formattable() = %v via Formattable(), good
== %q via Formattable() = quoted %v via Formattable(), good
== %+v via Formattable() == %+v, good
=====
===== redactable formats
=====
== printed via redact Print(), ok - congruent with %v
new-style ‹outerthree›
‹outerfour› (payload): ‹innerone›
‹innertwo›
== printed via redact Printf() %v = Print(), good
== printed via redact Printf() %s = Print(), good
== printed via redact Printf() %q, refused - good
== printed via redact Printf() %x, refused - good
== printed via redact Printf() %X, refused - good
== printed via redact Printf() %+v, ok - congruent with %+v
new-style ‹outerthree›: ‹innerone›
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) secondary error attachment
  | payload
  | (1)
  |   | (opaque error wrapper)
  |   | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  |   | reportable 0:
  |   |
  |   | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirective.func1
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirective
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runTestInternal
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.RunTest
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.Walk
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.Walk.func1
  |   | <tab><path>:<lineno>
  |   | testing.tRunner
  |   | <tab><path>:<lineno>
  |   | runtime.goexit
  |   | <tab><path>:<lineno>
  | Wraps: (2) payload
  | Error types: (1) *errbase.opaqueWrapper (2) *errutil.leafError
Wraps: (3) new-style ‹outerthree›
  | ‹outerfour› (payload)
Wraps: (4) ‹innerone›‹›
‹  | innertwo›
Error types: (1) *errbase.opaqueWrapper (2) *secondary.withSecondaryError (3) *errutil.withPrefix (4) *errors.errorString
=====
===== Sentry reporting
=====
== Message payload
<path>:<lineno>: new-style ×: ×
(1)
  | (opaque error wrapper)
  | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  | reportable 0:
  |
  | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective.func1
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirective
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.runTestInternal
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.RunTest
  | <tab><path>:<lineno>
  | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk
  | <tab><path>:<lineno>
  | github.com/cockroachdb/datadriven.Walk.func1
  | <tab><path>:<lineno>
  | testing.tRunner
  | <tab><path>:<lineno>
  | runtime.goexit
  | <tab><path>:<lineno>
Wraps: (2) secondary error attachment
  | payload
  | (1)
  |   | (opaque error wrapper)
  |   | type name: github.com/cockroachdb/errors/withstack/*withstack.withStack
  |   | reportable 0:
  |   |
  |   | github.com/cockroachdb/errors/fmttests.glob...funcNN...
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2.1
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirective.func1
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirective
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runDirectiveOrSubTest
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.runTestInternal
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.RunTest
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/errors/fmttests.TestDatadriven.func2
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.Walk
  |   | <tab><path>:<lineno>
  |   | github.com/cockroachdb/datadriven.Walk.func1
  |   | <tab><path>:<lineno>
  |   | testing.tRunner
  |   | <tab><path>:<lineno>
  |   | runtime.goexit
  |   | <tab><path>:<lineno>
  | Wraps: (2) payload
  | Error types: (1) *errbase.opaqueWrapper (2) *errutil.leafError
Wraps: (3) new-style ×
  | × (payload)
Wraps: (4) ××
×
Error types: (1) *errbase.opaqueWrapper (2) *secondary.withSecondaryError (3) *errutil.withPrefix (4) *errors.errorString
-- report composition:
*errors.errorString
*errutil.withPrefix: new-style ×
*secondary.withSecondaryError: details for github.com/cockroachdb/errors/withstack/*withstack.withStack:::
<path>:<lineno>: *withstack.withStack (top exception)
== Extra "error types"
errors/*errors.errorString (*::)
github.com/cockroachdb/errors/errutil/*errutil.withPrefix (*::)
github.com/cockroachdb/errors/secondary/*secondary.withSecondaryError (*::)
github.com/cockroachdb/errors/withstack/*withstack.withStack (*::)
== Exception 1 (Module: "error domain: <none>")
Type: "<path>:<lineno> ...funcNN...
Title: "*errors.errorString: new-style ×: ×\nvia *withstack.withStack"
<path>:<lineno>:
   (runtime) goexit()
<path>:<lineno>:
   (testing) tRunner()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven.Walk)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) Walk()
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.TestDatadriven)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) RunTest()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runTestInternal()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runDirectiveOrSubTest()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven) runDirective()
<path>:<lineno>:
   (github.com/cockroachdb/datadriven.runDirective)...funcNN...
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.TestDatadriven.func2) 1()
<path>:<lineno>:
   (github.com/cockroachdb/errors/fmttests.glob.)...funcNN...
