mirror of
https://github.com/golang/go
synced 2024-11-17 00:04:40 -07:00
cmd/compile: use IsPtr instead of types.Tptr
Produced using gofmt -r. Change-Id: I4184940618a3a1dac563a9d20aafe1d9f705300c Reviewed-on: https://go-review.googlesource.com/c/76310 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
048de7b1fd
commit
02b444bc1d
@ -2436,7 +2436,7 @@ func isMethodApplicable(t *types.Type, m *types.Field) bool {
|
||||
}
|
||||
|
||||
func derefall(t *types.Type) *types.Type {
|
||||
for t != nil && t.Etype == types.Tptr {
|
||||
for t != nil && t.IsPtr() {
|
||||
t = t.Elem()
|
||||
}
|
||||
return t
|
||||
@ -2506,20 +2506,20 @@ func lookdot(n *Node, t *types.Type, dostrcmp int) *types.Field {
|
||||
dowidth(tt)
|
||||
rcvr := f2.Type.Recv().Type
|
||||
if !eqtype(rcvr, tt) {
|
||||
if rcvr.Etype == types.Tptr && eqtype(rcvr.Elem(), tt) {
|
||||
if rcvr.IsPtr() && eqtype(rcvr.Elem(), tt) {
|
||||
checklvalue(n.Left, "call pointer method on")
|
||||
n.Left = nod(OADDR, n.Left, nil)
|
||||
n.Left.SetImplicit(true)
|
||||
n.Left = typecheck(n.Left, Etype|Erv)
|
||||
} else if tt.Etype == types.Tptr && rcvr.Etype != types.Tptr && eqtype(tt.Elem(), rcvr) {
|
||||
} else if tt.IsPtr() && !rcvr.IsPtr() && eqtype(tt.Elem(), rcvr) {
|
||||
n.Left = nod(OIND, n.Left, nil)
|
||||
n.Left.SetImplicit(true)
|
||||
n.Left = typecheck(n.Left, Etype|Erv)
|
||||
} else if tt.Etype == types.Tptr && tt.Elem().Etype == types.Tptr && eqtype(derefall(tt), derefall(rcvr)) {
|
||||
} else if tt.IsPtr() && tt.Elem().IsPtr() && eqtype(derefall(tt), derefall(rcvr)) {
|
||||
yyerror("calling method %v with receiver %L requires explicit dereference", n.Sym, n.Left)
|
||||
for tt.Etype == types.Tptr {
|
||||
for tt.IsPtr() {
|
||||
// Stop one level early for method with pointer receiver.
|
||||
if rcvr.Etype == types.Tptr && tt.Elem().Etype != types.Tptr {
|
||||
if rcvr.IsPtr() && !tt.Elem().IsPtr() {
|
||||
break
|
||||
}
|
||||
n.Left = nod(OIND, n.Left, nil)
|
||||
|
Loading…
Reference in New Issue
Block a user