code.dwrz.net

Go monorepo.
Log | Files | Refs

errors.go (2263B)


      1 package document
      2 
      3 import (
      4 	"fmt"
      5 	"reflect"
      6 )
      7 
      8 // UnmarshalTypeError is an error type representing an error
      9 // unmarshaling a Smithy document to a Go value type. This is different
     10 // from UnmarshalError in that it does not wrap an underlying error type.
     11 type UnmarshalTypeError struct {
     12 	Value string
     13 	Type  reflect.Type
     14 }
     15 
     16 // Error returns the string representation of the error.
     17 // Satisfying the error interface.
     18 func (e *UnmarshalTypeError) Error() string {
     19 	return fmt.Sprintf("unmarshal failed, cannot unmarshal %s into Go value type %s",
     20 		e.Value, e.Type.String())
     21 }
     22 
     23 // An InvalidUnmarshalError is an error type representing an invalid type
     24 // encountered while unmarshaling a Smithy document to a Go value type.
     25 type InvalidUnmarshalError struct {
     26 	Type reflect.Type
     27 }
     28 
     29 // Error returns the string representation of the error.
     30 // Satisfying the error interface.
     31 func (e *InvalidUnmarshalError) Error() string {
     32 	var msg string
     33 	if e.Type == nil {
     34 		msg = "cannot unmarshal to nil value"
     35 	} else if e.Type.Kind() != reflect.Ptr {
     36 		msg = fmt.Sprintf("cannot unmarshal to non-pointer value, got %s", e.Type.String())
     37 	} else {
     38 		msg = fmt.Sprintf("cannot unmarshal to nil value, %s", e.Type.String())
     39 	}
     40 
     41 	return fmt.Sprintf("unmarshal failed, %s", msg)
     42 }
     43 
     44 // An UnmarshalError wraps an error that occurred while unmarshaling a
     45 // Smithy document into a Go type. This is different from
     46 // UnmarshalTypeError in that it wraps the underlying error that occurred.
     47 type UnmarshalError struct {
     48 	Err   error
     49 	Value string
     50 	Type  reflect.Type
     51 }
     52 
     53 // Unwrap returns the underlying unmarshaling error
     54 func (e *UnmarshalError) Unwrap() error {
     55 	return e.Err
     56 }
     57 
     58 // Error returns the string representation of the error.
     59 // Satisfying the error interface.
     60 func (e *UnmarshalError) Error() string {
     61 	return fmt.Sprintf("unmarshal failed, cannot unmarshal %q into %s, %v",
     62 		e.Value, e.Type.String(), e.Err)
     63 }
     64 
     65 // An InvalidMarshalError is an error type representing an error
     66 // occurring when marshaling a Go value type.
     67 type InvalidMarshalError struct {
     68 	Message string
     69 }
     70 
     71 // Error returns the string representation of the error.
     72 // Satisfying the error interface.
     73 func (e *InvalidMarshalError) Error() string {
     74 	return fmt.Sprintf("marshal failed, %s", e.Message)
     75 }