]> Cypherpunks repositories - gostls13.git/commit
all: add Unwrap and Is methods to various error types
authorDamien Neil <dneil@google.com>
Wed, 27 Mar 2019 15:40:12 +0000 (08:40 -0700)
committerDamien Neil <dneil@google.com>
Sat, 4 May 2019 16:14:12 +0000 (16:14 +0000)
commit170b8b4b12be50eeccbcdadb8523fb4fc670ca72
treef379b48b3e9fd304aef9140983b1a2d2ecbe60fa
parent59ea685ce96a696281e56badd80d2e5dd618b0b0
all: add Unwrap and Is methods to various error types

Add Unwrap methods to types which wrap an underlying error:

  "encodinc/csv".ParseError
  "encoding/json".MarshalerError
  "net/http".transportReadFromServerError
  "net".OpError
  "net".DNSConfigError
  "net/url".Error
  "os/exec".Error
  "signal/internal/pty".PtyError
  "text/template".ExecError

Add os.ErrTemporary. A case could be made for putting this error
value in package net, since no exported error types in package os
include a Temporary method. However, syscall errors returned from
the os package do include this method.

Add Is methods to error types with a Timeout or Temporary method,
making errors.Is(err, os.Err{Timeout,Temporary}) equivalent to
testing the corresponding method:

  "context".DeadlineExceeded
  "internal/poll".TimeoutError
  "net".adrinfoErrno
  "net".OpError
  "net".DNSError
  "net/http".httpError
  "net/http".tlsHandshakeTimeoutError
  "net/pipe".timeoutError
  "net/url".Error

Updates #30322
Updates #29934

Change-Id: I409fb20c072ea39116ebfb8c7534d493483870dc
Reviewed-on: https://go-review.googlesource.com/c/go/+/170037
Run-TryBot: Damien Neil <dneil@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
18 files changed:
src/context/context.go
src/context/context_test.go
src/encoding/csv/reader.go
src/encoding/json/encode.go
src/go/build/deps_test.go
src/internal/oserror/errors.go
src/internal/oserror/errors_test.go [new file with mode: 0644]
src/internal/poll/fd.go
src/net/cgo_unix.go
src/net/http/transport.go
src/net/net.go
src/net/pipe.go
src/net/timeout_test.go
src/net/url/url.go
src/os/error.go
src/os/exec/exec.go
src/os/signal/internal/pty/pty.go
src/text/template/exec.go