Skip to content

Commit 4251120

Browse files
cuonglmpull[bot]
authored andcommitted
all: use reflect.{Pointer,PointerTo}
Updates #47651 Updates #48665 Change-Id: I69a87b45a5cad7a07fbd855040cd9935cf874554 Reviewed-on: https://go-review.googlesource.com/c/go/+/358454 Trust: Cuong Manh Le <[email protected]> Run-TryBot: Cuong Manh Le <[email protected]> TryBot-Result: Go Bot <[email protected]> Reviewed-by: Brad Fitzpatrick <[email protected]>
1 parent fcfe1ff commit 4251120

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+150
-147
lines changed

src/cmd/fix/cftype.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func typefix(f *ast.File, badType func(string) bool) bool {
6363
return
6464
}
6565
v := reflect.ValueOf(n)
66-
if v.Type().Kind() != reflect.Ptr {
66+
if v.Type().Kind() != reflect.Pointer {
6767
return
6868
}
6969
if v.IsNil() {

src/cmd/fix/typecheck.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ func typecheck1(cfg *TypeConfig, f interface{}, typeof map[interface{}]string, a
383383
if n == nil {
384384
return
385385
}
386-
if false && reflect.TypeOf(n).Kind() == reflect.Ptr { // debugging trace
386+
if false && reflect.TypeOf(n).Kind() == reflect.Pointer { // debugging trace
387387
defer func() {
388388
if t := typeof[n]; t != "" {
389389
pos := fset.Position(n.(ast.Node).Pos())

src/cmd/gofmt/rewrite.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ func subst(m map[string]reflect.Value, pattern reflect.Value, pos reflect.Value)
292292
}
293293
return v
294294

295-
case reflect.Ptr:
295+
case reflect.Pointer:
296296
v := reflect.New(p.Type()).Elem()
297297
if elem := p.Elem(); elem.IsValid() {
298298
v.Set(subst(m, elem, pos).Addr())

src/database/sql/convert.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error {
386386
}
387387

388388
dpv := reflect.ValueOf(dest)
389-
if dpv.Kind() != reflect.Ptr {
389+
if dpv.Kind() != reflect.Pointer {
390390
return errors.New("destination not a pointer")
391391
}
392392
if dpv.IsNil() {
@@ -419,7 +419,7 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error {
419419
// This also allows scanning into user defined types such as "type Int int64".
420420
// For symmetry, also check for string destination types.
421421
switch dv.Kind() {
422-
case reflect.Ptr:
422+
case reflect.Pointer:
423423
if src == nil {
424424
dv.Set(reflect.Zero(dv.Type()))
425425
return nil
@@ -551,7 +551,7 @@ var valuerReflectType = reflect.TypeOf((*driver.Valuer)(nil)).Elem()
551551
//
552552
// This function is mirrored in the database/sql/driver package.
553553
func callValuerValue(vr driver.Valuer) (v driver.Value, err error) {
554-
if rv := reflect.ValueOf(vr); rv.Kind() == reflect.Ptr &&
554+
if rv := reflect.ValueOf(vr); rv.Kind() == reflect.Pointer &&
555555
rv.IsNil() &&
556556
rv.Type().Elem().Implements(valuerReflectType) {
557557
return nil, nil

src/database/sql/driver/types.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ var valuerReflectType = reflect.TypeOf((*Valuer)(nil)).Elem()
225225
//
226226
// This function is mirrored in the database/sql package.
227227
func callValuerValue(vr Valuer) (v Value, err error) {
228-
if rv := reflect.ValueOf(vr); rv.Kind() == reflect.Ptr &&
228+
if rv := reflect.ValueOf(vr); rv.Kind() == reflect.Pointer &&
229229
rv.IsNil() &&
230230
rv.Type().Elem().Implements(valuerReflectType) {
231231
return nil, nil
@@ -256,7 +256,7 @@ func (defaultConverter) ConvertValue(v interface{}) (Value, error) {
256256

257257
rv := reflect.ValueOf(v)
258258
switch rv.Kind() {
259-
case reflect.Ptr:
259+
case reflect.Pointer:
260260
// indirect pointers
261261
if rv.IsNil() {
262262
return nil, nil

src/encoding/asn1/asn1.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -1101,7 +1101,7 @@ func (e *invalidUnmarshalError) Error() string {
11011101
return "asn1: Unmarshal recipient value is nil"
11021102
}
11031103

1104-
if e.Type.Kind() != reflect.Ptr {
1104+
if e.Type.Kind() != reflect.Pointer {
11051105
return "asn1: Unmarshal recipient value is non-pointer " + e.Type.String()
11061106
}
11071107
return "asn1: Unmarshal recipient value is nil " + e.Type.String()
@@ -1111,7 +1111,7 @@ func (e *invalidUnmarshalError) Error() string {
11111111
// top-level element. The form of the params is the same as the field tags.
11121112
func UnmarshalWithParams(b []byte, val interface{}, params string) (rest []byte, err error) {
11131113
v := reflect.ValueOf(val)
1114-
if v.Kind() != reflect.Ptr || v.IsNil() {
1114+
if v.Kind() != reflect.Pointer || v.IsNil() {
11151115
return nil, &invalidUnmarshalError{reflect.TypeOf(val)}
11161116
}
11171117
offset, err := parseField(v.Elem(), b, 0, parseFieldParameters(params))

src/encoding/binary/binary.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ func Read(r io.Reader, order ByteOrder, data interface{}) error {
243243
v := reflect.ValueOf(data)
244244
size := -1
245245
switch v.Kind() {
246-
case reflect.Ptr:
246+
case reflect.Pointer:
247247
v = v.Elem()
248248
size = dataSize(v)
249249
case reflect.Slice:

src/encoding/gob/decode.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ func ignoreTwoUints(i *decInstr, state *decoderState, v reflect.Value) {
228228
// The callers to the individual decoders are expected to have used decAlloc.
229229
// The individual decoders don't need to it.
230230
func decAlloc(v reflect.Value) reflect.Value {
231-
for v.Kind() == reflect.Ptr {
231+
for v.Kind() == reflect.Pointer {
232232
if v.IsNil() {
233233
v.Set(reflect.New(v.Type().Elem()))
234234
}
@@ -464,7 +464,7 @@ func (dec *Decoder) decodeStruct(engine *decEngine, value reflect.Value) {
464464
if instr.index != nil {
465465
// Otherwise the field is unknown to us and instr.op is an ignore op.
466466
field = value.FieldByIndex(instr.index)
467-
if field.Kind() == reflect.Ptr {
467+
if field.Kind() == reflect.Pointer {
468468
field = decAlloc(field)
469469
}
470470
}
@@ -518,7 +518,7 @@ func (dec *Decoder) decodeArrayHelper(state *decoderState, value reflect.Value,
518518
return
519519
}
520520
instr := &decInstr{elemOp, 0, nil, ovfl}
521-
isPtr := value.Type().Elem().Kind() == reflect.Ptr
521+
isPtr := value.Type().Elem().Kind() == reflect.Pointer
522522
for i := 0; i < length; i++ {
523523
if state.b.Len() == 0 {
524524
errorf("decoding array or slice: length exceeds input size (%d elements)", length)
@@ -561,8 +561,8 @@ func (dec *Decoder) decodeMap(mtyp reflect.Type, state *decoderState, value refl
561561
if value.IsNil() {
562562
value.Set(reflect.MakeMapWithSize(mtyp, n))
563563
}
564-
keyIsPtr := mtyp.Key().Kind() == reflect.Ptr
565-
elemIsPtr := mtyp.Elem().Kind() == reflect.Ptr
564+
keyIsPtr := mtyp.Key().Kind() == reflect.Pointer
565+
elemIsPtr := mtyp.Elem().Kind() == reflect.Pointer
566566
keyInstr := &decInstr{keyOp, 0, nil, ovfl}
567567
elemInstr := &decInstr{elemOp, 0, nil, ovfl}
568568
keyP := reflect.New(mtyp.Key())
@@ -945,7 +945,7 @@ func (dec *Decoder) decIgnoreOpFor(wireId typeId, inProgress map[typeId]*decOp)
945945
func (dec *Decoder) gobDecodeOpFor(ut *userTypeInfo) *decOp {
946946
rcvrType := ut.user
947947
if ut.decIndir == -1 {
948-
rcvrType = reflect.PtrTo(rcvrType)
948+
rcvrType = reflect.PointerTo(rcvrType)
949949
} else if ut.decIndir > 0 {
950950
for i := int8(0); i < ut.decIndir; i++ {
951951
rcvrType = rcvrType.Elem()
@@ -954,7 +954,7 @@ func (dec *Decoder) gobDecodeOpFor(ut *userTypeInfo) *decOp {
954954
var op decOp
955955
op = func(i *decInstr, state *decoderState, value reflect.Value) {
956956
// We now have the base type. We need its address if the receiver is a pointer.
957-
if value.Kind() != reflect.Ptr && rcvrType.Kind() == reflect.Ptr {
957+
if value.Kind() != reflect.Pointer && rcvrType.Kind() == reflect.Pointer {
958958
value = value.Addr()
959959
}
960960
state.dec.decodeGobDecoder(ut, state, value)

src/encoding/gob/decoder.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ func (dec *Decoder) Decode(e interface{}) error {
193193
value := reflect.ValueOf(e)
194194
// If e represents a value as opposed to a pointer, the answer won't
195195
// get back to the caller. Make sure it's a pointer.
196-
if value.Type().Kind() != reflect.Ptr {
196+
if value.Type().Kind() != reflect.Pointer {
197197
dec.err = errors.New("gob: attempt to decode into a non-pointer")
198198
return dec.err
199199
}
@@ -208,7 +208,7 @@ func (dec *Decoder) Decode(e interface{}) error {
208208
// does not modify v.
209209
func (dec *Decoder) DecodeValue(v reflect.Value) error {
210210
if v.IsValid() {
211-
if v.Kind() == reflect.Ptr && !v.IsNil() {
211+
if v.Kind() == reflect.Pointer && !v.IsNil() {
212212
// That's okay, we'll store through the pointer.
213213
} else if !v.CanSet() {
214214
return errors.New("gob: DecodeValue of unassignable value")

src/encoding/gob/encode.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ func valid(v reflect.Value) bool {
279279
switch v.Kind() {
280280
case reflect.Invalid:
281281
return false
282-
case reflect.Ptr:
282+
case reflect.Pointer:
283283
return !v.IsNil()
284284
}
285285
return true
@@ -386,7 +386,7 @@ func (enc *Encoder) encodeInterface(b *encBuffer, iv reflect.Value) {
386386
// Gobs can encode nil interface values but not typed interface
387387
// values holding nil pointers, since nil pointers point to no value.
388388
elem := iv.Elem()
389-
if elem.Kind() == reflect.Ptr && elem.IsNil() {
389+
if elem.Kind() == reflect.Pointer && elem.IsNil() {
390390
errorf("gob: cannot encode nil pointer of type %s inside interface", iv.Elem().Type())
391391
}
392392
state := enc.newEncoderState(b)
@@ -446,7 +446,7 @@ func isZero(val reflect.Value) bool {
446446
return !val.Bool()
447447
case reflect.Complex64, reflect.Complex128:
448448
return val.Complex() == 0
449-
case reflect.Chan, reflect.Func, reflect.Interface, reflect.Ptr:
449+
case reflect.Chan, reflect.Func, reflect.Interface, reflect.Pointer:
450450
return val.IsNil()
451451
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
452452
return val.Int() == 0
@@ -600,7 +600,7 @@ func encOpFor(rt reflect.Type, inProgress map[reflect.Type]*encOp, building map[
600600
func gobEncodeOpFor(ut *userTypeInfo) (*encOp, int) {
601601
rt := ut.user
602602
if ut.encIndir == -1 {
603-
rt = reflect.PtrTo(rt)
603+
rt = reflect.PointerTo(rt)
604604
} else if ut.encIndir > 0 {
605605
for i := int8(0); i < ut.encIndir; i++ {
606606
rt = rt.Elem()

src/encoding/gob/encoder.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ func (enc *Encoder) EncodeValue(value reflect.Value) error {
219219
if value.Kind() == reflect.Invalid {
220220
return errors.New("gob: cannot encode nil value")
221221
}
222-
if value.Kind() == reflect.Ptr && value.IsNil() {
222+
if value.Kind() == reflect.Pointer && value.IsNil() {
223223
panic("gob: cannot encode nil pointer of type " + value.Type().String())
224224
}
225225

src/encoding/gob/type.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func validUserType(rt reflect.Type) (*userTypeInfo, error) {
6161
slowpoke := ut.base // walks half as fast as ut.base
6262
for {
6363
pt := ut.base
64-
if pt.Kind() != reflect.Ptr {
64+
if pt.Kind() != reflect.Pointer {
6565
break
6666
}
6767
ut.base = pt.Elem()
@@ -126,7 +126,7 @@ func implementsInterface(typ, gobEncDecType reflect.Type) (success bool, indir i
126126
if rt.Implements(gobEncDecType) {
127127
return true, indir
128128
}
129-
if p := rt; p.Kind() == reflect.Ptr {
129+
if p := rt; p.Kind() == reflect.Pointer {
130130
indir++
131131
if indir > 100 { // insane number of indirections
132132
return false, 0
@@ -137,9 +137,9 @@ func implementsInterface(typ, gobEncDecType reflect.Type) (success bool, indir i
137137
break
138138
}
139139
// No luck yet, but if this is a base type (non-pointer), the pointer might satisfy.
140-
if typ.Kind() != reflect.Ptr {
140+
if typ.Kind() != reflect.Pointer {
141141
// Not a pointer, but does the pointer work?
142-
if reflect.PtrTo(typ).Implements(gobEncDecType) {
142+
if reflect.PointerTo(typ).Implements(gobEncDecType) {
143143
return true, -1
144144
}
145145
}
@@ -569,7 +569,7 @@ func isSent(field *reflect.StructField) bool {
569569
// If the field is a chan or func or pointer thereto, don't send it.
570570
// That is, treat it like an unexported field.
571571
typ := field.Type
572-
for typ.Kind() == reflect.Ptr {
572+
for typ.Kind() == reflect.Pointer {
573573
typ = typ.Elem()
574574
}
575575
if typ.Kind() == reflect.Chan || typ.Kind() == reflect.Func {
@@ -842,7 +842,7 @@ func Register(value interface{}) {
842842
// Dereference one pointer looking for a named type.
843843
star := ""
844844
if rt.Name() == "" {
845-
if pt := rt; pt.Kind() == reflect.Ptr {
845+
if pt := rt; pt.Kind() == reflect.Pointer {
846846
star = "*"
847847
// NOTE: The following line should be rt = pt.Elem() to implement
848848
// what the comment above claims, but fixing it would break compatibility

src/encoding/gob/type_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ func TestRegistrationNaming(t *testing.T) {
184184
t.Errorf("nameToConcreteType[%q] = %v, want %v", tc.name, ct, tct)
185185
}
186186
// concreteTypeToName is keyed off the base type.
187-
if tct.Kind() == reflect.Ptr {
187+
if tct.Kind() == reflect.Pointer {
188188
tct = tct.Elem()
189189
}
190190
if n, _ := concreteTypeToName.Load(tct); n != tc.name {

src/encoding/json/decode.go

+9-9
Original file line numberDiff line numberDiff line change
@@ -161,15 +161,15 @@ func (e *InvalidUnmarshalError) Error() string {
161161
return "json: Unmarshal(nil)"
162162
}
163163

164-
if e.Type.Kind() != reflect.Ptr {
164+
if e.Type.Kind() != reflect.Pointer {
165165
return "json: Unmarshal(non-pointer " + e.Type.String() + ")"
166166
}
167167
return "json: Unmarshal(nil " + e.Type.String() + ")"
168168
}
169169

170170
func (d *decodeState) unmarshal(v interface{}) error {
171171
rv := reflect.ValueOf(v)
172-
if rv.Kind() != reflect.Ptr || rv.IsNil() {
172+
if rv.Kind() != reflect.Pointer || rv.IsNil() {
173173
return &InvalidUnmarshalError{reflect.TypeOf(v)}
174174
}
175175

@@ -440,7 +440,7 @@ func indirect(v reflect.Value, decodingNull bool) (Unmarshaler, encoding.TextUnm
440440
// If v is a named type and is addressable,
441441
// start with its address, so that if the type has pointer methods,
442442
// we find them.
443-
if v.Kind() != reflect.Ptr && v.Type().Name() != "" && v.CanAddr() {
443+
if v.Kind() != reflect.Pointer && v.Type().Name() != "" && v.CanAddr() {
444444
haveAddr = true
445445
v = v.Addr()
446446
}
@@ -449,14 +449,14 @@ func indirect(v reflect.Value, decodingNull bool) (Unmarshaler, encoding.TextUnm
449449
// usefully addressable.
450450
if v.Kind() == reflect.Interface && !v.IsNil() {
451451
e := v.Elem()
452-
if e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) {
452+
if e.Kind() == reflect.Pointer && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Pointer) {
453453
haveAddr = false
454454
v = e
455455
continue
456456
}
457457
}
458458

459-
if v.Kind() != reflect.Ptr {
459+
if v.Kind() != reflect.Pointer {
460460
break
461461
}
462462

@@ -641,7 +641,7 @@ func (d *decodeState) object(v reflect.Value) error {
641641
reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
642642
reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
643643
default:
644-
if !reflect.PtrTo(t.Key()).Implements(textUnmarshalerType) {
644+
if !reflect.PointerTo(t.Key()).Implements(textUnmarshalerType) {
645645
d.saveError(&UnmarshalTypeError{Value: "object", Type: t, Offset: int64(d.off)})
646646
d.skip()
647647
return nil
@@ -717,7 +717,7 @@ func (d *decodeState) object(v reflect.Value) error {
717717
subv = v
718718
destring = f.quoted
719719
for _, i := range f.index {
720-
if subv.Kind() == reflect.Ptr {
720+
if subv.Kind() == reflect.Pointer {
721721
if subv.IsNil() {
722722
// If a struct embeds a pointer to an unexported type,
723723
// it is not possible to set a newly allocated value
@@ -782,7 +782,7 @@ func (d *decodeState) object(v reflect.Value) error {
782782
kt := t.Key()
783783
var kv reflect.Value
784784
switch {
785-
case reflect.PtrTo(kt).Implements(textUnmarshalerType):
785+
case reflect.PointerTo(kt).Implements(textUnmarshalerType):
786786
kv = reflect.New(kt)
787787
if err := d.literalStore(item, kv, true); err != nil {
788788
return err
@@ -907,7 +907,7 @@ func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool
907907
break
908908
}
909909
switch v.Kind() {
910-
case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice:
910+
case reflect.Interface, reflect.Pointer, reflect.Map, reflect.Slice:
911911
v.Set(reflect.Zero(v.Type()))
912912
// otherwise, ignore null for primitives/string
913913
}

src/encoding/json/decode_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1103,7 +1103,7 @@ func TestUnmarshal(t *testing.T) {
11031103
}
11041104

11051105
typ := reflect.TypeOf(tt.ptr)
1106-
if typ.Kind() != reflect.Ptr {
1106+
if typ.Kind() != reflect.Pointer {
11071107
t.Errorf("#%d: unmarshalTest.ptr %T is not a pointer type", i, tt.ptr)
11081108
continue
11091109
}

0 commit comments

Comments
 (0)