mirror of
https://github.com/golang/go
synced 2024-11-23 04:50:06 -07:00
cmd/compile: small cleanups for structargs
Suggested by Dave Cheney in golang.org/cl/20405. Change-Id: I581c11ae80034cb6ebef3de976e8ae9484472322 Reviewed-on: https://go-review.googlesource.com/20453 Reviewed-by: Dave Cheney <dave@cheney.net> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
38921b36ba
commit
4db3dde522
@ -1877,25 +1877,20 @@ func expandmeth(t *Type) {
|
||||
}
|
||||
|
||||
// Given funarg struct list, return list of ODCLFIELD Node fn args.
|
||||
func structargs(tl **Type, mustname int) []*Node {
|
||||
var a *Node
|
||||
var n *Node
|
||||
var buf string
|
||||
|
||||
func structargs(tl *Type, mustname bool) []*Node {
|
||||
var args []*Node
|
||||
gen := 0
|
||||
for t, it := IterFields(*tl); t != nil; t = it.Next() {
|
||||
n = nil
|
||||
if mustname != 0 && (t.Sym == nil || t.Sym.Name == "_") {
|
||||
for t, it := IterFields(tl); t != nil; t = it.Next() {
|
||||
var n *Node
|
||||
if mustname && (t.Sym == nil || t.Sym.Name == "_") {
|
||||
// invent a name so that we can refer to it in the trampoline
|
||||
buf = fmt.Sprintf(".anon%d", gen)
|
||||
buf := fmt.Sprintf(".anon%d", gen)
|
||||
gen++
|
||||
|
||||
n = newname(Lookup(buf))
|
||||
} else if t.Sym != nil {
|
||||
n = newname(t.Sym)
|
||||
}
|
||||
a = Nod(ODCLFIELD, n, typenod(t.Type))
|
||||
a := Nod(ODCLFIELD, n, typenod(t.Type))
|
||||
a.Isddd = t.Isddd
|
||||
if n != nil {
|
||||
n.Isddd = t.Isddd
|
||||
@ -1949,8 +1944,8 @@ func genwrapper(rcvr *Type, method *Type, newnam *Sym, iface int) {
|
||||
|
||||
this := Nod(ODCLFIELD, newname(Lookup(".this")), typenod(rcvr))
|
||||
this.Left.Name.Param.Ntype = this.Right
|
||||
in := structargs(method.Type.ParamsP(), 1)
|
||||
out := structargs(method.Type.ResultsP(), 0)
|
||||
in := structargs(method.Type.Params(), true)
|
||||
out := structargs(method.Type.Results(), false)
|
||||
|
||||
t := Nod(OTFUNC, nil, nil)
|
||||
l := []*Node{this}
|
||||
|
Loading…
Reference in New Issue
Block a user