From: Matthew Dempsky Date: Tue, 30 Aug 2016 18:15:38 +0000 (-0700) Subject: cmd/compile: get rid of ugly {Recvs,Params,Results}P methods X-Git-Tag: go1.8beta1~1565 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=74a00b249b049459b6f8b3c3999969f2beef3d31;p=gostls13.git 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 TryBot-Result: Gobot Gobot Reviewed-by: Josh Bleecher Snyder --- diff --git a/src/cmd/compile/internal/gc/dcl.go b/src/cmd/compile/internal/gc/dcl.go index 7c2d2a43cf..c487c237eb 100644 --- a/src/cmd/compile/internal/gc/dcl.go +++ b/src/cmd/compile/internal/gc/dcl.go @@ -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()) diff --git a/src/cmd/compile/internal/gc/type.go b/src/cmd/compile/internal/gc/type.go index 12cb3b5993..ac038f465d 100644 --- a/src/cmd/compile/internal/gc/type.go +++ b/src/cmd/compile/internal/gc/type.go @@ -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 { diff --git a/src/cmd/compile/internal/gc/universe.go b/src/cmd/compile/internal/gc/universe.go index 270d4c3770..1e5650ffc2 100644 --- a/src/cmd/compile/internal/gc/universe.go +++ b/src/cmd/compile/internal/gc/universe.go @@ -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()