cmd/compile: simplify Iter
Passes toolstash -cmp.
Change-Id: I325b02dcc8412ded0dc304d43377c0bdf59c66a8
Reviewed-on: https://go-review.googlesource.com/20405
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/src/cmd/compile/internal/gc/walk.go b/src/cmd/compile/internal/gc/walk.go
index 81f2e7e..56de81f 100644
--- a/src/cmd/compile/internal/gc/walk.go
+++ b/src/cmd/compile/internal/gc/walk.go
@@ -1706,12 +1706,11 @@
var l *Node
var tmp *Node
var a *Node
- var saver Iter
// check assign type list to
// a expression list. called in
// expr-list = func()
- r := Structfirst(&saver, nr)
+ r, saver := IterFields(*nr)
var nn []*Node
var mm []*Node
@@ -1723,7 +1722,7 @@
}
l = it.N()
if isblank(l) {
- r = structnext(&saver)
+ r = saver.Next()
continue
}
@@ -1748,7 +1747,7 @@
}
nn = append(nn, a)
- r = structnext(&saver)
+ r = saver.Next()
}
if !it.Done() || r != nil {
@@ -1797,12 +1796,10 @@
// helpers for shape errors
func dumptypes(nl **Type, what string) string {
- var savel Iter
-
fmt_ := ""
fmt_ += "\t"
first := 1
- for l := Structfirst(&savel, nl); l != nil; l = structnext(&savel) {
+ for l, it := IterFields(*nl); l != nil; l = it.Next() {
if first != 0 {
first = 0
} else {
@@ -1844,10 +1841,8 @@
// return expr-list
// func(expr-list)
func ascompatte(op Op, call *Node, isddd bool, nl **Type, lr []*Node, fp int, init *Nodes) []*Node {
- var savel Iter
-
lr0 := lr
- l := Structfirst(&savel, nl)
+ l, savel := IterFields(*nl)
var r *Node
if nodeSeqLen(lr) > 0 {
r = nodeSeqFirst(lr)
@@ -1873,7 +1868,7 @@
// copy into temporaries.
var alist []*Node
- for l := Structfirst(&savel, &r.Type); l != nil; l = structnext(&savel) {
+ for l, it := IterFields(r.Type); l != nil; l = it.Next() {
a = temp(l.Type)
alist = append(alist, a)
}
@@ -1886,13 +1881,13 @@
init.Append(a)
lr = alist
r = nodeSeqFirst(lr)
- l = Structfirst(&savel, nl)
+ l, savel = IterFields(*nl)
}
loop:
if l != nil && l.Isddd {
// the ddd parameter must be last
- ll = structnext(&savel)
+ ll = savel.Next()
if ll != nil {
Yyerror("... must be last argument")
@@ -1935,7 +1930,7 @@
a = convas(a, init)
nn = append(nn, a)
- l = structnext(&savel)
+ l = savel.Next()
r = nil
lr = lr[1:]
if len(lr) > 0 {
@@ -2036,7 +2031,7 @@
continue
}
- t = *getinarg(on.Type)
+ t = getinargx(on.Type)
if t != nil {
t = t.Type
}
@@ -2590,12 +2585,11 @@
// generate and return code to allocate
// copies of escaped parameters to the heap.
func paramstoheap(argin **Type, out int) []*Node {
- var savet Iter
var v *Node
var as *Node
var nn []*Node
- for t := Structfirst(&savet, argin); t != nil; t = structnext(&savet) {
+ for t, it := IterFields(*argin); t != nil; t = it.Next() {
v = t.Nname
if v != nil && v.Sym != nil && v.Sym.Name[0] == '~' && v.Sym.Name[1] == 'r' { // unnamed result
v = nil
@@ -2636,11 +2630,10 @@
// walk through argout parameters copying back to stack
func returnsfromheap(argin **Type) []*Node {
- var savet Iter
var v *Node
var nn []*Node
- for t := Structfirst(&savet, argin); t != nil; t = structnext(&savet) {
+ for t, it := IterFields(*argin); t != nil; t = it.Next() {
v = t.Nname
if v == nil || v.Class != PHEAP|PPARAMOUT {
continue