Commit f91b832a authored by Matthew Dempsky's avatar Matthew Dempsky

cmd/compile: rename Recv->Recvs and Recv0->Recv

Change-Id: Ice3aa807169f4fec85745a3991b1084a9f85c1b5
Reviewed-on: https://go-review.googlesource.com/20499
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
parent 0cff5058
......@@ -295,7 +295,7 @@ func dowidth(t *Type) {
case TFUNCARGS:
t1 := t.Type
w = widstruct(t.Type, t1.Recv(), 0, 0)
w = widstruct(t.Type, t1.Recvs(), 0, 0)
w = widstruct(t.Type, t1.Params(), w, Widthreg)
w = widstruct(t.Type, t1.Results(), w, Widthreg)
t1.Argwid = w
......@@ -618,7 +618,7 @@ func typeinit() {
func Argsize(t *Type) int {
var w int64
for _, p := range recvParamsResults {
for _, p := range recvsParamsResults {
for f, it := IterFields(p(t)); f != nil; f = it.Next() {
if x := f.Width + f.Type.Width; x > w {
w = x
......
......@@ -477,7 +477,7 @@ func (p *exporter) typ(t *Type) {
for _, m := range methods {
p.string(m.Sym.Name)
p.paramList(m.Type.Recv())
p.paramList(m.Type.Recvs())
p.paramList(m.Type.Params())
p.paramList(m.Type.Results())
p.inlinedBody(m.Type.Nname)
......
......@@ -661,7 +661,7 @@ func funcargs2(t *Type) {
}
if t.Thistuple != 0 {
for ft, it := IterFields(t.Recv()); ft != nil; ft = it.Next() {
for ft, it := IterFields(t.Recvs()); ft != nil; ft = it.Next() {
if ft.Nname == nil || ft.Nname.Sym == nil {
continue
}
......@@ -1134,7 +1134,7 @@ func fakethis() *Node {
// Those methods have an anonymous *struct{} as the receiver.
// (See fakethis above.)
func isifacemethod(f *Type) bool {
rcvr := f.Recv0()
rcvr := f.Recv()
if rcvr.Sym != nil {
return false
}
......@@ -1165,16 +1165,16 @@ func functype0(t *Type, this *Node, in, out []*Node) {
if this != nil {
rcvr = []*Node{this}
}
*t.RecvP() = tofunargs(rcvr)
*t.RecvsP() = tofunargs(rcvr)
*t.ResultsP() = tofunargs(out)
*t.ParamsP() = tofunargs(in)
uniqgen++
checkdupfields(t.Recv().Type, "argument")
checkdupfields(t.Recvs().Type, "argument")
checkdupfields(t.Results().Type, "argument")
checkdupfields(t.Params().Type, "argument")
if t.Recv().Broke || t.Results().Broke || t.Params().Broke {
if t.Recvs().Broke || t.Results().Broke || t.Params().Broke {
t.Broke = true
}
......@@ -1306,7 +1306,7 @@ func addmethod(sf *Sym, t *Type, local bool, nointerface bool) {
}
// get parent type sym
pa := t.Recv0() // ptr to this structure
pa := t.Recv() // ptr to this structure
if pa == nil {
Yyerror("missing receiver")
return
......
......@@ -1384,7 +1384,7 @@ func esccall(e *EscState, n *Node, up *Node) {
initEscretval(e, n, fntype)
// If there is a receiver, it also leaks to heap.
if n.Op != OCALLFUNC {
t := fntype.Recv0()
t := fntype.Recv()
src := n.Left.Left
if haspointers(t.Type) {
escassign(e, &e.theSink, src)
......@@ -1468,7 +1468,7 @@ func esccall(e *EscState, n *Node, up *Node) {
// Receiver.
if n.Op != OCALLFUNC {
t := fntype.Recv0()
t := fntype.Recv()
src := n.Left.Left
if haspointers(t.Type) {
escassignfromtag(e, t.Note, nE.Escretval, src)
......
......@@ -314,10 +314,10 @@ func dumpexporttype(t *Type) {
if Debug['l'] < 2 {
typecheckinl(f.Type.Nname)
}
exportf("\tfunc (%v) %v %v { %v }\n", Tconv(f.Type.Recv0(), obj.FmtSharp), Sconv(f.Sym, obj.FmtShort|obj.FmtByte|obj.FmtSharp), Tconv(f.Type, obj.FmtShort|obj.FmtSharp), Hconv(f.Type.Nname.Func.Inl, obj.FmtSharp))
exportf("\tfunc (%v) %v %v { %v }\n", Tconv(f.Type.Recv(), obj.FmtSharp), Sconv(f.Sym, obj.FmtShort|obj.FmtByte|obj.FmtSharp), Tconv(f.Type, obj.FmtShort|obj.FmtSharp), Hconv(f.Type.Nname.Func.Inl, obj.FmtSharp))
reexportdeplist(f.Type.Nname.Func.Inl)
} else {
exportf("\tfunc (%v) %v %v\n", Tconv(f.Type.Recv0(), obj.FmtSharp), Sconv(f.Sym, obj.FmtShort|obj.FmtByte|obj.FmtSharp), Tconv(f.Type, obj.FmtShort|obj.FmtSharp))
exportf("\tfunc (%v) %v %v\n", Tconv(f.Type.Recv(), obj.FmtSharp), Sconv(f.Sym, obj.FmtShort|obj.FmtByte|obj.FmtSharp), Tconv(f.Type, obj.FmtShort|obj.FmtSharp))
}
}
}
......
......@@ -615,7 +615,7 @@ func typefmt(t *Type, flag int) string {
} else {
if t.Thistuple != 0 {
buf.WriteString("method")
buf.WriteString(Tconv(t.Recv(), 0))
buf.WriteString(Tconv(t.Recvs(), 0))
buf.WriteString(" ")
}
buf.WriteString("func")
......
......@@ -48,7 +48,7 @@ var inlretvars *NodeList // temp out variables
func fnpkg(fn *Node) *Pkg {
if fn.Type.Thistuple != 0 {
// method
rcvr := fn.Type.Recv0().Type
rcvr := fn.Type.Recv().Type
if Isptr[rcvr.Etype] {
rcvr = rcvr.Type
......@@ -614,7 +614,7 @@ func mkinlcall1(np **Node, fn *Node, isddd bool) {
var as *Node
if fn.Type.Thistuple != 0 && n.Left.Op == ODOTMETH {
// method call with a receiver.
t := fn.Type.Recv0()
t := fn.Type.Recv()
if t != nil && t.Nname != nil && !isblank(t.Nname) && t.Nname.Name.Inlvar == nil {
Fatalf("missing inlvar for %v\n", t.Nname)
......@@ -683,7 +683,7 @@ func mkinlcall1(np **Node, fn *Node, isddd bool) {
}
// append receiver inlvar to LHS.
t := fn.Type.Recv0()
t := fn.Type.Recv()
if t != nil && t.Nname != nil && !isblank(t.Nname) && t.Nname.Name.Inlvar == nil {
Fatalf("missing inlvar for %v\n", t.Nname)
......
......@@ -2193,7 +2193,7 @@ func lexinit1() {
out.Type.Type = Types[TSTRING]
out.Funarg = true
f := typ(TFUNC)
*f.RecvP() = rcvr
*f.RecvsP() = rcvr
*f.ResultsP() = out
*f.ParamsP() = in
f.Thistuple = 1
......
......@@ -155,7 +155,7 @@ func emitptrargsmap() {
var xoffset int64
if Curfn.Type.Thistuple > 0 {
xoffset = 0
onebitwalktype1(Curfn.Type.Recv(), &xoffset, bv)
onebitwalktype1(Curfn.Type.Recvs(), &xoffset, bv)
}
if Curfn.Type.Intuple > 0 {
......
......@@ -1003,7 +1003,7 @@ func onebitlivepointermap(lv *Liveness, liveout Bvec, vars []*Node, args Bvec, l
// If the receiver or arguments are unnamed, they will be omitted
// from the list above. Preserve those values - even though they are unused -
// in order to keep their addresses live for use in stack traces.
thisargtype := lv.fn.Type.Recv()
thisargtype := lv.fn.Type.Recvs()
if thisargtype != nil {
xoffset = 0
......
......@@ -306,7 +306,7 @@ func methods(t *Type) []*Sig {
if f.Type.Etype != TFUNC || f.Type.Thistuple == 0 {
Fatalf("non-method on %v method %v %v\n", mt, f.Sym, f)
}
if f.Type.Recv0() == nil {
if f.Type.Recv() == nil {
Fatalf("receiver with no type on %v method %v %v\n", mt, f.Sym, f)
}
if f.Nointerface {
......@@ -322,7 +322,7 @@ func methods(t *Type) []*Sig {
// if pointer receiver but non-pointer t and
// this is not an embedded pointer inside a struct,
// method does not apply.
this := f.Type.Recv0().Type
this := f.Type.Recv().Type
if Isptr[this.Etype] && this.Type == t {
continue
......@@ -1061,7 +1061,7 @@ ok:
ot = dextratype(s, ot, t, 0)
case TFUNC:
for t1, it := IterFields(t.Recv()); t1 != nil; t1 = it.Next() {
for t1, it := IterFields(t.Recvs()); t1 != nil; t1 = it.Next() {
dtypesym(t1.Type)
}
isddd := false
......@@ -1089,7 +1089,7 @@ ok:
ot = dextratype(s, ot, t, dataAdd)
// Array of rtype pointers follows funcType.
for t1, it := IterFields(t.Recv()); t1 != nil; t1 = it.Next() {
for t1, it := IterFields(t.Recvs()); t1 != nil; t1 = it.Next() {
ot = dsymptr(s, ot, dtypesym(t1.Type), 0)
}
for t1, it := IterFields(t.Params()); t1 != nil; t1 = it.Next() {
......
......@@ -758,7 +758,7 @@ func eqtype1(t1, t2 *Type, assumedEqual map[typePair]struct{}) bool {
// Loop over structs: receiver, in, out.
case TFUNC:
for _, f := range recvParamsResults {
for _, f := range recvsParamsResults {
// Loop over fields in structs, ignoring argument names.
ta, ia := IterFields(f(t1))
tb, ib := IterFields(f(t2))
......@@ -1131,7 +1131,7 @@ func substAny(tp **Type, types *[]*Type) {
continue
case TFUNC:
substAny(t.RecvP(), types)
substAny(t.RecvsP(), types)
substAny(t.ParamsP(), types)
substAny(t.ResultsP(), types)
......@@ -1210,7 +1210,7 @@ func deep(t *Type) *Type {
case TFUNC:
nt = t.Copy()
*nt.RecvP() = deep(t.Recv())
*nt.RecvsP() = deep(t.Recvs())
*nt.ResultsP() = deep(t.Results())
*nt.ParamsP() = deep(t.Params())
......@@ -1959,7 +1959,7 @@ func genwrapper(rcvr *Type, method *Type, newnam *Sym, iface int) {
isddd = n.Left.Isddd
}
methodrcvr := method.Type.Recv0().Type
methodrcvr := method.Type.Recv().Type
// generate nil pointer check for better error
if Isptr[rcvr.Etype] && rcvr.Type == methodrcvr {
......@@ -2148,7 +2148,7 @@ func implements(t *Type, iface *Type, m **Type, samename **Type, ptr *int) bool
// if pointer receiver in method,
// the method does not exist for value types.
rcvr = tm.Type.Recv0().Type
rcvr = tm.Type.Recv().Type
if Isptr[rcvr.Etype] && !Isptr[t0.Etype] && !followptr && !isifacemethod(tm.Type) {
if false && Debug['r'] != 0 {
......
......@@ -224,7 +224,7 @@ func (t *Type) wantEtype(et EType) {
}
}
func (t *Type) RecvP() **Type {
func (t *Type) RecvsP() **Type {
t.wantEtype(TFUNC)
return &t.Type
}
......@@ -239,18 +239,17 @@ func (t *Type) ResultsP() **Type {
return &t.Type.Down
}
func (t *Type) Recv() *Type { return *t.RecvP() }
func (t *Type) Recvs() *Type { return *t.RecvsP() }
func (t *Type) Params() *Type { return *t.ParamsP() }
func (t *Type) Results() *Type { return *t.ResultsP() }
// TODO(mdempsky): Rename Recv to Recvs, so Recv0 can become just Recv.
func (t *Type) Recv0() *Type { return t.Recv().Field(0) }
func (t *Type) Recv() *Type { return t.Recvs().Field(0) }
// recvParamsResults stores the accessor functions for a function Type's
// recvsParamsResults stores the accessor functions for a function Type's
// receiver, parameters, and result parameters, in that order.
// It can be used to iterate over all of a function's parameter lists.
var recvParamsResults = [3]func(*Type) *Type{
(*Type).Recv, (*Type).Params, (*Type).Results,
var recvsParamsResults = [3]func(*Type) *Type{
(*Type).Recvs, (*Type).Params, (*Type).Results,
}
// Field returns the i'th field/method of struct/interface type t.
......@@ -463,7 +462,7 @@ func (t *Type) cmp(x *Type) ssa.Cmp {
return ssa.CMPeq
case TFUNC:
for _, f := range recvParamsResults {
for _, f := range recvsParamsResults {
// Loop over fields in structs, ignoring argument names.
ta, ia := IterFields(f(t))
tb, ib := IterFields(f(x))
......
......@@ -1311,7 +1311,7 @@ OpSwitch:
// information further down the call chain to know if we
// were testing a method receiver for unexported fields.
// It isn't necessary, so just do a sanity check.
tp := t.Recv0().Type
tp := t.Recv().Type
if l.Left == nil || !Eqtype(l.Left.Type, tp) {
Fatalf("method receiver")
......@@ -2430,7 +2430,7 @@ func looktypedot(n *Node, t *Type, dostrcmp int) bool {
}
// disallow T.m if m requires *T receiver
if Isptr[f2.Type.Recv0().Type.Etype] && !Isptr[t.Etype] && f2.Embedded != 2 && !isifacemethod(f2.Type) {
if Isptr[f2.Type.Recv().Type.Etype] && !Isptr[t.Etype] && f2.Embedded != 2 && !isifacemethod(f2.Type) {
Yyerror("invalid method expression %v (needs pointer receiver: (*%v).%v)", n, t, Sconv(f2.Sym, obj.FmtShort))
return false
}
......@@ -2513,7 +2513,7 @@ func lookdot(n *Node, t *Type, dostrcmp int) *Type {
}
tt := n.Left.Type
dowidth(tt)
rcvr := f2.Type.Recv0().Type
rcvr := f2.Type.Recv().Type
if !Eqtype(rcvr, tt) {
if rcvr.Etype == Tptr && Eqtype(rcvr.Type, tt) {
checklvalue(n.Left, "call pointer method on")
......@@ -3436,7 +3436,7 @@ func typecheckfunc(n *Node) {
}
n.Type = t
t.Nname = n.Func.Nname
rcvr := t.Recv0()
rcvr := t.Recv()
if rcvr != nil && n.Func.Shortname != nil {
addmethod(n.Func.Shortname.Sym, t, true, n.Func.Nname.Nointerface)
}
......
......@@ -695,7 +695,7 @@ opswitch:
}
walkexpr(&n.Left, init)
walkexprlist(n.List.Slice(), init)
ll := ascompatte(n.Op, n, false, t.Recv(), []*Node{n.Left.Left}, 0, init)
ll := ascompatte(n.Op, n, false, t.Recvs(), []*Node{n.Left.Left}, 0, init)
lr := ascompatte(n.Op, n, n.Isddd, t.Params(), n.List.Slice(), 0, init)
ll = append(ll, lr...)
n.Left.Left = nil
......@@ -2623,7 +2623,7 @@ func returnsfromheap(params *Type) []*Node {
func heapmoves() {
lno := lineno
lineno = Curfn.Lineno
nn := paramstoheap(Curfn.Type.Recv(), false)
nn := paramstoheap(Curfn.Type.Recvs(), false)
nn = append(nn, paramstoheap(Curfn.Type.Params(), false)...)
nn = append(nn, paramstoheap(Curfn.Type.Results(), true)...)
Curfn.Func.Enter.Append(nn...)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment