From da798b651e8efc766cf66a39ccef906681f0b17a Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Sat, 22 Nov 2025 08:26:09 -0800 Subject: Improve error handling --- ccl.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'ccl.go') diff --git a/ccl.go b/ccl.go index 360bde4..6753dbc 100644 --- a/ccl.go +++ b/ccl.go @@ -399,16 +399,16 @@ func (p *parser) unescape(rawStr []byte) ([]byte, error) { if i < len(rawStr) && rawStr[i] == '\n' { b = nil } else { - return nil, fmt.Errorf("invalid escape sequence %q", rawStr[i-2:min(i+1, len(rawStr))]) + return nil, p.error("invalid escape sequence %q", rawStr[i-2:min(i+1, len(rawStr))]) } case 'x': i++ if i+2 > len(rawStr) { - return nil, fmt.Errorf("invalid hex escape %q", rawStr[i-2:min(i+2, len(rawStr))]) + return nil, p.error("invalid hex escape %q", rawStr[i-2:min(i+2, len(rawStr))]) } n, err := strconv.ParseUint(string(rawStr[i:i+2]), 16, 8) if err != nil { - return nil, fmt.Errorf("invalid hex escape %q: %s", rawStr[i-2:i+2], err) + return nil, p.error("invalid hex escape %q: %s", rawStr[i-2:i+2], err) } i++ b = []byte{byte(n)} @@ -419,21 +419,21 @@ func (p *parser) unescape(rawStr []byte) ([]byte, error) { } i++ if i+nBytes > len(rawStr) { - return nil, fmt.Errorf("invalid unicode escape %q", rawStr[i-2:min(i+nBytes, len(rawStr))]) + return nil, p.error("invalid unicode escape %q", rawStr[i-2:min(i+nBytes, len(rawStr))]) } n, err := strconv.ParseUint(string(rawStr[i:i+nBytes]), 16, 31) if err != nil { - return nil, fmt.Errorf("invalid hex escape %q: %s", rawStr[i-2:i+nBytes], err) + return nil, p.error("invalid unicode escape %q: %s", rawStr[i-2:i+nBytes], err) } i += nBytes - 1 b = utf8.AppendRune(nil, rune(n)) default: if i+3 > len(rawStr) { - return nil, fmt.Errorf("invalid string escape %q", rawStr[i-1:i+1]) + return nil, p.error("invalid string escape %q", rawStr[i-1:i+1]) } n, err := strconv.ParseUint(string(rawStr[i:i+3]), 8, 8) if err != nil { - return nil, fmt.Errorf("invalid octal escape %q: %s", rawStr[i-1:i+3], err) + return nil, p.error("invalid octal escape %q: %s", rawStr[i-1:i+3], err) } i += 2 b = []byte{byte(n)} @@ -522,7 +522,7 @@ func (p *parser) parseVal(fieldVal reflect.Value, tok, field []byte) error { case fieldVal.Type() == reflect.TypeFor[[]byte](): b, err := base64.StdEncoding.DecodeString(s) if err != nil { - return fmt.Errorf("field %q: bad base64", field) + return p.error("field %q: bad base64", field) } fieldVal.Set(reflect.ValueOf(b)) default: @@ -606,7 +606,7 @@ func (p *parser) parseFieldVal(out reflect.Value, parsedFields map[string]bool, } fieldIdx, ok := p.fieldMap[structField{out.Type(), string(field)}] if !ok { - return fmt.Errorf("no field named %q", field) + return p.error("no field named %q", field) } fieldVal := out.Field(fieldIdx) tok, err := p.next() -- cgit v1.3.1