diff options
author | Felix Lange <fjl@twurst.com> | 2017-06-23 16:50:49 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2017-06-27 19:15:12 +0800 |
commit | 4a741df757cf6b1d1b4c0e8c875c34b650f46167 (patch) | |
tree | 057d995a3847f9f983a4dcdf41cf3bc9fb9b82a2 /common/hexutil/hexutil.go | |
parent | b664bedcf21f30b54af542e0b4ba4e24c01968fd (diff) | |
download | go-tangerine-4a741df757cf6b1d1b4c0e8c875c34b650f46167.tar go-tangerine-4a741df757cf6b1d1b4c0e8c875c34b650f46167.tar.gz go-tangerine-4a741df757cf6b1d1b4c0e8c875c34b650f46167.tar.bz2 go-tangerine-4a741df757cf6b1d1b4c0e8c875c34b650f46167.tar.lz go-tangerine-4a741df757cf6b1d1b4c0e8c875c34b650f46167.tar.xz go-tangerine-4a741df757cf6b1d1b4c0e8c875c34b650f46167.tar.zst go-tangerine-4a741df757cf6b1d1b4c0e8c875c34b650f46167.zip |
common/hexutil: wrap errors in json.UnmarshalTypeError
This adds type and struct field context to error messages.
Instead of "hex string of odd length" users will now see "json: cannot
unmarshal hex string of odd length into Go struct field SendTxArgs.from
of type common.Address".
Diffstat (limited to 'common/hexutil/hexutil.go')
-rw-r--r-- | common/hexutil/hexutil.go | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/common/hexutil/hexutil.go b/common/hexutil/hexutil.go index 6b128ae36..582a67c22 100644 --- a/common/hexutil/hexutil.go +++ b/common/hexutil/hexutil.go @@ -32,7 +32,6 @@ package hexutil import ( "encoding/hex" - "errors" "fmt" "math/big" "strconv" @@ -41,17 +40,23 @@ import ( const uintBits = 32 << (uint64(^uint(0)) >> 63) var ( - ErrEmptyString = errors.New("empty hex string") - ErrMissingPrefix = errors.New("missing 0x prefix for hex data") - ErrSyntax = errors.New("invalid hex") - ErrEmptyNumber = errors.New("hex number has no digits after 0x") - ErrLeadingZero = errors.New("hex number has leading zero digits after 0x") - ErrOddLength = errors.New("hex string has odd length") - ErrUint64Range = errors.New("hex number does not fit into 64 bits") - ErrUintRange = fmt.Errorf("hex number does not fit into %d bits", uintBits) - ErrBig256Range = errors.New("hex number does not fit into 256 bits") + ErrEmptyString = &decError{"empty hex string"} + ErrSyntax = &decError{"invalid hex string"} + ErrMissingPrefix = &decError{"hex string without 0x prefix"} + ErrOddLength = &decError{"hex string of odd length"} + ErrEmptyNumber = &decError{"hex string \"0x\""} + ErrLeadingZero = &decError{"hex number with leading zero digits"} + ErrUint64Range = &decError{"hex number > 64 bits"} + ErrUintRange = &decError{fmt.Sprintf("hex number > %d bits", uintBits)} + ErrBig256Range = &decError{"hex number > 256 bits"} ) +type decError struct{ msg string } + +func (err decError) Error() string { + return string(err.msg) +} + // Decode decodes a hex string with 0x prefix. func Decode(input string) ([]byte, error) { if len(input) == 0 { |