Skip to content

Commit 4e0cc47

Browse files
committed
cue: tweak cue.Value.Decode with Go std changes
reflect.Ptr was replaced by reflect.Pointer some time ago. Overflow* methods are now delared on types, removing the need for calls to reflect.Zero to create a throwaway value. While here, take gopls's suggestion to use a range-over-int. Signed-off-by: Daniel Martí <[email protected]> Change-Id: I86288aaf9abccd0a82be54dc28b1cc67549ce7d9 Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1209028 TryBot-Result: CUEcueckoo <[email protected]> Reviewed-by: Roger Peppe <[email protected]>
1 parent 3ed6d8d commit 4e0cc47

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

Diff for: cue/decode.go

+11-11
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ func (d *decoder) decode(x reflect.Value, v Value, isPtr bool) {
102102
}
103103

104104
switch x.Kind() {
105-
case reflect.Ptr, reflect.Map, reflect.Slice, reflect.Interface:
105+
case reflect.Pointer, reflect.Map, reflect.Slice, reflect.Interface:
106106
// nullable types
107107
if v.IsNull() || !v.IsConcrete() {
108108
d.clear(x)
@@ -146,7 +146,7 @@ func (d *decoder) decode(x reflect.Value, v Value, isPtr bool) {
146146
}
147147

148148
switch kind {
149-
case reflect.Ptr:
149+
case reflect.Pointer:
150150
d.decode(x.Elem(), v, true)
151151

152152
case reflect.Bool:
@@ -368,7 +368,7 @@ func (d *decoder) convertMap(x reflect.Value, v Value) {
368368
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
369369
n, err := strconv.ParseInt(key, 10, 64)
370370
d.addErr(err)
371-
if reflect.Zero(kt).OverflowInt(n) {
371+
if kt.OverflowInt(n) {
372372
d.addErr(errors.Newf(v.Pos(), "key integer %d overflows %s", n, kt))
373373
break
374374
}
@@ -377,7 +377,7 @@ func (d *decoder) convertMap(x reflect.Value, v Value) {
377377
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
378378
n, err := strconv.ParseUint(key, 10, 64)
379379
d.addErr(err)
380-
if reflect.Zero(kt).OverflowUint(n) {
380+
if kt.OverflowUint(n) {
381381
d.addErr(errors.Newf(v.Pos(), "key integer %d overflows %s", n, kt))
382382
break
383383
}
@@ -433,7 +433,7 @@ func (d *decoder) convertStruct(x reflect.Value, v Value) {
433433
// Figure out field corresponding to key.
434434
subv := x
435435
for _, i := range f.index {
436-
if subv.Kind() == reflect.Ptr {
436+
if subv.Kind() == reflect.Pointer {
437437
if subv.IsNil() {
438438
// If a struct embeds a pointer to an unexported type,
439439
// it is not possible to set a newly allocated value
@@ -537,12 +537,12 @@ func typeFields(t reflect.Type) structFields {
537537
visited[f.typ] = true
538538

539539
// Scan f.typ for fields to include.
540-
for i := 0; i < f.typ.NumField(); i++ {
540+
for i := range f.typ.NumField() {
541541
sf := f.typ.Field(i)
542542
isUnexported := sf.PkgPath != ""
543543
if sf.Anonymous {
544544
t := sf.Type
545-
if t.Kind() == reflect.Ptr {
545+
if t.Kind() == reflect.Pointer {
546546
t = t.Elem()
547547
}
548548
if isUnexported && t.Kind() != reflect.Struct {
@@ -568,7 +568,7 @@ func typeFields(t reflect.Type) structFields {
568568
index[len(f.index)] = i
569569

570570
ft := sf.Type
571-
if ft.Name() == "" && ft.Kind() == reflect.Ptr {
571+
if ft.Name() == "" && ft.Kind() == reflect.Pointer {
572572
// Follow pointer.
573573
ft = ft.Elem()
574574
}
@@ -883,7 +883,7 @@ func indirect(v reflect.Value, decodingNull bool) (json.Unmarshaler, encoding.Te
883883
// If v is a named type and is addressable,
884884
// start with its address, so that if the type has pointer methods,
885885
// we find them.
886-
if v.Kind() != reflect.Ptr && v.Type().Name() != "" && v.CanAddr() {
886+
if v.Kind() != reflect.Pointer && v.Type().Name() != "" && v.CanAddr() {
887887
haveAddr = true
888888
v = v.Addr()
889889
}
@@ -892,14 +892,14 @@ func indirect(v reflect.Value, decodingNull bool) (json.Unmarshaler, encoding.Te
892892
// usefully addressable.
893893
if v.Kind() == reflect.Interface && !v.IsNil() {
894894
e := v.Elem()
895-
if e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) {
895+
if e.Kind() == reflect.Pointer && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Pointer) {
896896
haveAddr = false
897897
v = e
898898
continue
899899
}
900900
}
901901

902-
if v.Kind() != reflect.Ptr {
902+
if v.Kind() != reflect.Pointer {
903903
break
904904
}
905905

0 commit comments

Comments
 (0)