mirror of
https://github.com/golang/go
synced 2024-11-22 03:14:41 -07:00
fmt: remove uintptrGetter type checks
This will make the fmt code easier to gofix when the new reflect interface is ready. R=r CC=golang-dev https://golang.org/cl/4324043
This commit is contained in:
parent
7a5bbfd47f
commit
b66b22cdd4
@ -520,12 +520,14 @@ func (p *pp) fmtBytes(v []byte, verb int, goSyntax bool, depth int, value interf
|
||||
}
|
||||
|
||||
func (p *pp) fmtPointer(field interface{}, value reflect.Value, verb int, goSyntax bool) {
|
||||
v, ok := value.(uintptrGetter)
|
||||
if !ok { // reflect.PtrValue is a uintptrGetter, so failure means it's not a pointer at all.
|
||||
var u uintptr
|
||||
switch value.(type) {
|
||||
case *reflect.ChanValue, *reflect.FuncValue, *reflect.MapValue, *reflect.PtrValue, *reflect.SliceValue, *reflect.UnsafePointerValue:
|
||||
u = value.(uintptrGetter).Get()
|
||||
default:
|
||||
p.badVerb(verb, field)
|
||||
return
|
||||
}
|
||||
u := v.Get()
|
||||
if goSyntax {
|
||||
p.add('(')
|
||||
p.buf.WriteString(reflect.Typeof(field).String())
|
||||
@ -534,7 +536,7 @@ func (p *pp) fmtPointer(field interface{}, value reflect.Value, verb int, goSynt
|
||||
if u == 0 {
|
||||
p.buf.Write(nilBytes)
|
||||
} else {
|
||||
p.fmt0x64(uint64(v.Get()), true)
|
||||
p.fmt0x64(uint64(u), true)
|
||||
}
|
||||
p.add(')')
|
||||
} else {
|
||||
@ -811,7 +813,7 @@ BigSwitch:
|
||||
break
|
||||
}
|
||||
p.fmt0x64(uint64(v), true)
|
||||
case uintptrGetter:
|
||||
case *reflect.ChanValue, *reflect.FuncValue, *reflect.UnsafePointerValue:
|
||||
p.fmtPointer(field, value, verb, goSyntax)
|
||||
default:
|
||||
p.unknownType(f)
|
||||
|
Loading…
Reference in New Issue
Block a user