Go 1.27 made stdversion checks run by default when running go test as well
as an extra check for errors.Is compatibility. This checks for non-pointer
types which appears to break compatibility with existing code, you can see
this here
https://go.dev/play/p/2nXq9OWS-rf?v=goprev

Under go 1.26 the errors.Is works as expected but under 1.27 you get a
compile failure.

If I remove the & so it operates on HTTPError
<https://go.dev/play/p/wLq1L7GMFZn> and not *HTTPError as I believe is
suggested by the vet check two of the tests fail as HTTPError is not
comparable.

I even tried with a custom Is function defined, go vet check still fails.

Am I missing something, or is this a significant compatibility breakage
introduced by 1.27?

With & under 1.27 <https://go.dev/play/p/2nXq9OWS-rf>

# [play]
./prog_test.go:27:44: %w wants operand of error type HTTPError, not
pointer type *HTTPError (defeats errors.Is)
Go build failed.


Without & on 1.27 <https://go.dev/play/p/wLq1L7GMFZn>

=== RUN   TestErrorsIs
=== RUN   TestErrorsIs/wrapped-eof
=== RUN   TestErrorsIs/wrapped-sentinel
    prog_test.go:37: wrapped: &fmt.wrapError{msg:"wrapped eof error:
EOF", err:main.HTTPError{error:(*errors.errorString)(0x86ae60),
StatusCode:404, Details:[]interface {}{"some extra info"}}} is not
sentinel
=== RUN   TestErrorsIs/direct-sentinel
    prog_test.go:42: sentinel: &fmt.wrapError{msg:"wrapped eof error:
EOF", err:main.HTTPError{error:(*errors.errorString)(0x86ae60),
StatusCode:404, Details:[]interface {}{"some extra info"}}} is not
sentinel
--- FAIL: TestErrorsIs (0.00s)
    --- PASS: TestErrorsIs/wrapped-eof (0.00s)
    --- FAIL: TestErrorsIs/wrapped-sentinel (0.00s)
    --- FAIL: TestErrorsIs/direct-sentinel (0.00s)
FAIL
Program exited.


With & under 1.26 <https://go.dev/play/p/2nXq9OWS-rf?v=goprev>

=== RUN   TestErrorsIs
=== RUN   TestErrorsIs/wrapped-eof
=== RUN   TestErrorsIs/wrapped-sentinel
=== RUN   TestErrorsIs/direct-sentinel
--- PASS: TestErrorsIs (0.00s)
    --- PASS: TestErrorsIs/wrapped-eof (0.00s)
    --- PASS: TestErrorsIs/wrapped-sentinel (0.00s)
    --- PASS: TestErrorsIs/direct-sentinel (0.00s)
PASS

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/golang-nuts/CAA38peYQvR%2BCywZRskcGcRkVpB%3DGRbmx%3DvYf9LooQSiPyhBtgQ%40mail.gmail.com.

Reply via email to