cmd/compile: get rid of ugly {Recvs,Params,Results}P methods

These were a hack abstraction for before FuncType existed.

The result value from calling FuncType() could be saved, but this
maintains the current idiom of consistently using t.FuncType().foo
everywhere in case we choose to evolve the API further.

Change-Id: I81f19aaeab6fb7caa2d4da8bf0bbbc358ab970d0
Reviewed-on: https://go-review.googlesource.com/28150
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
This commit is contained in:
Matthew Dempsky 2016-08-30 11:15:38 -07:00
parent 7722d0f903
commit 74a00b249b
3 changed files with 12 additions and 27 deletions

View File

@ -1034,9 +1034,9 @@ func functype0(t *Type, this *Node, in, out []*Node) {
if this != nil {
rcvr = []*Node{this}
}
*t.RecvsP() = tofunargs(rcvr, FunargRcvr)
*t.ResultsP() = tofunargs(out, FunargResults)
*t.ParamsP() = tofunargs(in, FunargParams)
t.FuncType().Receiver = tofunargs(rcvr, FunargRcvr)
t.FuncType().Results = tofunargs(out, FunargResults)
t.FuncType().Params = tofunargs(in, FunargParams)
checkdupfields("argument", t.Recvs(), t.Results(), t.Params())

View File

@ -569,9 +569,9 @@ func substAny(t *Type, types *[]*Type) *Type {
results = results.Copy()
}
t = t.Copy()
*t.RecvsP() = recvs
*t.ResultsP() = results
*t.ParamsP() = params
t.FuncType().Receiver = recvs
t.FuncType().Results = results
t.FuncType().Params = params
}
case TSTRUCT:
@ -676,24 +676,9 @@ func (t *Type) wantEtype(et EType) {
}
}
func (t *Type) RecvsP() **Type {
t.wantEtype(TFUNC)
return &t.Extra.(*FuncType).Receiver
}
func (t *Type) ParamsP() **Type {
t.wantEtype(TFUNC)
return &t.Extra.(*FuncType).Params
}
func (t *Type) ResultsP() **Type {
t.wantEtype(TFUNC)
return &t.Extra.(*FuncType).Results
}
func (t *Type) Recvs() *Type { return *t.RecvsP() }
func (t *Type) Params() *Type { return *t.ParamsP() }
func (t *Type) Results() *Type { return *t.ResultsP() }
func (t *Type) Recvs() *Type { return t.FuncType().Receiver }
func (t *Type) Params() *Type { return t.FuncType().Params }
func (t *Type) Results() *Type { return t.FuncType().Results }
// Recv returns the receiver of function type t, if any.
func (t *Type) Recv() *Field {

View File

@ -375,9 +375,9 @@ func makeErrorInterface() *Type {
out.SetFields([]*Field{field})
f := typ(TFUNC)
*f.RecvsP() = rcvr
*f.ResultsP() = out
*f.ParamsP() = in
f.FuncType().Receiver = rcvr
f.FuncType().Results = out
f.FuncType().Params = in
t := typ(TINTER)
field = newField()