123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- package toml
- import (
- "errors"
- "fmt"
- "reflect"
- "strconv"
- )
- var (
- errArrayMultiType = errors.New("array can't contain multiple types")
- )
- // LineError is returned by Unmarshal, UnmarshalTable and Parse
- // if the error is local to a line.
- type LineError struct {
- Line int
- StructField string
- Err error
- }
- func (err *LineError) Error() string {
- field := ""
- if err.StructField != "" {
- field = "(" + err.StructField + ") "
- }
- return fmt.Sprintf("line %d: %s%v", err.Line, field, err.Err)
- }
- func lineError(line int, err error) error {
- if err == nil {
- return nil
- }
- if _, ok := err.(*LineError); ok {
- return err
- }
- return &LineError{Line: line, Err: err}
- }
- func lineErrorField(line int, field string, err error) error {
- if lerr, ok := err.(*LineError); ok {
- return lerr
- } else if err != nil {
- err = &LineError{Line: line, StructField: field, Err: err}
- }
- return err
- }
- type overflowError struct {
- kind reflect.Kind
- v string
- }
- func (err *overflowError) Error() string {
- return fmt.Sprintf("value %s is out of range for %v", err.v, err.kind)
- }
- func convertNumError(kind reflect.Kind, err error) error {
- if numerr, ok := err.(*strconv.NumError); ok && numerr.Err == strconv.ErrRange {
- return &overflowError{kind, numerr.Num}
- }
- return err
- }
- type invalidUnmarshalError struct {
- typ reflect.Type
- }
- func (err *invalidUnmarshalError) Error() string {
- if err.typ == nil {
- return "toml: Unmarshal(nil)"
- }
- if err.typ.Kind() != reflect.Ptr {
- return "toml: Unmarshal(non-pointer " + err.typ.String() + ")"
- }
- return "toml: Unmarshal(nil " + err.typ.String() + ")"
- }
- type unmarshalTypeError struct {
- what string
- want string
- typ reflect.Type
- }
- func (err *unmarshalTypeError) Error() string {
- msg := fmt.Sprintf("cannot unmarshal TOML %s into %s", err.what, err.typ)
- if err.want != "" {
- msg += " (need " + err.want + ")"
- }
- return msg
- }
- type marshalNilError struct {
- typ reflect.Type
- }
- func (err *marshalNilError) Error() string {
- return fmt.Sprintf("toml: cannot marshal nil %s", err.typ)
- }
- type marshalTableError struct {
- typ reflect.Type
- }
- func (err *marshalTableError) Error() string {
- return fmt.Sprintf("toml: cannot marshal %s as table, want struct or map type", err.typ)
- }
|