diff options
| author | Rose Hogenson <rosehogenson@posteo.net> | 2025-10-30 19:18:15 -0700 |
|---|---|---|
| committer | Rose Hogenson <rosehogenson@posteo.net> | 2025-10-30 19:18:15 -0700 |
| commit | 4ff064043759c3b25cca2555cc50efa48c855f8a (patch) | |
| tree | 428cfce709b0156ba587a43e8afc6249109ff9b2 | |
| parent | e4f0185460ab348d596877606b2d4a99b4c27ffb (diff) | |
| download | ccl-4ff064043759c3b25cca2555cc50efa48c855f8a.tar.zst | |
Small cleanup
| -rw-r--r-- | ccl.go | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -423,7 +423,7 @@ func (p *parser) unescape(rawStr []byte) ([]byte, error) { } 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+2], err) + return nil, fmt.Errorf("invalid hex escape %q: %s", rawStr[i-2:i+nBytes], err) } i += nBytes - 1 b = utf8.AppendRune(nil, rune(n)) @@ -433,7 +433,7 @@ func (p *parser) unescape(rawStr []byte) ([]byte, error) { } 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:i+3], err) + return nil, fmt.Errorf("invalid octal escape %q: %s", rawStr[i-1:i+3], err) } i += 2 b = []byte{byte(n)} @@ -488,6 +488,9 @@ func (p *parser) parsePossiblyRepeatedVal(fieldVal reflect.Value, parsedFields m fieldVal.Set(reflect.Append(fieldVal, reflect.Zero(fieldVal.Type().Elem()))) return p.parseVal(fieldVal.Index(fieldVal.Len()-1), tok, field) } + if parsedFields[string(field)] { + return p.error("duplicate field %q but type is not repeated", field) + } parsedFields[string(field)] = true return p.parseVal(fieldVal, tok, field) } @@ -541,7 +544,7 @@ func (p *parser) parseVal(fieldVal reflect.Value, tok, field []byte) error { fieldVal := setPtr(fieldVal) switch fieldVal.Kind() { case reflect.Float32, reflect.Float64: - fieldVal.SetFloat(float64(n)) + fieldVal.SetFloat(n) default: return p.error("field %q should have type float64 or float32", field) } @@ -601,9 +604,6 @@ func (p *parser) parseFieldVal(out reflect.Value, parsedFields map[string]bool, if b := field[0]; !(b == '_' || 'a' <= b && b <= 'z' || 'A' <= b && b <= 'Z') { return p.error("expecting field") } - if parsedFields[string(field)] { - return p.error("duplicate field %q but type is not repeated", field) - } fieldIdx, ok := p.fieldMap[structField{out.Type(), string(field)}] if !ok { return fmt.Errorf("no field named %q", field) |
